[INFO] cloning repository https://github.com/fangs124/pp0
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fangs124/pp0" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffangs124%2Fpp0", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffangs124%2Fpp0'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 752357849b4f09ff6013a8d159d7ed8b7841f278
[INFO] checking fangs124/pp0 against master#642c19bfc3a5c1de985bf5d0cc8207ac9d22708a for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffangs124%2Fpp0" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/fangs124/pp0
[INFO] finished tweaking git repo https://github.com/fangs124/pp0
[INFO] tweaked toml for git repo https://github.com/fangs124/pp0 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/fangs124/pp0 on toolchain 642c19bfc3a5c1de985bf5d0cc8207ac9d22708a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/fangs124/pp0 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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded simba v0.9.1
[INFO] [stderr]   Downloaded numtoa v0.2.4
[INFO] [stderr]   Downloaded mimalloc v0.1.48
[INFO] [stderr]   Downloaded signal-hook-mio v0.2.5
[INFO] [stderr]   Downloaded nalgebra-macros v0.3.0
[INFO] [stderr]   Downloaded termion v4.0.5
[INFO] [stderr]   Downloaded rand_distr v0.5.1
[INFO] [stderr]   Downloaded glam v0.20.5
[INFO] [stderr]   Downloaded glam v0.18.0
[INFO] [stderr]   Downloaded inquire v0.9.1
[INFO] [stderr]   Downloaded glam v0.28.0
[INFO] [stderr]   Downloaded libmimalloc-sys v0.1.44
[INFO] [stderr]   Downloaded nalgebra v0.34.1
[INFO] [stderr]   Downloaded glam v0.30.8
[INFO] [stderr]   Downloaded glam v0.19.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 300ff09a8304582f436e10f211f2425e1f2a805fdc4a991a4334c6c59956447b
[INFO] running `Command { std: "docker" "start" "-a" "300ff09a8304582f436e10f211f2425e1f2a805fdc4a991a4334c6c59956447b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "300ff09a8304582f436e10f211f2425e1f2a805fdc4a991a4334c6c59956447b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "300ff09a8304582f436e10f211f2425e1f2a805fdc4a991a4334c6c59956447b", kill_on_drop: false }`
[INFO] [stdout] 300ff09a8304582f436e10f211f2425e1f2a805fdc4a991a4334c6c59956447b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a66cc78c60aa2be9e358825c016ed8917de94003325aa5e8bd39780bad56d2c0
[INFO] running `Command { std: "docker" "start" "-a" "a66cc78c60aa2be9e358825c016ed8917de94003325aa5e8bd39780bad56d2c0", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling unicode-ident v1.0.20
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]    Compiling cc v1.2.43
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking numtoa v0.2.4
[INFO] [stderr]     Checking dyn-clone v1.0.20
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking fuzzy-matcher v0.3.7
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]     Checking termion v4.0.5
[INFO] [stderr]    Compiling libmimalloc-sys v0.1.44
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling nalgebra-macros v0.3.0
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking atomic v0.6.1
[INFO] [stderr]     Checking inquire v0.9.1
[INFO] [stderr]     Checking mimalloc v0.1.48
[INFO] [stderr]     Checking wide v0.7.33
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking simba v0.9.1
[INFO] [stderr]     Checking rand_distr v0.5.1
[INFO] [stderr]     Checking nalgebra v0.34.1
[INFO] [stderr]     Checking nnue v0.1.0 (/opt/rustwide/workdir/nnue)
[INFO] [stdout] warning: unexpected `cfg` condition value: `mimalloc`
[INFO] [stdout]  --> nnue/src/lib.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | #[cfg(feature = "mimalloc")]
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: expected values for `feature` are: `arrayvec`
[INFO] [stdout]   = help: consider adding `mimalloc` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `mimalloc`
[INFO] [stdout]   --> nnue/src/lib.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | #[cfg(feature = "mimalloc")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `arrayvec`
[INFO] [stdout]    = help: consider adding `mimalloc` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error`, `Read`, `Write`, `from_raw_parts_mut`, `from_raw_parts`, `mem::MaybeUninit`, and `ptr::addr_of_mut`
[INFO] [stdout]  --> nnue/src/lib.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 |     io::{Error, Read, Write},
[INFO] [stdout]   |          ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 3 |     mem::MaybeUninit,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 4 |     ptr::addr_of_mut,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |     slice::{from_raw_parts, from_raw_parts_mut},
[INFO] [stdout]   |             ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SMatrix` and `SVector`
[INFO] [stdout]   --> nnue/src/lib.rs:17:34
[INFO] [stdout]    |
[INFO] [stdout] 17 | use nalgebra::{DMatrix, DVector, SMatrix, SVector};
[INFO] [stdout]    |                                  ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num_traits::Zero`
[INFO] [stdout]   --> nnue/src/lib.rs:18:35
[INFO] [stdout]    |
[INFO] [stdout] 18 | use rand_distr::{Normal, Uniform, num_traits::Zero};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mem::MaybeUninit` and `ptr::addr_of_mut`
[INFO] [stdout]  --> nnue/src/grad.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     mem::MaybeUninit,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 3 |     ops::{Add, Mul},
[INFO] [stdout] 4 |     ptr::addr_of_mut,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SMatrix` and `SVector`
[INFO] [stdout]  --> nnue/src/grad.rs:7:48
[INFO] [stdout]   |
[INFO] [stdout] 7 | use nalgebra::{ComplexField, DMatrix, DVector, SMatrix, SVector};
[INFO] [stdout]   |                                                ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> nnue/src/grad.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ComplexField`
[INFO] [stdout]  --> nnue/src/grad.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use nalgebra::{ComplexField, DMatrix, DVector, SMatrix, SVector};
[INFO] [stdout]   |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_LEN` is never used
[INFO] [stdout]   --> nnue/src/lib.rs:98:7
[INFO] [stdout]    |
[INFO] [stdout] 98 | const DATA_LEN: usize = size_of::<Network>();
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dphi` is never used
[INFO] [stdout]    --> nnue/src/lib.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 305 | impl<const COL: usize, const ROW: usize> Layer<COL, ROW> {
[INFO] [stdout]     | -------------------------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn dphi(&self, input: &DVector<f32>) -> DVector<f32> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `safesoftmax` is never used
[INFO] [stdout]    --> nnue/src/phi.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn safesoftmax(xs: &Vec<f32>) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `mimalloc`
[INFO] [stdout]  --> nnue/src/lib.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | #[cfg(feature = "mimalloc")]
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: expected values for `feature` are: `arrayvec`
[INFO] [stdout]   = help: consider adding `mimalloc` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking chessbb v0.1.0 (/opt/rustwide/workdir/chessbb)
[INFO] [stdout] warning: unexpected `cfg` condition value: `mimalloc`
[INFO] [stdout]   --> nnue/src/lib.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | #[cfg(feature = "mimalloc")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `arrayvec`
[INFO] [stdout]    = help: consider adding `mimalloc` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error`, `Read`, `Write`, `from_raw_parts_mut`, `from_raw_parts`, `mem::MaybeUninit`, and `ptr::addr_of_mut`
[INFO] [stdout]  --> nnue/src/lib.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 |     io::{Error, Read, Write},
[INFO] [stdout]   |          ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 3 |     mem::MaybeUninit,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 4 |     ptr::addr_of_mut,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |     slice::{from_raw_parts, from_raw_parts_mut},
[INFO] [stdout]   |             ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SMatrix` and `SVector`
[INFO] [stdout]   --> nnue/src/lib.rs:17:34
[INFO] [stdout]    |
[INFO] [stdout] 17 | use nalgebra::{DMatrix, DVector, SMatrix, SVector};
[INFO] [stdout]    |                                  ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num_traits::Zero`
[INFO] [stdout]   --> nnue/src/lib.rs:18:35
[INFO] [stdout]    |
[INFO] [stdout] 18 | use rand_distr::{Normal, Uniform, num_traits::Zero};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mem::MaybeUninit` and `ptr::addr_of_mut`
[INFO] [stdout]  --> nnue/src/grad.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     mem::MaybeUninit,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 3 |     ops::{Add, Mul},
[INFO] [stdout] 4 |     ptr::addr_of_mut,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SMatrix` and `SVector`
[INFO] [stdout]  --> nnue/src/grad.rs:7:48
[INFO] [stdout]   |
[INFO] [stdout] 7 | use nalgebra::{ComplexField, DMatrix, DVector, SMatrix, SVector};
[INFO] [stdout]   |                                                ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> nnue/src/grad.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ComplexField`
[INFO] [stdout]  --> nnue/src/grad.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use nalgebra::{ComplexField, DMatrix, DVector, SMatrix, SVector};
[INFO] [stdout]   |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_LEN` is never used
[INFO] [stdout]   --> nnue/src/lib.rs:98:7
[INFO] [stdout]    |
[INFO] [stdout] 98 | const DATA_LEN: usize = size_of::<Network>();
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dphi` is never used
[INFO] [stdout]    --> nnue/src/lib.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 305 | impl<const COL: usize, const ROW: usize> Layer<COL, ROW> {
[INFO] [stdout]     | -------------------------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn dphi(&self, input: &DVector<f32>) -> DVector<f32> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `safesoftmax` is never used
[INFO] [stdout]    --> nnue/src/phi.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn safesoftmax(xs: &Vec<f32>) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> chessbb/src/chessboard/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::Duration;
[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: `std::time::Instant`
[INFO] [stdout]  --> chessbb/src/chessboard/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::chessboard`
[INFO] [stdout]   --> chessbb/src/chessboard/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::chessboard;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iter`
[INFO] [stdout]  --> chessbb/src/chessboard/mailbox.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::Debug, iter, ops::Index};
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hint::unreachable_unchecked`
[INFO] [stdout]  --> chessbb/src/chessmove/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::hint::unreachable_unchecked;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SVector`
[INFO] [stdout]  --> chessbb/src/nnue.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use nalgebra::{DVector, SVector};
[INFO] [stdout]   |                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> chessbb/src/chessboard/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::Duration;
[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: `std::time::Instant`
[INFO] [stdout]  --> chessbb/src/chessboard/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::chessboard`
[INFO] [stdout]   --> chessbb/src/chessboard/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::chessboard;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iter`
[INFO] [stdout]  --> chessbb/src/chessboard/mailbox.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::Debug, iter, ops::Index};
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hint::unreachable_unchecked`
[INFO] [stdout]  --> chessbb/src/chessmove/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::hint::unreachable_unchecked;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SVector`
[INFO] [stdout]  --> chessbb/src/nnue.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use nalgebra::{DVector, SVector};
[INFO] [stdout]   |                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bishops`
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:558:64
[INFO] [stdout]     |
[INFO] [stdout] 558 |             return matches!(bishops.bit_and(&Bitboard::WHITE), bishops) || matches!(bishops.bit_and(&Bitboard::BLACK), bishops);
[INFO] [stdout]     |                                                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bishops`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bishops`
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:558:120
[INFO] [stdout]     |
[INFO] [stdout] 558 |             return matches!(bishops.bit_and(&Bitboard::WHITE), bishops) || matches!(bishops.bit_and(&Bitboard::BLACK), bishops);
[INFO] [stdout]     |                                                                                                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bishops`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PROMOTION_ROWS` is never used
[INFO] [stdout]   --> chessbb/src/bitboard/attack.rs:54:7
[INFO] [stdout]    |
[INFO] [stdout] 54 | const PROMOTION_ROWS: [usize; 2] = [7, 0];
[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 `promotion_row` is never used
[INFO] [stdout]   --> chessbb/src/bitboard/attack.rs:56:21
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) const fn promotion_row(side: Side) -> usize {
[INFO] [stdout]    |                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `starting_row` is never used
[INFO] [stdout]   --> chessbb/src/bitboard/attack.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) const fn starting_row(side: Side) -> usize {
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_occ_bb` is never used
[INFO] [stdout]   --> chessbb/src/bitboard/attack/magic.rs:77:10
[INFO] [stdout]    |
[INFO] [stdout] 77 | const fn compute_occ_bb(index: usize, mask_bitcount: usize, attack_mask: Bitboard) -> Bitboard {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bishop_attack_mbb` is never used
[INFO] [stdout]    --> chessbb/src/bitboard/attack/magic.rs:167:10
[INFO] [stdout]     |
[INFO] [stdout] 167 | const fn bishop_attack_mbb() -> [[Bitboard; SIZE_BISHOP]; 64] {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rook_attack_mbb` is never used
[INFO] [stdout]    --> chessbb/src/bitboard/attack/magic.rs:194:10
[INFO] [stdout]     |
[INFO] [stdout] 194 | const fn rook_attack_mbb() -> [[Bitboard; SIZE_ROOK]; 64] {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sym_index` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:160:14
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub const fn sym_index(c: char) -> usize {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COLOUR_PIECE_SYMBOLS` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:180:11
[INFO] [stdout]     |
[INFO] [stdout] 180 | pub const COLOUR_PIECE_SYMBOLS: [char; 12] = ['P', 'N', 'B', 'R', 'Q', 'K', 'p', 'n', 'b', 'r', 'q', 'k'];
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `king_square` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:208:14
[INFO] [stdout]     |
[INFO] [stdout] 202 | impl ChessGame {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 208 |     const fn king_square(&self, side: Side) -> Square {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_king_in_check` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:410:25
[INFO] [stdout]     |
[INFO] [stdout] 400 | impl ChessBoard {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub(crate) const fn is_king_in_check(&self, king_side: Side) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MailboxIterator` is never used
[INFO] [stdout]   --> chessbb/src/chessboard/mailbox.rs:49:10
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub type MailboxIterator = OptionMailboxIterator;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MaybeMailbox` is never constructed
[INFO] [stdout]   --> chessbb/src/chessboard/mailbox.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct MaybeMailbox([MaybeChessPiece; 64]);
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MaybeMailboxIterator` is never constructed
[INFO] [stdout]   --> chessbb/src/chessboard/mailbox.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct MaybeMailboxIterator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `NONE` and `convert` are never used
[INFO] [stdout]    --> chessbb/src/chessboard/mailbox.rs:127:11
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl MaybeChessPiece {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 127 |     const NONE: MaybeChessPiece = MaybeChessPiece(0b0000_0000);
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 128 |
[INFO] [stdout] 129 |     const fn convert(value: MaybeChessPiece) -> Option<ChessPiece> {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `square_index`, `index`, `set`, `iter`, `EMPTY_MAILBOX`, and `START_MAILBOX` are never used
[INFO] [stdout]    --> chessbb/src/chessboard/mailbox.rs:178:25
[INFO] [stdout]     |
[INFO] [stdout] 177 | impl MaybeMailbox {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 178 |     pub(crate) const fn square_index(&self, s: Square) -> Option<ChessPiece> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub(crate) const fn index(&self, i: usize) -> Option<ChessPiece> {
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub(crate) fn set(&mut self, piece: Option<ChessPiece>, square: Square) {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn iter(&self) -> MaybeMailboxIterator {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub(crate) const EMPTY_MAILBOX: MaybeMailbox = MaybeMailbox([MaybeChessPiece::NONE; 64]);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub(crate) const START_MAILBOX: MaybeMailbox = MaybeMailbox([
[INFO] [stdout]     |                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `index` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mailbox.rs:281:25
[INFO] [stdout]     |
[INFO] [stdout] 276 | impl OptionMailbox {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub(crate) const fn index(&self, i: usize) -> Option<ChessPiece> {
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate_attacking_pawns` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/movegen.rs:363:14
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl ChessBoard {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 363 |     const fn calculate_attacking_pawns(&self) -> Bitboard {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PieceBoard` is never constructed
[INFO] [stdout]   --> chessbb/src/chessboard/pieceboard.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct PieceBoard([Bitboard; 12]);
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> chessbb/src/chessboard/pieceboard.rs:101:22
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl PieceBoard {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 101 |     pub(crate) const EMPTY_BOARD: PieceBoard = PieceBoard([Bitboard::ZERO; 12]);
[INFO] [stdout]     |                      ^^^^^^^^^^^
[INFO] [stdout] 102 |
[INFO] [stdout] 103 |     pub(crate) const START_BOARD: PieceBoard = PieceBoard([
[INFO] [stdout]     |                      ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub const fn piece_bitboard(&self, index: ChessPiece) -> Bitboard {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub(crate) const fn colour_blockers(&self, side: Side) -> Bitboard {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub(crate) const fn white_blockers(&self) -> Bitboard {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub(crate) const fn black_blockers(&self) -> Bitboard {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub(crate) const fn blockers(&self) -> Bitboard {
[INFO] [stdout]     |                         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub(crate) const fn set_bit(&mut self, piece: ChessPiece, square: Square) {
[INFO] [stdout]     |                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub(crate) const fn pop_bit(&mut self, piece: ChessPiece, square: Square) {
[INFO] [stdout]     |                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_u64`, `new`, and `compute_castle_hash` are never used
[INFO] [stdout]    --> chessbb/src/chessboard/zobrist/mod.rs:82:25
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl ZobristHash {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub(crate) const fn to_u64(&self) -> u64 {
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub(crate) const fn new(value: u64) -> ZobristHash {
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub(crate) const fn compute_castle_hash(chessboard: &ChessBoard) -> ZobristHash {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `PROMOTION_PIECE`, `CASTLING`, `set_source`, and `set_target` are never used
[INFO] [stdout]    --> chessbb/src/chessmove/mod.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl ChessMove {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     const PROMOTION_PIECE: [PieceType; 4] = [PieceType::Knight, PieceType::Bishop, PieceType::Rook, PieceType::Queen];
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 109 |
[INFO] [stdout] 110 |     const CASTLING: [Castling; 4] =
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub(crate) const fn set_source(&mut self, index: usize) {
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub(crate) const fn set_target(&mut self, index: usize) {
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLIPPED_INDEX` is never used
[INFO] [stdout]   --> chessbb/src/square.rs:57:7
[INFO] [stdout]    |
[INFO] [stdout] 57 | const FLIPPED_INDEX: [usize; 64] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> chessbb/src/square.rs:106:24
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl Square {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub(crate)const fn is_same_diag(s1: Square, s2: Square, s3: Square) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub(crate)const fn is_same_ddiag(s1: Square, s2: Square) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub(crate)const fn is_same_adiag(s1: Square, s2: Square) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub(crate)const fn is_same_row(s1: Square, s2: Square) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub(crate) const fn is_same_col(s1: Square, s2: Square) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     const DDIAG: [u8; 64] = [
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     const ADIAG: [u8; 64] = [
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     const ROWS: [u8; 64] = [
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     const COLS: [u8; 64] = [
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bishops`
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:558:64
[INFO] [stdout]     |
[INFO] [stdout] 558 |             return matches!(bishops.bit_and(&Bitboard::WHITE), bishops) || matches!(bishops.bit_and(&Bitboard::BLACK), bishops);
[INFO] [stdout]     |                                                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bishops`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bishops`
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:558:120
[INFO] [stdout]     |
[INFO] [stdout] 558 |             return matches!(bishops.bit_and(&Bitboard::WHITE), bishops) || matches!(bishops.bit_and(&Bitboard::BLACK), bishops);
[INFO] [stdout]     |                                                                                                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bishops`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PROMOTION_ROWS` is never used
[INFO] [stdout]   --> chessbb/src/bitboard/attack.rs:54:7
[INFO] [stdout]    |
[INFO] [stdout] 54 | const PROMOTION_ROWS: [usize; 2] = [7, 0];
[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 `promotion_row` is never used
[INFO] [stdout]   --> chessbb/src/bitboard/attack.rs:56:21
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) const fn promotion_row(side: Side) -> usize {
[INFO] [stdout]    |                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `starting_row` is never used
[INFO] [stdout]   --> chessbb/src/bitboard/attack.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) const fn starting_row(side: Side) -> usize {
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_occ_bb` is never used
[INFO] [stdout]   --> chessbb/src/bitboard/attack/magic.rs:77:10
[INFO] [stdout]    |
[INFO] [stdout] 77 | const fn compute_occ_bb(index: usize, mask_bitcount: usize, attack_mask: Bitboard) -> Bitboard {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bishop_attack_mbb` is never used
[INFO] [stdout]    --> chessbb/src/bitboard/attack/magic.rs:167:10
[INFO] [stdout]     |
[INFO] [stdout] 167 | const fn bishop_attack_mbb() -> [[Bitboard; SIZE_BISHOP]; 64] {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rook_attack_mbb` is never used
[INFO] [stdout]    --> chessbb/src/bitboard/attack/magic.rs:194:10
[INFO] [stdout]     |
[INFO] [stdout] 194 | const fn rook_attack_mbb() -> [[Bitboard; SIZE_ROOK]; 64] {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sym_index` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:160:14
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub const fn sym_index(c: char) -> usize {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COLOUR_PIECE_SYMBOLS` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:180:11
[INFO] [stdout]     |
[INFO] [stdout] 180 | pub const COLOUR_PIECE_SYMBOLS: [char; 12] = ['P', 'N', 'B', 'R', 'Q', 'K', 'p', 'n', 'b', 'r', 'q', 'k'];
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `king_square` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:208:14
[INFO] [stdout]     |
[INFO] [stdout] 202 | impl ChessGame {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 208 |     const fn king_square(&self, side: Side) -> Square {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_king_in_check` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mod.rs:410:25
[INFO] [stdout]     |
[INFO] [stdout] 400 | impl ChessBoard {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub(crate) const fn is_king_in_check(&self, king_side: Side) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MailboxIterator` is never used
[INFO] [stdout]   --> chessbb/src/chessboard/mailbox.rs:49:10
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub type MailboxIterator = OptionMailboxIterator;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MaybeMailbox` is never constructed
[INFO] [stdout]   --> chessbb/src/chessboard/mailbox.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct MaybeMailbox([MaybeChessPiece; 64]);
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MaybeMailboxIterator` is never constructed
[INFO] [stdout]   --> chessbb/src/chessboard/mailbox.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct MaybeMailboxIterator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `NONE` and `convert` are never used
[INFO] [stdout]    --> chessbb/src/chessboard/mailbox.rs:127:11
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl MaybeChessPiece {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 127 |     const NONE: MaybeChessPiece = MaybeChessPiece(0b0000_0000);
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 128 |
[INFO] [stdout] 129 |     const fn convert(value: MaybeChessPiece) -> Option<ChessPiece> {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `square_index`, `index`, `set`, `iter`, `EMPTY_MAILBOX`, and `START_MAILBOX` are never used
[INFO] [stdout]    --> chessbb/src/chessboard/mailbox.rs:178:25
[INFO] [stdout]     |
[INFO] [stdout] 177 | impl MaybeMailbox {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 178 |     pub(crate) const fn square_index(&self, s: Square) -> Option<ChessPiece> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub(crate) const fn index(&self, i: usize) -> Option<ChessPiece> {
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub(crate) fn set(&mut self, piece: Option<ChessPiece>, square: Square) {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn iter(&self) -> MaybeMailboxIterator {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub(crate) const EMPTY_MAILBOX: MaybeMailbox = MaybeMailbox([MaybeChessPiece::NONE; 64]);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub(crate) const START_MAILBOX: MaybeMailbox = MaybeMailbox([
[INFO] [stdout]     |                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `index` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/mailbox.rs:281:25
[INFO] [stdout]     |
[INFO] [stdout] 276 | impl OptionMailbox {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub(crate) const fn index(&self, i: usize) -> Option<ChessPiece> {
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate_attacking_pawns` is never used
[INFO] [stdout]    --> chessbb/src/chessboard/movegen.rs:363:14
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl ChessBoard {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 363 |     const fn calculate_attacking_pawns(&self) -> Bitboard {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PieceBoard` is never constructed
[INFO] [stdout]   --> chessbb/src/chessboard/pieceboard.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct PieceBoard([Bitboard; 12]);
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> chessbb/src/chessboard/pieceboard.rs:101:22
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl PieceBoard {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 101 |     pub(crate) const EMPTY_BOARD: PieceBoard = PieceBoard([Bitboard::ZERO; 12]);
[INFO] [stdout]     |                      ^^^^^^^^^^^
[INFO] [stdout] 102 |
[INFO] [stdout] 103 |     pub(crate) const START_BOARD: PieceBoard = PieceBoard([
[INFO] [stdout]     |                      ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub const fn piece_bitboard(&self, index: ChessPiece) -> Bitboard {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub(crate) const fn colour_blockers(&self, side: Side) -> Bitboard {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub(crate) const fn white_blockers(&self) -> Bitboard {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub(crate) const fn black_blockers(&self) -> Bitboard {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub(crate) const fn blockers(&self) -> Bitboard {
[INFO] [stdout]     |                         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub(crate) const fn set_bit(&mut self, piece: ChessPiece, square: Square) {
[INFO] [stdout]     |                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub(crate) const fn pop_bit(&mut self, piece: ChessPiece, square: Square) {
[INFO] [stdout]     |                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_u64`, `new`, and `compute_castle_hash` are never used
[INFO] [stdout]    --> chessbb/src/chessboard/zobrist/mod.rs:82:25
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl ZobristHash {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub(crate) const fn to_u64(&self) -> u64 {
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub(crate) const fn new(value: u64) -> ZobristHash {
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub(crate) const fn compute_castle_hash(chessboard: &ChessBoard) -> ZobristHash {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `PROMOTION_PIECE`, `CASTLING`, `set_source`, and `set_target` are never used
[INFO] [stdout]    --> chessbb/src/chessmove/mod.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl ChessMove {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     const PROMOTION_PIECE: [PieceType; 4] = [PieceType::Knight, PieceType::Bishop, PieceType::Rook, PieceType::Queen];
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 109 |
[INFO] [stdout] 110 |     const CASTLING: [Castling; 4] =
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub(crate) const fn set_source(&mut self, index: usize) {
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub(crate) const fn set_target(&mut self, index: usize) {
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLIPPED_INDEX` is never used
[INFO] [stdout]   --> chessbb/src/square.rs:57:7
[INFO] [stdout]    |
[INFO] [stdout] 57 | const FLIPPED_INDEX: [usize; 64] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> chessbb/src/square.rs:106:24
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl Square {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub(crate)const fn is_same_diag(s1: Square, s2: Square, s3: Square) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub(crate)const fn is_same_ddiag(s1: Square, s2: Square) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub(crate)const fn is_same_adiag(s1: Square, s2: Square) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub(crate)const fn is_same_row(s1: Square, s2: Square) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub(crate) const fn is_same_col(s1: Square, s2: Square) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     const DDIAG: [u8; 64] = [
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     const ADIAG: [u8; 64] = [
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     const ROWS: [u8; 64] = [
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     const COLS: [u8; 64] = [
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking pp0 v0.1.0 (/opt/rustwide/workdir/pp0)
[INFO] [stdout] warning: unused import: `core::error`
[INFO] [stdout]  --> chessbb/src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use core::error;
[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: `std::time::Instant`
[INFO] [stdout]  --> chessbb/src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::error`
[INFO] [stdout]  --> chessbb/src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use core::error;
[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: `std::time::Instant`
[INFO] [stdout]  --> chessbb/src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DEPTH` is never used
[INFO] [stdout]   --> chessbb/src/main.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const START_DEPTH: usize = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DEPTH` is never used
[INFO] [stdout]   --> chessbb/src/main.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const MAX_DEPTH: usize = 1;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perft_test` is never used
[INFO] [stdout]   --> chessbb/src/main.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn perft_test(fen: &str, raw_moves: Vec<u16>, is_bulk: bool) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIZE` is never used
[INFO] [stdout]   --> chessbb/src/main.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 |     const SIZE: usize = size_of::<ChessBoard>();
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_DEPTH` is never used
[INFO] [stdout]   --> chessbb/src/main.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const START_DEPTH: usize = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DEPTH` is never used
[INFO] [stdout]   --> chessbb/src/main.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const MAX_DEPTH: usize = 1;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perft_test` is never used
[INFO] [stdout]   --> chessbb/src/main.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn perft_test(fen: &str, raw_moves: Vec<u16>, is_bulk: bool) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIZE` is never used
[INFO] [stdout]   --> chessbb/src/main.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 |     const SIZE: usize = size_of::<ChessBoard>();
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChessBoard` and `index`
[INFO] [stdout]  --> pp0/src/evaluator.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chessbb::{ChessBoard, ChessGame, ChessMove, ChessPiece, MoveType, PieceType, Side, Square, castle_index, index_pair, index};
[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: `core::time`
[INFO] [stdout]  --> pp0/src/search.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::time;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicU64`, `IndexMut`, and `Index`
[INFO] [stdout]  --> pp0/src/transposition.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 |     ops::{Index, IndexMut},
[INFO] [stdout]   |           ^^^^^  ^^^^^^^^
[INFO] [stdout] 4 |     sync::atomic::{AtomicU64, Ordering},
[INFO] [stdout]   |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Square`
[INFO] [stdout]  --> pp0/src/uci.rs:8:43
[INFO] [stdout]   |
[INFO] [stdout] 8 | use chessbb::{ChessGame, ChessMove, Side, Square};
[INFO] [stdout]   |                                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TimeLimit` and `self`
[INFO] [stdout]   --> pp0/src/uci.rs:12:41
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Evaluator, SearchData, SearchLimit, TimeLimit, TranspositionTable,
[INFO] [stdout]    |                                         ^^^^^^^^^
[INFO] [stdout] 13 |     search::{self, WIN_SCORE},
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> pp0/src/uci.rs:209:41
[INFO] [stdout]     |
[INFO] [stdout] 209 |                 let mating_depth: i16 = (((eval_data.signum() * WIN_SCORE - eval_data) / 2) + 1);
[INFO] [stdout]     |                                         ^                                                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 209 -                 let mating_depth: i16 = (((eval_data.signum() * WIN_SCORE - eval_data) / 2) + 1);
[INFO] [stdout] 209 +                 let mating_depth: i16 = ((eval_data.signum() * WIN_SCORE - eval_data) / 2) + 1 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChessBoard` and `index`
[INFO] [stdout]  --> pp0/src/evaluator.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chessbb::{ChessBoard, ChessGame, ChessMove, ChessPiece, MoveType, PieceType, Side, Square, castle_index, index_pair, index};
[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: `core::time`
[INFO] [stdout]  --> pp0/src/search.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::time;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicU64`, `IndexMut`, and `Index`
[INFO] [stdout]  --> pp0/src/transposition.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 |     ops::{Index, IndexMut},
[INFO] [stdout]   |           ^^^^^  ^^^^^^^^
[INFO] [stdout] 4 |     sync::atomic::{AtomicU64, Ordering},
[INFO] [stdout]   |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Square`
[INFO] [stdout]  --> pp0/src/uci.rs:8:43
[INFO] [stdout]   |
[INFO] [stdout] 8 | use chessbb::{ChessGame, ChessMove, Side, Square};
[INFO] [stdout]   |                                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TimeLimit` and `self`
[INFO] [stdout]   --> pp0/src/uci.rs:12:41
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Evaluator, SearchData, SearchLimit, TimeLimit, TranspositionTable,
[INFO] [stdout]    |                                         ^^^^^^^^^
[INFO] [stdout] 13 |     search::{self, WIN_SCORE},
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> pp0/src/uci.rs:209:41
[INFO] [stdout]     |
[INFO] [stdout] 209 |                 let mating_depth: i16 = (((eval_data.signum() * WIN_SCORE - eval_data) / 2) + 1);
[INFO] [stdout]     |                                         ^                                                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 209 -                 let mating_depth: i16 = (((eval_data.signum() * WIN_SCORE - eval_data) / 2) + 1);
[INFO] [stdout] 209 +                 let mating_depth: i16 = ((eval_data.signum() * WIN_SCORE - eval_data) / 2) + 1 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:198:26
[INFO] [stdout]     |
[INFO] [stdout] 198 |     fn update(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessmove`
[INFO] [stdout]    --> pp0/src/evaluator.rs:198:49
[INFO] [stdout]     |
[INFO] [stdout] 198 |     fn update(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessmove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:199:26
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn revert(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessmove`
[INFO] [stdout]    --> pp0/src/evaluator.rs:199:49
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn revert(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessmove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:200:30
[INFO] [stdout]     |
[INFO] [stdout] 200 |     fn initialize(&mut self, chessgame: &ChessGame) {}
[INFO] [stdout]     |                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:246:26
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn update(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessmove`
[INFO] [stdout]    --> pp0/src/evaluator.rs:246:49
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn update(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessmove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:247:26
[INFO] [stdout]     |
[INFO] [stdout] 247 |     fn revert(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessmove`
[INFO] [stdout]    --> pp0/src/evaluator.rs:247:49
[INFO] [stdout]     |
[INFO] [stdout] 247 |     fn revert(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessmove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:248:30
[INFO] [stdout]     |
[INFO] [stdout] 248 |     fn initialize(&mut self, chessgame: &ChessGame) {}
[INFO] [stdout]     |                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:198:26
[INFO] [stdout]     |
[INFO] [stdout] 198 |     fn update(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessmove`
[INFO] [stdout]    --> pp0/src/evaluator.rs:198:49
[INFO] [stdout]     |
[INFO] [stdout] 198 |     fn update(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessmove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:199:26
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn revert(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessmove`
[INFO] [stdout]    --> pp0/src/evaluator.rs:199:49
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn revert(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessmove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:200:30
[INFO] [stdout]     |
[INFO] [stdout] 200 |     fn initialize(&mut self, chessgame: &ChessGame) {}
[INFO] [stdout]     |                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:246:26
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn update(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessmove`
[INFO] [stdout]    --> pp0/src/evaluator.rs:246:49
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn update(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessmove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:247:26
[INFO] [stdout]     |
[INFO] [stdout] 247 |     fn revert(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessmove`
[INFO] [stdout]    --> pp0/src/evaluator.rs:247:49
[INFO] [stdout]     |
[INFO] [stdout] 247 |     fn revert(&mut self, chessgame: &ChessGame, chessmove: &ChessMove) {}
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessmove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chessgame`
[INFO] [stdout]    --> pp0/src/evaluator.rs:248:30
[INFO] [stdout]     |
[INFO] [stdout] 248 |     fn initialize(&mut self, chessgame: &ChessGame) {}
[INFO] [stdout]     |                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chessgame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_fen`
[INFO] [stdout]   --> pp0/src/uci.rs:90:63
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn uci_position(chessgame: &mut ChessGame, cmd_str: &str, last_fen: &mut Vec<String>) {
[INFO] [stdout]    |                                                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> pp0/src/uci.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let mut soft_time_limit: Duration = match chessgame.side() {
[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: variable does not need to be mutable
[INFO] [stdout]    --> pp0/src/uci.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 175 |     let mut moves = chessgame.try_generate_moves::<true>().0;
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `moves_len`
[INFO] [stdout]    --> pp0/src/uci.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |     let moves_len = moves.len();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_moves_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> pp0/src/transposition.rs:75:8
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl PositionData {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  74 |     #[inline(always)]
[INFO] [stdout]  75 |     fn new(key: ZobristHash, depth: u16, eval: i16, ty: NodeType, best: Option<ChessMove>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     const fn const_default() -> Self {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn is_valid(&self, hash: ZobristHash) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub const fn key(&self) -> ZobristHash {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub const fn depth(&self) -> u16 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub const fn eval(&self) -> i16 {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub const fn ty(&self) -> NodeType {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn best(&self) -> Option<ChessMove> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AtomicTranspositionTable` is never constructed
[INFO] [stdout]    --> pp0/src/transposition.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct AtomicTranspositionTable {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AtomicPositionData` is never constructed
[INFO] [stdout]    --> pp0/src/transposition.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub struct AtomicPositionData(Atomic<PositionData>);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IS_POSITION_DATA_LOCK_FREE` is never used
[INFO] [stdout]    --> pp0/src/transposition.rs:136:7
[INFO] [stdout]     |
[INFO] [stdout] 136 | const IS_POSITION_DATA_LOCK_FREE: bool = Atomic::<PositionData>::is_lock_free();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> pp0/src/transposition.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl AtomicPositionData {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 151 |     #[inline(always)]
[INFO] [stdout] 152 |     fn new(key: ZobristHash, depth: u16, eval: i16, ty: NodeType, best: Option<ChessMove>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn get_mut(&mut self) -> &mut PositionData {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn into_inner(self) -> PositionData {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn load(&self, order: Ordering) -> PositionData {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn store(&self, val: PositionData, order: Ordering) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn swap(&self, val: PositionData, order: Ordering) -> PositionData {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     const fn const_default() -> Self {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_tt`, `store`, `load`, `permil_count`, and `size_of` are never used
[INFO] [stdout]    --> pp0/src/transposition.rs:189:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl AtomicTranspositionTable {
[INFO] [stdout]     | ----------------------------- associated items in this implementation
[INFO] [stdout] 188 |     #[inline(always)]
[INFO] [stdout] 189 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn update_tt(&self, hash: ZobristHash, value: i16, chess_move: Option<ChessMove>, a: i16, b: i16, d: u16, order: Ordering) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn store(&self, hash: ZobristHash, depth: u16, eval: i16, ty: NodeType, best: Option<ChessMove>, order: Ordering) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub(crate) fn load(&self, hash: ZobristHash, order: Ordering) -> Option<PositionData> {
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn permil_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub const fn size_of() -> usize {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IS_SMALL_POSITION_DATA_LOCK_FREE` is never used
[INFO] [stdout]    --> pp0/src/transposition.rs:245:7
[INFO] [stdout]     |
[INFO] [stdout] 245 | const IS_SMALL_POSITION_DATA_LOCK_FREE: bool = Atomic::<SmallPositionData>::is_lock_free();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IS_ZOBRIST_HASH_LOCK_FREE` is never used
[INFO] [stdout]    --> pp0/src/transposition.rs:246:7
[INFO] [stdout]     |
[INFO] [stdout] 246 | const IS_ZOBRIST_HASH_LOCK_FREE: bool = Atomic::<ZobristHash>::is_lock_free();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> pp0/src/transposition.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 294 | impl SmallAtomicPositionData {
[INFO] [stdout]     | ---------------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 298 |     fn new(key: ZobristHash, depth: u16, eval: i16, ty: NodeType, best: Option<ChessMove>) -> SmallAtomicPositionData {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_fen`
[INFO] [stdout]   --> pp0/src/uci.rs:90:63
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn uci_position(chessgame: &mut ChessGame, cmd_str: &str, last_fen: &mut Vec<String>) {
[INFO] [stdout]    |                                                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> pp0/src/uci.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let mut soft_time_limit: Duration = match chessgame.side() {
[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: variable does not need to be mutable
[INFO] [stdout]    --> pp0/src/uci.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 175 |     let mut moves = chessgame.try_generate_moves::<true>().0;
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `moves_len`
[INFO] [stdout]    --> pp0/src/uci.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |     let moves_len = moves.len();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_moves_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> pp0/src/transposition.rs:75:8
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl PositionData {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  74 |     #[inline(always)]
[INFO] [stdout]  75 |     fn new(key: ZobristHash, depth: u16, eval: i16, ty: NodeType, best: Option<ChessMove>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     const fn const_default() -> Self {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn is_valid(&self, hash: ZobristHash) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub const fn key(&self) -> ZobristHash {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub const fn depth(&self) -> u16 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub const fn eval(&self) -> i16 {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub const fn ty(&self) -> NodeType {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn best(&self) -> Option<ChessMove> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AtomicTranspositionTable` is never constructed
[INFO] [stdout]    --> pp0/src/transposition.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct AtomicTranspositionTable {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AtomicPositionData` is never constructed
[INFO] [stdout]    --> pp0/src/transposition.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub struct AtomicPositionData(Atomic<PositionData>);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IS_POSITION_DATA_LOCK_FREE` is never used
[INFO] [stdout]    --> pp0/src/transposition.rs:136:7
[INFO] [stdout]     |
[INFO] [stdout] 136 | const IS_POSITION_DATA_LOCK_FREE: bool = Atomic::<PositionData>::is_lock_free();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> pp0/src/transposition.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl AtomicPositionData {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 151 |     #[inline(always)]
[INFO] [stdout] 152 |     fn new(key: ZobristHash, depth: u16, eval: i16, ty: NodeType, best: Option<ChessMove>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn get_mut(&mut self) -> &mut PositionData {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn into_inner(self) -> PositionData {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn load(&self, order: Ordering) -> PositionData {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn store(&self, val: PositionData, order: Ordering) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn swap(&self, val: PositionData, order: Ordering) -> PositionData {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     const fn const_default() -> Self {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_tt`, `store`, `load`, `permil_count`, and `size_of` are never used
[INFO] [stdout]    --> pp0/src/transposition.rs:189:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl AtomicTranspositionTable {
[INFO] [stdout]     | ----------------------------- associated items in this implementation
[INFO] [stdout] 188 |     #[inline(always)]
[INFO] [stdout] 189 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn update_tt(&self, hash: ZobristHash, value: i16, chess_move: Option<ChessMove>, a: i16, b: i16, d: u16, order: Ordering) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn store(&self, hash: ZobristHash, depth: u16, eval: i16, ty: NodeType, best: Option<ChessMove>, order: Ordering) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub(crate) fn load(&self, hash: ZobristHash, order: Ordering) -> Option<PositionData> {
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn permil_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub const fn size_of() -> usize {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IS_SMALL_POSITION_DATA_LOCK_FREE` is never used
[INFO] [stdout]    --> pp0/src/transposition.rs:245:7
[INFO] [stdout]     |
[INFO] [stdout] 245 | const IS_SMALL_POSITION_DATA_LOCK_FREE: bool = Atomic::<SmallPositionData>::is_lock_free();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IS_ZOBRIST_HASH_LOCK_FREE` is never used
[INFO] [stdout]    --> pp0/src/transposition.rs:246:7
[INFO] [stdout]     |
[INFO] [stdout] 246 | const IS_ZOBRIST_HASH_LOCK_FREE: bool = Atomic::<ZobristHash>::is_lock_free();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> pp0/src/transposition.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 294 | impl SmallAtomicPositionData {
[INFO] [stdout]     | ---------------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 298 |     fn new(key: ZobristHash, depth: u16, eval: i16, ty: NodeType, best: Option<ChessMove>) -> SmallAtomicPositionData {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking trainer v0.1.0 (/opt/rustwide/workdir/trainer)
[INFO] [stdout] warning: unused import: `SVector`
[INFO] [stdout]  --> trainer/src/adam.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 | use nalgebra::{DVector, SVector};
[INFO] [stdout]   |                         ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `f32::EPSILON` and `os::unix::process`
[INFO] [stdout]  --> trainer/src/adam.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     f32::EPSILON,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 8 |     os::unix::process,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LOOP_COUNT_CHECK_LIMIT`
[INFO] [stdout]   --> trainer/src/adam.rs:21:36
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::{LAMBDA, LEARNING_RATE, LOOP_COUNT_CHECK_LIMIT, simulation::MatchResult};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, `f32::consts::E`, and `num::NonZero`
[INFO] [stdout]  --> trainer/src/player.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     f32::consts::E,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 3 |     num::NonZero,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 4 |     time::{Duration, Instant},
[INFO] [stdout]   |            ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chessbb::ChessBoard`
[INFO] [stdout]  --> trainer/src/player.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use chessbb::ChessBoard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `STATIC_EVAL`
[INFO] [stdout]  --> trainer/src/player.rs:9:41
[INFO] [stdout]   |
[INFO] [stdout] 9 | use pp0::{Evaluator, MaterialEvaluator, STATIC_EVAL, SearchLimit, StaticEvaluator};
[INFO] [stdout]   |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::atomic::Ordering`
[INFO] [stdout]  --> trainer/src/scoreboard.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     sync::atomic::Ordering,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mutex`, `SendError`, `Sender`, and `fs::File`
[INFO] [stdout]  --> trainer/src/simulation.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     fs::File,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 3 |     sync::{
[INFO] [stdout] 4 |         Arc, Mutex,
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 5 |         mpsc::{SendError, Sender},
[INFO] [stdout]   |                ^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufWriter` and `Write`
[INFO] [stdout]   --> trainer/src/simulation.rs:14:15
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::io::{BufWriter, Write};
[INFO] [stdout]    |               ^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sgd`
[INFO] [stdout]   --> trainer/src/main.rs:24:34
[INFO] [stdout]    |
[INFO] [stdout] 24 |     adam::{adam_single_threaded, sgd},
[INFO] [stdout]    |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ChessGame`
[INFO] [stdout]   --> trainer/src/main.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 | use chessbb::{ChessGame, GameResult, Side};
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nnue::SparseInputType`
[INFO] [stdout]   --> trainer/src/main.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | use nnue::SparseInputType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MATERIAL_EVAL` and `MaterialEvaluator`
[INFO] [stdout]   --> trainer/src/main.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | use pp0::{MATERIAL_EVAL, MaterialEvaluator};
[INFO] [stdout]    |           ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader`, `Read`, and `fs::File`
[INFO] [stdout]  --> pp0/src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     fs::File,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 4 |     io::{BufReader, Read},
[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: `SVector`
[INFO] [stdout]  --> trainer/src/adam.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 | use nalgebra::{DVector, SVector};
[INFO] [stdout]   |                         ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `f32::EPSILON` and `os::unix::process`
[INFO] [stdout]  --> trainer/src/adam.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     f32::EPSILON,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 8 |     os::unix::process,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LOOP_COUNT_CHECK_LIMIT`
[INFO] [stdout]   --> trainer/src/adam.rs:21:36
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::{LAMBDA, LEARNING_RATE, LOOP_COUNT_CHECK_LIMIT, simulation::MatchResult};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, `f32::consts::E`, and `num::NonZero`
[INFO] [stdout]  --> trainer/src/player.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     f32::consts::E,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 3 |     num::NonZero,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 4 |     time::{Duration, Instant},
[INFO] [stdout]   |            ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chessbb::ChessBoard`
[INFO] [stdout]  --> trainer/src/player.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use chessbb::ChessBoard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `STATIC_EVAL`
[INFO] [stdout]  --> trainer/src/player.rs:9:41
[INFO] [stdout]   |
[INFO] [stdout] 9 | use pp0::{Evaluator, MaterialEvaluator, STATIC_EVAL, SearchLimit, StaticEvaluator};
[INFO] [stdout]   |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::atomic::Ordering`
[INFO] [stdout]  --> trainer/src/scoreboard.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     sync::atomic::Ordering,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mutex`, `SendError`, `Sender`, and `fs::File`
[INFO] [stdout]  --> trainer/src/simulation.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     fs::File,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 3 |     sync::{
[INFO] [stdout] 4 |         Arc, Mutex,
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 5 |         mpsc::{SendError, Sender},
[INFO] [stdout]   |                ^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufWriter` and `Write`
[INFO] [stdout]   --> trainer/src/simulation.rs:14:15
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::io::{BufWriter, Write};
[INFO] [stdout]    |               ^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sgd`
[INFO] [stdout]   --> trainer/src/main.rs:24:34
[INFO] [stdout]    |
[INFO] [stdout] 24 |     adam::{adam_single_threaded, sgd},
[INFO] [stdout]    |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ChessGame`
[INFO] [stdout]   --> trainer/src/main.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 | use chessbb::{ChessGame, GameResult, Side};
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nnue::SparseInputType`
[INFO] [stdout]   --> trainer/src/main.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | use nnue::SparseInputType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MATERIAL_EVAL` and `MaterialEvaluator`
[INFO] [stdout]   --> trainer/src/main.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | use pp0::{MATERIAL_EVAL, MaterialEvaluator};
[INFO] [stdout]    |           ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Evaluator`
[INFO] [stdout]   --> trainer/src/main.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | use pp0::{Evaluator, STATIC_EVAL, SearchLimit};
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_limit`
[INFO] [stdout]   --> trainer/src/scoreboard.rs:57:36
[INFO] [stdout]    |
[INFO] [stdout] 57 |             pp0::SearchLimit::Time(time_limit) => self.p1_identifier = format!("{} ", p1_string,),
[INFO] [stdout]    |                                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_limit`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_limit`
[INFO] [stdout]   --> trainer/src/scoreboard.rs:63:36
[INFO] [stdout]    |
[INFO] [stdout] 63 |             pp0::SearchLimit::Time(time_limit) => self.p2_identifier = format!("{} ", p2_string,),
[INFO] [stdout]    |                                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader`, `Read`, and `fs::File`
[INFO] [stdout]  --> pp0/src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     fs::File,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 4 |     io::{BufReader, Read},
[INFO] [stdout]   |          ^^^^^^^^^  ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> trainer/src/main.rs:132:9
[INFO] [stdout]     |
[INFO] [stdout] 132 |     let mut net_ident: String = String::from_str("Net").unwrap();
[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: variable does not need to be mutable
[INFO] [stdout]    --> trainer/src/main.rs:133:9
[INFO] [stdout]     |
[INFO] [stdout] 133 |     let mut mat_eval_ident: String = String::from_str("Material Eval").unwrap();
[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]    --> trainer/src/main.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut static_eval_ident: String = String::from_str("Static Eval").unwrap();
[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]    --> trainer/src/main.rs:346:49
[INFO] [stdout]     |
[INFO] [stdout] 346 | ...                   let mut file = File::create(ENM_FILENAME)?;
[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]    --> trainer/src/main.rs:365:37
[INFO] [stdout]     |
[INFO] [stdout] 365 | ...                   let mut file = File::create(ENM_FILENAME)?;
[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]    --> trainer/src/main.rs:405:45
[INFO] [stdout]     |
[INFO] [stdout] 405 | ...                   let mut file = File::create(ENM_FILENAME)?;
[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]    --> trainer/src/main.rs:423:33
[INFO] [stdout]     |
[INFO] [stdout] 423 | ...                   let mut file = File::create(ENM_FILENAME)?;
[INFO] [stdout]     |                           ----^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `network`
[INFO] [stdout]    --> trainer/src/main.rs:294:42
[INFO] [stdout]     |
[INFO] [stdout] 294 |                 PlayerEvaluator::Network(network) => &net_ident,
[INFO] [stdout]     |                                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_network`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `static_evaluator`
[INFO] [stdout]    --> trainer/src/main.rs:295:45
[INFO] [stdout]     |
[INFO] [stdout] 295 |                 PlayerEvaluator::StaticEval(static_evaluator) => &static_eval_ident,
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named struct `StaticEvaluator`
[INFO] [stdout]     |
[INFO] [stdout] 295 -                 PlayerEvaluator::StaticEval(static_evaluator) => &static_eval_ident,
[INFO] [stdout] 295 +                 PlayerEvaluator::StaticEval(pp0::StaticEvaluator) => &static_eval_ident,
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 295 |                 PlayerEvaluator::StaticEval(_static_evaluator) => &static_eval_ident,
[INFO] [stdout]     |                                             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `material_evaluator`
[INFO] [stdout]    --> trainer/src/main.rs:296:52
[INFO] [stdout]     |
[INFO] [stdout] 296 |                 PlayerEvaluator::MaterialEvaluator(material_evaluator) => &mat_eval_ident,
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named struct `MaterialEvaluator`
[INFO] [stdout]     |
[INFO] [stdout] 296 -                 PlayerEvaluator::MaterialEvaluator(material_evaluator) => &mat_eval_ident,
[INFO] [stdout] 296 +                 PlayerEvaluator::MaterialEvaluator(pp0::MaterialEvaluator) => &mat_eval_ident,
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 296 |                 PlayerEvaluator::MaterialEvaluator(_material_evaluator) => &mat_eval_ident,
[INFO] [stdout]     |                                                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENM_START_DEPTH` is never used
[INFO] [stdout]   --> trainer/src/main.rs:62:7
[INFO] [stdout]    |
[INFO] [stdout] 62 | const ENM_START_DEPTH: usize = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_FILENAME` is never used
[INFO] [stdout]   --> trainer/src/main.rs:69:7
[INFO] [stdout]    |
[INFO] [stdout] 69 | const DEBUG_FILENAME: &str = "debug.txt";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_COLLECT_HISTORY` is never used
[INFO] [stdout]    --> trainer/src/main.rs:111:7
[INFO] [stdout]     |
[INFO] [stdout] 111 | const DEBUG_COLLECT_HISTORY: bool = true;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_GAMES_TOTAL` is never used
[INFO] [stdout]    --> trainer/src/main.rs:112:7
[INFO] [stdout]     |
[INFO] [stdout] 112 | const DEBUG_GAMES_TOTAL: usize = 5;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEBUG_GAMES_COLLECTED` is never used
[INFO] [stdout]    --> trainer/src/main.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | static DEBUG_GAMES_COLLECTED: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEBUG_GRADIENT_COLLECTED` is never used
[INFO] [stdout]    --> trainer/src/main.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | static DEBUG_GRADIENT_COLLECTED: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sgd` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn sgd(net: &mut Network, results: Vec<MatchResult>) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRADIENT_MINIBATCH` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:48:7
[INFO] [stdout]    |
[INFO] [stdout] 48 | const GRADIENT_MINIBATCH: usize = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_GRADIENT_THREAD_COUNT` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const MAX_GRADIENT_THREAD_COUNT: usize = 24;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `INSTANCE_COUNT` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | static INSTANCE_COUNT: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRADIENT_LOOP_COUNT_CHECK_LIMIT` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const GRADIENT_LOOP_COUNT_CHECK_LIMIT: usize = 2048 * 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adam` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn adam(net: &mut Network, results: Vec<MatchResult>, beta1: f32, beta2: f32, m: &mut Gradient, v: &mut Gradient) -> io::Result<()> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> trainer/src/player.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Player {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(evaluator: PlayerEvaluator, search_limit: SearchLimit) -> Player {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MaterialEvaluator` is never constructed
[INFO] [stdout]   --> trainer/src/player.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum PlayerEvaluator {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     MaterialEvaluator(MaterialEvaluator),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayerEvaluator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `now` is never used
[INFO] [stdout]   --> trainer/src/scoreboard.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl ScoreBoard {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn now(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EPS` is never used
[INFO] [stdout]   --> trainer/src/simulation.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const EPS: f64 = 0.005;
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BASE_TIME` is never used
[INFO] [stdout]   --> trainer/src/simulation.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const BASE_TIME: Duration = Duration::from_secs(5);
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INCREMENT_TIME` is never used
[INFO] [stdout]   --> trainer/src/simulation.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const INCREMENT_TIME: Duration = Duration::from_millis(5);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimeControl` is never constructed
[INFO] [stdout]   --> trainer/src/simulation.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct TimeControl {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> trainer/src/simulation.rs:44:18
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl TimeControl {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 44 |     pub const fn new(base: Duration, increment: Duration) -> TimeControl {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Evaluator`
[INFO] [stdout]   --> trainer/src/main.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | use pp0::{Evaluator, STATIC_EVAL, SearchLimit};
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_limit`
[INFO] [stdout]   --> trainer/src/scoreboard.rs:57:36
[INFO] [stdout]    |
[INFO] [stdout] 57 |             pp0::SearchLimit::Time(time_limit) => self.p1_identifier = format!("{} ", p1_string,),
[INFO] [stdout]    |                                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_limit`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_limit`
[INFO] [stdout]   --> trainer/src/scoreboard.rs:63:36
[INFO] [stdout]    |
[INFO] [stdout] 63 |             pp0::SearchLimit::Time(time_limit) => self.p2_identifier = format!("{} ", p2_string,),
[INFO] [stdout]    |                                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> trainer/src/main.rs:132:9
[INFO] [stdout]     |
[INFO] [stdout] 132 |     let mut net_ident: String = String::from_str("Net").unwrap();
[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: variable does not need to be mutable
[INFO] [stdout]    --> trainer/src/main.rs:133:9
[INFO] [stdout]     |
[INFO] [stdout] 133 |     let mut mat_eval_ident: String = String::from_str("Material Eval").unwrap();
[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]    --> trainer/src/main.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut static_eval_ident: String = String::from_str("Static Eval").unwrap();
[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]    --> trainer/src/main.rs:346:49
[INFO] [stdout]     |
[INFO] [stdout] 346 | ...                   let mut file = File::create(ENM_FILENAME)?;
[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]    --> trainer/src/main.rs:365:37
[INFO] [stdout]     |
[INFO] [stdout] 365 | ...                   let mut file = File::create(ENM_FILENAME)?;
[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]    --> trainer/src/main.rs:405:45
[INFO] [stdout]     |
[INFO] [stdout] 405 | ...                   let mut file = File::create(ENM_FILENAME)?;
[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]    --> trainer/src/main.rs:423:33
[INFO] [stdout]     |
[INFO] [stdout] 423 | ...                   let mut file = File::create(ENM_FILENAME)?;
[INFO] [stdout]     |                           ----^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `network`
[INFO] [stdout]    --> trainer/src/main.rs:294:42
[INFO] [stdout]     |
[INFO] [stdout] 294 |                 PlayerEvaluator::Network(network) => &net_ident,
[INFO] [stdout]     |                                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_network`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `static_evaluator`
[INFO] [stdout]    --> trainer/src/main.rs:295:45
[INFO] [stdout]     |
[INFO] [stdout] 295 |                 PlayerEvaluator::StaticEval(static_evaluator) => &static_eval_ident,
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named struct `StaticEvaluator`
[INFO] [stdout]     |
[INFO] [stdout] 295 -                 PlayerEvaluator::StaticEval(static_evaluator) => &static_eval_ident,
[INFO] [stdout] 295 +                 PlayerEvaluator::StaticEval(pp0::StaticEvaluator) => &static_eval_ident,
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 295 |                 PlayerEvaluator::StaticEval(_static_evaluator) => &static_eval_ident,
[INFO] [stdout]     |                                             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `material_evaluator`
[INFO] [stdout]    --> trainer/src/main.rs:296:52
[INFO] [stdout]     |
[INFO] [stdout] 296 |                 PlayerEvaluator::MaterialEvaluator(material_evaluator) => &mat_eval_ident,
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named struct `MaterialEvaluator`
[INFO] [stdout]     |
[INFO] [stdout] 296 -                 PlayerEvaluator::MaterialEvaluator(material_evaluator) => &mat_eval_ident,
[INFO] [stdout] 296 +                 PlayerEvaluator::MaterialEvaluator(pp0::MaterialEvaluator) => &mat_eval_ident,
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 296 |                 PlayerEvaluator::MaterialEvaluator(_material_evaluator) => &mat_eval_ident,
[INFO] [stdout]     |                                                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENM_START_DEPTH` is never used
[INFO] [stdout]   --> trainer/src/main.rs:62:7
[INFO] [stdout]    |
[INFO] [stdout] 62 | const ENM_START_DEPTH: usize = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_FILENAME` is never used
[INFO] [stdout]   --> trainer/src/main.rs:69:7
[INFO] [stdout]    |
[INFO] [stdout] 69 | const DEBUG_FILENAME: &str = "debug.txt";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_COLLECT_HISTORY` is never used
[INFO] [stdout]    --> trainer/src/main.rs:111:7
[INFO] [stdout]     |
[INFO] [stdout] 111 | const DEBUG_COLLECT_HISTORY: bool = true;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_GAMES_TOTAL` is never used
[INFO] [stdout]    --> trainer/src/main.rs:112:7
[INFO] [stdout]     |
[INFO] [stdout] 112 | const DEBUG_GAMES_TOTAL: usize = 5;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEBUG_GAMES_COLLECTED` is never used
[INFO] [stdout]    --> trainer/src/main.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | static DEBUG_GAMES_COLLECTED: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DEBUG_GRADIENT_COLLECTED` is never used
[INFO] [stdout]    --> trainer/src/main.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | static DEBUG_GRADIENT_COLLECTED: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sgd` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn sgd(net: &mut Network, results: Vec<MatchResult>) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRADIENT_MINIBATCH` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:48:7
[INFO] [stdout]    |
[INFO] [stdout] 48 | const GRADIENT_MINIBATCH: usize = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_GRADIENT_THREAD_COUNT` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const MAX_GRADIENT_THREAD_COUNT: usize = 24;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `INSTANCE_COUNT` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | static INSTANCE_COUNT: AtomicU8 = AtomicU8::new(0);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRADIENT_LOOP_COUNT_CHECK_LIMIT` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const GRADIENT_LOOP_COUNT_CHECK_LIMIT: usize = 2048 * 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adam` is never used
[INFO] [stdout]   --> trainer/src/adam.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn adam(net: &mut Network, results: Vec<MatchResult>, beta1: f32, beta2: f32, m: &mut Gradient, v: &mut Gradient) -> io::Result<()> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> trainer/src/player.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Player {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(evaluator: PlayerEvaluator, search_limit: SearchLimit) -> Player {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MaterialEvaluator` is never constructed
[INFO] [stdout]   --> trainer/src/player.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum PlayerEvaluator {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     MaterialEvaluator(MaterialEvaluator),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayerEvaluator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `now` is never used
[INFO] [stdout]   --> trainer/src/scoreboard.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl ScoreBoard {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn now(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EPS` is never used
[INFO] [stdout]   --> trainer/src/simulation.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const EPS: f64 = 0.005;
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BASE_TIME` is never used
[INFO] [stdout]   --> trainer/src/simulation.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const BASE_TIME: Duration = Duration::from_secs(5);
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INCREMENT_TIME` is never used
[INFO] [stdout]   --> trainer/src/simulation.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const INCREMENT_TIME: Duration = Duration::from_millis(5);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimeControl` is never constructed
[INFO] [stdout]   --> trainer/src/simulation.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct TimeControl {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> trainer/src/simulation.rs:44:18
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl TimeControl {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 44 |     pub const fn new(base: Duration, increment: Duration) -> TimeControl {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [optimized + debuginfo] target(s) in 41.73s
[INFO] running `Command { std: "docker" "inspect" "a66cc78c60aa2be9e358825c016ed8917de94003325aa5e8bd39780bad56d2c0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a66cc78c60aa2be9e358825c016ed8917de94003325aa5e8bd39780bad56d2c0", kill_on_drop: false }`
[INFO] [stdout] a66cc78c60aa2be9e358825c016ed8917de94003325aa5e8bd39780bad56d2c0
