[INFO] cloning repository https://github.com/mgeo99/cfr
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mgeo99/cfr" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmgeo99%2Fcfr", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmgeo99%2Fcfr'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c258b3bcf63254c1159ce84f847abe05e6ac3584
[INFO] checking mgeo99/cfr against try#b1f2594eac607c1f051534800237eeedb5590a49 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmgeo99%2Fcfr" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/mgeo99/cfr
[INFO] finished tweaking git repo https://github.com/mgeo99/cfr
[INFO] tweaked toml for git repo https://github.com/mgeo99/cfr written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/mgeo99/cfr on toolchain b1f2594eac607c1f051534800237eeedb5590a49
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/mgeo99/cfr 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" "+b1f2594eac607c1f051534800237eeedb5590a49" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b65c83653d890a15cc98dffe59b97017f795f6c8a6f34fca9d9e9b2407d62161
[INFO] running `Command { std: "docker" "start" "-a" "b65c83653d890a15cc98dffe59b97017f795f6c8a6f34fca9d9e9b2407d62161", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b65c83653d890a15cc98dffe59b97017f795f6c8a6f34fca9d9e9b2407d62161", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b65c83653d890a15cc98dffe59b97017f795f6c8a6f34fca9d9e9b2407d62161", kill_on_drop: false }`
[INFO] [stdout] b65c83653d890a15cc98dffe59b97017f795f6c8a6f34fca9d9e9b2407d62161
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a7a60381a2e03b102e8d4820cb2d888dfb4a52bf3f51490eabd19668fd13a772
[INFO] running `Command { std: "docker" "start" "-a" "a7a60381a2e03b102e8d4820cb2d888dfb4a52bf3f51490eabd19668fd13a772", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.84
[INFO] [stderr]    Compiling serde v1.0.132
[INFO] [stderr]    Compiling strum v0.18.0
[INFO] [stderr]    Compiling libc v0.2.112
[INFO] [stderr]    Compiling quote v1.0.14
[INFO] [stderr]    Compiling futures-core v0.3.19
[INFO] [stderr]    Compiling futures-channel v0.3.19
[INFO] [stderr]    Compiling futures-task v0.3.19
[INFO] [stderr]    Compiling futures-util v0.3.19
[INFO] [stderr]     Checking futures-sink v0.3.19
[INFO] [stderr]     Checking futures-io v0.3.19
[INFO] [stderr]    Compiling anyhow v1.0.52
[INFO] [stderr]    Compiling either v1.6.1
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling itertools v0.9.0
[INFO] [stderr]    Compiling serde_derive v1.0.132
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking getrandom v0.2.3
[INFO] [stderr]    Compiling gio v0.9.1
[INFO] [stderr]     Checking rand_core v0.6.3
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling gdk-pixbuf v0.9.0
[INFO] [stderr]    Compiling cairo-rs v0.9.1
[INFO] [stderr]    Compiling pango v0.9.1
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling gdk v0.13.2
[INFO] [stderr]    Compiling atk v0.9.0
[INFO] [stderr]     Checking unicode-xid v0.1.0
[INFO] [stderr]     Checking rand v0.8.4
[INFO] [stderr]     Checking crossbeam-epoch v0.9.5
[INFO] [stderr]     Checking matrixmultiply v0.3.2
[INFO] [stderr]     Checking num-complex v0.4.0
[INFO] [stderr]    Compiling gtk v0.9.2
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]     Checking quote v0.6.13
[INFO] [stderr]     Checking crossbeam-deque v0.8.1
[INFO] [stderr]     Checking num_cpus v1.13.1
[INFO] [stderr]    Compiling fst v0.4.7
[INFO] [stderr]    Compiling serde_json v1.0.73
[INFO] [stderr]     Checking itertools v0.10.3
[INFO] [stderr]     Checking rayon-core v1.9.1
[INFO] [stderr]     Checking noisy_float v0.2.0
[INFO] [stderr]     Checking rand_distr v0.4.2
[INFO] [stderr]     Checking text_io v0.1.9
[INFO] [stderr]     Checking rayon v1.5.1
[INFO] [stderr]    Compiling toml v0.5.8
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling proc-macro-crate v0.1.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.30
[INFO] [stderr]    Compiling strum_macros v0.18.0
[INFO] [stderr]    Compiling futures-macro v0.3.19
[INFO] [stderr]    Compiling glib-macros v0.10.1
[INFO] [stderr]    Compiling relm-derive v0.22.0
[INFO] [stderr]    Compiling thiserror v1.0.30
[INFO] [stderr]    Compiling system-deps v1.3.2
[INFO] [stderr]    Compiling glib-sys v0.10.1
[INFO] [stderr]    Compiling gobject-sys v0.10.0
[INFO] [stderr]    Compiling gio-sys v0.10.1
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.10.0
[INFO] [stderr]    Compiling cairo-sys-rs v0.10.0
[INFO] [stderr]    Compiling pango-sys v0.10.0
[INFO] [stderr]    Compiling atk-sys v0.10.0
[INFO] [stderr]    Compiling gdk-sys v0.10.0
[INFO] [stderr]    Compiling gtk-sys v0.10.0
[INFO] [stderr]     Checking futures-executor v0.3.19
[INFO] [stderr]     Checking glib v0.10.3
[INFO] [stderr]     Checking futures v0.3.19
[INFO] [stderr]     Checking ndarray v0.15.4
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking ndarray-rand v0.14.0
[INFO] [stderr]     Checking ndarray-stats v0.5.0
[INFO] [stderr]     Checking relm v0.20.0
[INFO] [stderr]     Checking cfr v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[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: `cfr::node::StateNode`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cfr::node::StateNode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Direction` and `Position`
[INFO] [stdout]   --> src/main.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use scrabble::util::{Direction, Position};
[INFO] [stdout]    |                      ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::serialization`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use utils::serialization;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scrabble::bag::Bag`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::scrabble::bag::Bag;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scrabble::board::ScrabbleBoard`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::scrabble::board::ScrabbleBoard;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scrabble::rack::Rack`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::scrabble::rack::Rack;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveGrid` and `ScrabbleState`
[INFO] [stdout]   --> src/main.rs:20:30
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::scrabble::state::{MoveGrid, ScrabbleGame, ScrabbleState};
[INFO] [stdout]    |                              ^^^^^^^^                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scrabble::util::Letter`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::scrabble::util::Letter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Uniform`
[INFO] [stdout]  --> src/cfr/solvers/outcome_sampling.rs:7:46
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ndarray_rand::rand_distr::{Distribution, Uniform, WeightedIndex};
[INFO] [stdout]   |                                              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/cfr/trainer.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::utils::{self, serialization};
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::constraint::ConstraintQuery`
[INFO] [stdout]   --> src/scrabble/board.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::constraint::ConstraintQuery;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GestureExt` and `Stack`
[INFO] [stdout]   --> src/scrabble/ui/scrabble_ui.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     GestureExt,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     Stack,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/scrabble/util.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeSet`
[INFO] [stdout]  --> src/scrabble/vocab.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::BTreeSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/scrabble/vocab.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead` and `BufReader`
[INFO] [stdout]  --> src/scrabble/vocab.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufRead, BufReader};
[INFO] [stdout]   |               ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/scrabble/vocab.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::BOARD_SIZE`
[INFO] [stdout]  --> src/scrabble/vocab.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::BOARD_SIZE;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[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: `cfr::node::StateNode`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cfr::node::StateNode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Direction` and `Position`
[INFO] [stdout]   --> src/main.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use scrabble::util::{Direction, Position};
[INFO] [stdout]    |                      ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::serialization`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use utils::serialization;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scrabble::bag::Bag`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::scrabble::bag::Bag;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scrabble::board::ScrabbleBoard`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::scrabble::board::ScrabbleBoard;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scrabble::rack::Rack`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::scrabble::rack::Rack;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveGrid` and `ScrabbleState`
[INFO] [stdout]   --> src/main.rs:20:30
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::scrabble::state::{MoveGrid, ScrabbleGame, ScrabbleState};
[INFO] [stdout]    |                              ^^^^^^^^                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scrabble::util::Letter`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::scrabble::util::Letter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Uniform`
[INFO] [stdout]  --> src/cfr/solvers/outcome_sampling.rs:7:46
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ndarray_rand::rand_distr::{Distribution, Uniform, WeightedIndex};
[INFO] [stdout]   |                                              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/cfr/trainer.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::utils::{self, serialization};
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::constraint::ConstraintQuery`
[INFO] [stdout]   --> src/scrabble/board.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::constraint::ConstraintQuery;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GestureExt` and `Stack`
[INFO] [stdout]   --> src/scrabble/ui/scrabble_ui.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     GestureExt,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     Stack,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/scrabble/util.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeSet`
[INFO] [stdout]  --> src/scrabble/vocab.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::BTreeSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/scrabble/vocab.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead` and `BufReader`
[INFO] [stdout]  --> src/scrabble/vocab.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufRead, BufReader};
[INFO] [stdout]   |               ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/scrabble/vocab.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::BOARD_SIZE`
[INFO] [stdout]  --> src/scrabble/vocab.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::BOARD_SIZE;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::RangeBounds`
[INFO] [stdout]  --> src/scrabble/board.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::RangeBounds;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::RangeBounds`
[INFO] [stdout]  --> src/scrabble/board.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::RangeBounds;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vocab`
[INFO] [stdout]   --> src/main.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn build_dictionary(vocab: Vec<String>) {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_vocab`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `play_tictactoe` is never used
[INFO] [stdout]   --> src/main.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn play_tictactoe() {
[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 `build_dictionary` is never used
[INFO] [stdout]   --> src/main.rs:94:4
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn build_dictionary(vocab: Vec<String>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `train_scrabble` is never used
[INFO] [stdout]   --> src/main.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn train_scrabble() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EPSILON` is never used
[INFO] [stdout]   --> src/cfr/solvers/outcome_sampling.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const EPSILON: f32 = 0.6;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REACH_CLIP` is never used
[INFO] [stdout]   --> src/cfr/solvers/outcome_sampling.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const REACH_CLIP: f32 = 1e-12;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OutcomeSamplingSolver` is never constructed
[INFO] [stdout]   --> src/cfr/solvers/outcome_sampling.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct OutcomeSamplingSolver<'a, S: GameState, A> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/cfr/solvers/outcome_sampling.rs:31:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | / impl<'a, S: GameState, A> OutcomeSamplingSolver<'a, S, A>
[INFO] [stdout]  28 | | where
[INFO] [stdout]  29 | |     A: NdFloat + Zero + SampleUniform + Default + PartialOrd + for<'b> std::ops::AddAssign<&'b A>,
[INFO] [stdout]     | |__________________________________________________________________________________________________- associated items in this implementation
[INFO] [stdout]  30 |   {
[INFO] [stdout]  31 |       pub fn new(strategies: &'a mut HashMap<S::Key, StateNode<A>>, num_actions: usize) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |       pub fn update_player_strategy(&mut self, initial_state: &S, player: usize) -> A {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |       pub fn seen_states(&self) -> usize {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |       pub fn strategies(&self) -> &HashMap<S::Key, StateNode<A>> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |       fn outcome_sampling_cfr(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |       fn sample_policy(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |       fn baseline_corrected_value(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CFRTrainer` is never constructed
[INFO] [stdout]   --> src/cfr/trainer.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct CFRTrainer<G, A>
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_strategies`, and `train` are never used
[INFO] [stdout]   --> src/cfr/trainer.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | / impl<G, A> CFRTrainer<G, A>
[INFO] [stdout] 27 | | where
[INFO] [stdout] 28 | |     G: Game,
[INFO] [stdout] 29 | |     A: NdFloat + Zero + SampleUniform + Default + PartialOrd + for<'b> std::ops::AddAssign<&'b A> + Serialize + DeserializeOwned,
[INFO] [stdout] 30 | |     <G::State as GameState>::Key: Serialize + DeserializeOwned
[INFO] [stdout]    | |______________________________________________________________- associated items in this implementation
[INFO] [stdout] 31 |   {
[INFO] [stdout] 32 |       pub fn new(game: G) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |       pub fn get_strategies(&self) -> &HashMap<<G::State as GameState>::Key, StateNode<A>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |       pub fn train(&mut self, rounds: usize, print_steps: usize, ckpt_steps: usize) {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/cfr/node.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | / impl<A> StateNode<A> 
[INFO] [stdout] 19 | | where
[INFO] [stdout] 20 | |     A: NdFloat + Zero
[INFO] [stdout]    | |_____________________- associated items in this implementation
[INFO] [stdout] 21 |   {
[INFO] [stdout] 22 |       pub fn new(num_actions: usize) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |       pub fn compute_strategy(&mut self) -> ArrayView1<A> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |       pub fn update_regret_sum(&mut self, action: usize, value: A) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |       pub fn get_regret_sum(&self, action: usize) -> A {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |       pub fn get_strategy_sum(&self, action: usize) -> A {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |       pub fn update_strategy_sum(&mut self, action: usize, value: A) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |       pub fn update_strategy_sums(&mut self, prev_strategy: ArrayView1<A>, realization_weight: A) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |       pub fn update_regrets(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |       pub fn get_strategy_for_action(&self, action: usize) -> A {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |       pub fn sample_action_greedy(&self) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `active_player`, `is_terminal`, and `get_reward` are never used
[INFO] [stdout]   --> src/cfr/state.rs:7:8
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub trait GameState: Sized {
[INFO] [stdout]    |           --------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout]  7 |     fn active_player(&self) -> usize;
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     fn is_terminal(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 17 |     /// Gets the payout for the player at this state
[INFO] [stdout] 18 |     fn get_reward(&self, player: usize) -> f32;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `num_players`, `num_actions`, and `reset` are never used
[INFO] [stdout]   --> src/cfr/state.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait Game {
[INFO] [stdout]    |           ---- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 25 |     fn num_players(&self) -> usize;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn num_actions(&self) -> usize;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn reset(&mut self);
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_file` is never used
[INFO] [stdout]   --> src/scrabble/agent.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl ScrabbleAgent {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_with_order` and `is_empty` are never used
[INFO] [stdout]   --> src/scrabble/bag.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Bag {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn new_with_order(order: &Vec<Letter>) -> Bag {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `empty` and `is_anchor` are never used
[INFO] [stdout]    --> src/scrabble/board.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl ScrabbleBoard {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  43 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn is_anchor(&self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n_actions` is never read
[INFO] [stdout]    --> src/scrabble/state.rs:272:5
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct ScrabbleGame {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 272 |     n_actions: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY` is never used
[INFO] [stdout]   --> src/scrabble/ui/scrabble_ui.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const GREY: RGBA = RGBA {
[INFO] [stdout]    |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `move_options` and `selected_move` are never read
[INFO] [stdout]   --> src/scrabble/ui/scrabble_ui.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ScrabbleUI {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     move_options: TreeView,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     selected_move: Option<usize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_center` and `adjacent` are never used
[INFO] [stdout]   --> src/scrabble/util.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Position {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_center(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn adjacent(&self) -> Vec<Position> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_index` is never used
[INFO] [stdout]    --> src/scrabble/util.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 240 | impl Letter {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] 241 |     pub fn as_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DoubleWord` is never constructed
[INFO] [stdout]    --> src/scrabble/util.rs:260:5
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub enum SquareEffect {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 260 |     DoubleWord,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SquareEffect` 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: static `SEP` is never used
[INFO] [stdout]   --> src/scrabble/gaddag.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static SEP: u8 = ',' as u8;
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SEP_STR` is never used
[INFO] [stdout]   --> src/scrabble/gaddag.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static SEP_STR: &str = ",";
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_word_file` is never used
[INFO] [stdout]   --> src/scrabble/gaddag.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn read_word_file<P: AsRef<Path>>(path: P) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_entries_sorted` is never used
[INFO] [stdout]   --> src/scrabble/gaddag.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn build_entries_sorted<P: AsRef<Path>>(vocab_path: P) -> BTreeSet<Vec<u8>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Gaddag` is never constructed
[INFO] [stdout]   --> src/scrabble/gaddag.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct Gaddag {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `build_from_file`, `find_suffixes`, `find_prefixes`, `search_fst`, and `demangle_item` are never used
[INFO] [stdout]    --> src/scrabble/gaddag.rs:78:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Gaddag {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  78 |     pub fn build_from_file<P: AsRef<Path>>(vocab_path: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn find_suffixes(&self, text: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn find_prefixes(&self, input: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn search_fst<A: Automaton>(&self, matcher: A) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn demangle_item(item: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_many` and `count` are never used
[INFO] [stdout]   --> src/scrabble/constraint/letter_set.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl LetterSet {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn from_many(iter: impl Iterator<Item = char>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn count(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vocab`
[INFO] [stdout]   --> src/main.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn build_dictionary(vocab: Vec<String>) {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_vocab`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `play_tictactoe` is never used
[INFO] [stdout]   --> src/main.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn play_tictactoe() {
[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 `build_dictionary` is never used
[INFO] [stdout]   --> src/main.rs:94:4
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn build_dictionary(vocab: Vec<String>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `train_scrabble` is never used
[INFO] [stdout]   --> src/main.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn train_scrabble() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EPSILON` is never used
[INFO] [stdout]   --> src/cfr/solvers/outcome_sampling.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const EPSILON: f32 = 0.6;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REACH_CLIP` is never used
[INFO] [stdout]   --> src/cfr/solvers/outcome_sampling.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const REACH_CLIP: f32 = 1e-12;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TicTacToeState` is never constructed
[INFO] [stdout]  --> src/tictactoe/mod.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TicTacToeState {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OutcomeSamplingSolver` is never constructed
[INFO] [stdout]   --> src/cfr/solvers/outcome_sampling.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct OutcomeSamplingSolver<'a, S: GameState, A> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/cfr/solvers/outcome_sampling.rs:31:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | / impl<'a, S: GameState, A> OutcomeSamplingSolver<'a, S, A>
[INFO] [stdout]  28 | | where
[INFO] [stdout]  29 | |     A: NdFloat + Zero + SampleUniform + Default + PartialOrd + for<'b> std::ops::AddAssign<&'b A>,
[INFO] [stdout]     | |__________________________________________________________________________________________________- associated items in this implementation
[INFO] [stdout]  30 |   {
[INFO] [stdout]  31 |       pub fn new(strategies: &'a mut HashMap<S::Key, StateNode<A>>, num_actions: usize) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |       pub fn update_player_strategy(&mut self, initial_state: &S, player: usize) -> A {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |       pub fn seen_states(&self) -> usize {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |       pub fn strategies(&self) -> &HashMap<S::Key, StateNode<A>> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |       fn outcome_sampling_cfr(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |       fn sample_policy(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |       fn baseline_corrected_value(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CFRTrainer` is never constructed
[INFO] [stdout]   --> src/cfr/trainer.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct CFRTrainer<G, A>
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `display_board`, `is_full`, `get_winner`, and `all_same` are never used
[INFO] [stdout]   --> src/tictactoe/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl TicTacToeState {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] 10 |     pub fn display_board(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn is_full(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn get_winner(&self) -> Option<usize> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn all_same(&self, start: (usize, usize), dir: (i32, i32)) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_strategies`, and `train` are never used
[INFO] [stdout]   --> src/cfr/trainer.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | / impl<G, A> CFRTrainer<G, A>
[INFO] [stdout] 27 | | where
[INFO] [stdout] 28 | |     G: Game,
[INFO] [stdout] 29 | |     A: NdFloat + Zero + SampleUniform + Default + PartialOrd + for<'b> std::ops::AddAssign<&'b A> + Serialize + DeserializeOwned,
[INFO] [stdout] 30 | |     <G::State as GameState>::Key: Serialize + DeserializeOwned
[INFO] [stdout]    | |______________________________________________________________- associated items in this implementation
[INFO] [stdout] 31 |   {
[INFO] [stdout] 32 |       pub fn new(game: G) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |       pub fn get_strategies(&self) -> &HashMap<<G::State as GameState>::Key, StateNode<A>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |       pub fn train(&mut self, rounds: usize, print_steps: usize, ckpt_steps: usize) {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/cfr/node.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | / impl<A> StateNode<A> 
[INFO] [stdout] 19 | | where
[INFO] [stdout] 20 | |     A: NdFloat + Zero
[INFO] [stdout]    | |_____________________- associated items in this implementation
[INFO] [stdout] 21 |   {
[INFO] [stdout] 22 |       pub fn new(num_actions: usize) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |       pub fn compute_strategy(&mut self) -> ArrayView1<A> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |       pub fn update_regret_sum(&mut self, action: usize, value: A) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |       pub fn get_regret_sum(&self, action: usize) -> A {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |       pub fn get_strategy_sum(&self, action: usize) -> A {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |       pub fn update_strategy_sum(&mut self, action: usize, value: A) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |       pub fn update_strategy_sums(&mut self, prev_strategy: ArrayView1<A>, realization_weight: A) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |       pub fn update_regrets(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |       pub fn get_strategy_for_action(&self, action: usize) -> A {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |       pub fn sample_action_greedy(&self) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `num_players`, `num_actions`, and `reset` are never used
[INFO] [stdout]   --> src/cfr/state.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait Game {
[INFO] [stdout]    |           ---- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 25 |     fn num_players(&self) -> usize;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn num_actions(&self) -> usize;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn reset(&mut self);
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_file` is never used
[INFO] [stdout]   --> src/scrabble/agent.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl ScrabbleAgent {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TicTacToe` is never constructed
[INFO] [stdout]    --> src/tictactoe/mod.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub struct TicTacToe {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/tictactoe/mod.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl TicTacToe {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 182 |     pub fn new(board_dim: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_with_order` and `is_empty` are never used
[INFO] [stdout]   --> src/scrabble/bag.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Bag {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn new_with_order(order: &Vec<Letter>) -> Bag {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_bytes` is never used
[INFO] [stdout]   --> src/utils/serialization.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn serialize_bytes<T: Serialize>(data: &T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deserialize_bytes` is never used
[INFO] [stdout]   --> src/utils/serialization.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn deserialize_bytes<T: DeserializeOwned>(bytes: &[u8]) -> T {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `empty` and `is_anchor` are never used
[INFO] [stdout]    --> src/scrabble/board.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl ScrabbleBoard {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  43 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn is_anchor(&self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_to_disk` is never used
[INFO] [stdout]   --> src/utils/serialization.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn save_to_disk<T: Serialize, TPath: AsRef<Path>>(data: &T, path: TPath) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n_actions` is never read
[INFO] [stdout]    --> src/scrabble/state.rs:272:5
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct ScrabbleGame {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 272 |     n_actions: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_from_disk` is never used
[INFO] [stdout]   --> src/utils/serialization.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn load_from_disk<T: DeserializeOwned, TPath: AsRef<Path>>(path: TPath) -> T {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY` is never used
[INFO] [stdout]   --> src/scrabble/ui/scrabble_ui.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const GREY: RGBA = RGBA {
[INFO] [stdout]    |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `move_options` and `selected_move` are never read
[INFO] [stdout]   --> src/scrabble/ui/scrabble_ui.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ScrabbleUI {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     move_options: TreeView,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     selected_move: Option<usize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/cfr/node.rs:31:29
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn compute_strategy(&mut self) -> ArrayView1<A> {
[INFO] [stdout]    |                             ^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn compute_strategy(&mut self) -> ArrayView1<'_, A> {
[INFO] [stdout]    |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_center` and `adjacent` are never used
[INFO] [stdout]   --> src/scrabble/util.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Position {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_center(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn adjacent(&self) -> Vec<Position> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_index` is never used
[INFO] [stdout]    --> src/scrabble/util.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 240 | impl Letter {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] 241 |     pub fn as_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DoubleWord` is never constructed
[INFO] [stdout]    --> src/scrabble/util.rs:260:5
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub enum SquareEffect {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 260 |     DoubleWord,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SquareEffect` 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: static `SEP` is never used
[INFO] [stdout]   --> src/scrabble/gaddag.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static SEP: u8 = ',' as u8;
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scrabble/util.rs:207:17
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn iter(&self) -> IterMove {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn iter(&self) -> IterMove<'_> {
[INFO] [stdout]     |                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SEP_STR` is never used
[INFO] [stdout]   --> src/scrabble/gaddag.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static SEP_STR: &str = ",";
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_word_file` is never used
[INFO] [stdout]   --> src/scrabble/gaddag.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn read_word_file<P: AsRef<Path>>(path: P) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_entries_sorted` is never used
[INFO] [stdout]   --> src/scrabble/gaddag.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn build_entries_sorted<P: AsRef<Path>>(vocab_path: P) -> BTreeSet<Vec<u8>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Gaddag` is never constructed
[INFO] [stdout]   --> src/scrabble/gaddag.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct Gaddag {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `build_from_file`, `find_suffixes`, `find_prefixes`, `search_fst`, and `demangle_item` are never used
[INFO] [stdout]    --> src/scrabble/gaddag.rs:78:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Gaddag {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  78 |     pub fn build_from_file<P: AsRef<Path>>(vocab_path: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn find_suffixes(&self, text: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn find_prefixes(&self, input: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn search_fst<A: Automaton>(&self, matcher: A) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn demangle_item(item: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_many` and `count` are never used
[INFO] [stdout]   --> src/scrabble/constraint/letter_set.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl LetterSet {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn from_many(iter: impl Iterator<Item = char>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn count(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display_board` is never used
[INFO] [stdout]   --> src/tictactoe/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl TicTacToeState {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 10 |     pub fn display_board(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TicTacToe` is never constructed
[INFO] [stdout]    --> src/tictactoe/mod.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub struct TicTacToe {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/tictactoe/mod.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl TicTacToe {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 182 |     pub fn new(board_dim: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_bytes` is never used
[INFO] [stdout]   --> src/utils/serialization.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn serialize_bytes<T: Serialize>(data: &T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deserialize_bytes` is never used
[INFO] [stdout]   --> src/utils/serialization.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn deserialize_bytes<T: DeserializeOwned>(bytes: &[u8]) -> T {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_to_disk` is never used
[INFO] [stdout]   --> src/utils/serialization.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn save_to_disk<T: Serialize, TPath: AsRef<Path>>(data: &T, path: TPath) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_from_disk` is never used
[INFO] [stdout]   --> src/utils/serialization.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn load_from_disk<T: DeserializeOwned, TPath: AsRef<Path>>(path: TPath) -> T {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/cfr/node.rs:31:29
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn compute_strategy(&mut self) -> ArrayView1<A> {
[INFO] [stdout]    |                             ^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn compute_strategy(&mut self) -> ArrayView1<'_, A> {
[INFO] [stdout]    |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scrabble/util.rs:207:17
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn iter(&self) -> IterMove {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn iter(&self) -> IterMove<'_> {
[INFO] [stdout]     |                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scrabble/constraint/grid.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub fn compute_queries(&self) -> Vec<ConstraintQuery> {
[INFO] [stdout]     |                            ^^^^^         ^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub fn compute_queries(&self) -> Vec<ConstraintQuery<'_>> {
[INFO] [stdout]     |                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scrabble/constraint/grid.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub fn compute_queries(&self) -> Vec<ConstraintQuery> {
[INFO] [stdout]     |                            ^^^^^         ^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub fn compute_queries(&self) -> Vec<ConstraintQuery<'_>> {
[INFO] [stdout]     |                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 28s
[INFO] running `Command { std: "docker" "inspect" "a7a60381a2e03b102e8d4820cb2d888dfb4a52bf3f51490eabd19668fd13a772", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a7a60381a2e03b102e8d4820cb2d888dfb4a52bf3f51490eabd19668fd13a772", kill_on_drop: false }`
[INFO] [stdout] a7a60381a2e03b102e8d4820cb2d888dfb4a52bf3f51490eabd19668fd13a772
