[INFO] cloning repository https://github.com/hchen13/poker-gto-engine
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hchen13/poker-gto-engine" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhchen13%2Fpoker-gto-engine", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhchen13%2Fpoker-gto-engine'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 46f4a01694c0ec870c0a0a6fd4fb79cfa03735cf
[INFO] testing hchen13/poker-gto-engine/46f4a01694c0ec870c0a0a6fd4fb79cfa03735cf against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhchen13%2Fpoker-gto-engine" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-0-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/hchen13/poker-gto-engine
[INFO] finished tweaking git repo https://github.com/hchen13/poker-gto-engine
[INFO] tweaked toml for git repo https://github.com/hchen13/poker-gto-engine written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hchen13/poker-gto-engine on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hchen13/poker-gto-engine already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489
[INFO] running `Command { std: "docker" "start" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling safe_arch v0.7.4
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling wide v0.7.33
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling poker_gto_engine v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/nlhe/bucket_cfr_river.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | 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: `Path`
[INFO] [stdout]   --> src/nlhe/cache.rs:16:17
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShowdownKey`
[INFO] [stdout]   --> src/nlhe/preflop_cfr.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::tree::{Node, walk_nodes, ShowdownKey};
[INFO] [stdout]    |                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/nlhe/preflop_equity.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/nlhe/range_derive.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Action`
[INFO] [stdout]   --> src/nlhe/range_derive.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::tree::{Action, Node};
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/nlhe/preflop_tree.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let mut new_stacks = stacks;
[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: fields `n_actions` and `player` are never read
[INFO] [stdout]    --> src/nlhe/cfr.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | struct NodeMeta {
[INFO] [stdout]     |        -------- fields in this struct
[INFO] [stdout] 117 |     n_actions: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 118 |     player: i8,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeMeta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `decision_nodes` is never read
[INFO] [stdout]    --> src/nlhe/cfr.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct SolverState<'a> {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 132 |     decision_nodes: Vec<NodeMeta>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expand_showdowns_to_turn_chance` is never used
[INFO] [stdout]    --> src/nlhe/tree.rs:521:4
[INFO] [stdout]     |
[INFO] [stdout] 521 | fn expand_showdowns_to_turn_chance(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/bin/precompute_bucketed.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | 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: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/precompute_bucketed.rs:18:64
[INFO] [stdout]    |
[INFO] [stdout] 18 | use poker_gto_engine::nlhe::cards::{card_to_string, NUM_CARDS, NUM_COMBOS};
[INFO] [stdout]    |                                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/precompute_bucketed_parallel.rs:21:77
[INFO] [stdout]    |
[INFO] [stdout] 21 | use poker_gto_engine::nlhe::cards::{card_to_string, combo_label, NUM_CARDS, NUM_COMBOS};
[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: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/patch_villain_buckets.rs:19:65
[INFO] [stdout]    |
[INFO] [stdout] 19 | use poker_gto_engine::nlhe::cards::{card_from_str, combo_label, NUM_COMBOS};
[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: `Serialize`
[INFO] [stdout]   --> src/bin/patch_villain_buckets.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `combo_cards`
[INFO] [stdout]   --> src/bin/precompute.rs:20:37
[INFO] [stdout]    |
[INFO] [stdout] 20 | use poker_gto_engine::nlhe::cards::{combo_cards, NUM_CARDS, NUM_COMBOS};
[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: `Node`
[INFO] [stdout]   --> src/bin/precompute.rs:27:99
[INFO] [stdout]    |
[INFO] [stdout] 27 | use poker_gto_engine::nlhe::tree::{build_flop_tree_subset, count_decision_nodes, count_terminals, Node};
[INFO] [stdout]    |                                                                                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/patch_bucket_arrays.rs:18:63
[INFO] [stdout]    |
[INFO] [stdout] 18 | use poker_gto_engine::nlhe::cards::{card_from_str, NUM_CARDS, NUM_COMBOS};
[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: `exploitability_multi` and `exploitability_river`
[INFO] [stdout]   --> src/bin/solve.rs:27:59
[INFO] [stdout]    |
[INFO] [stdout] 27 |     best_response_value_multi, best_response_value_river, exploitability_multi, exploitability_river,
[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: `ShowdownTable`
[INFO] [stdout]   --> src/bin/solve.rs:35:64
[INFO] [stdout]    |
[INFO] [stdout] 35 | use poker_gto_engine::nlhe::showdown::{compute_showdown_table, ShowdownTable};
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `combo_cards`
[INFO] [stdout]  --> src/bin/inspect_preflop_lines.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use poker_gto_engine::nlhe::cards::{combo_cards, NUM_COMBOS};
[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: `Action`
[INFO] [stdout]  --> src/bin/inspect_preflop_lines.rs:9:36
[INFO] [stdout]   |
[INFO] [stdout] 9 | use poker_gto_engine::nlhe::tree::{Action, Node};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weights`
[INFO] [stdout]   --> src/bin/solve_river_subgame.rs:85:38
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn ehs_range_per_bucket(ehs: &[f32], weights: &[f32], k: usize, bucket_of_combo: &[i8]) -> Vec<[f32; 2]> {
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_weights`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `description` is never read
[INFO] [stdout]   --> src/bin/precompute_bucketed_parallel.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct ActionLine {
[INFO] [stdout]    |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActionLine` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.55s
[INFO] running `Command { std: "docker" "inspect" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/nlhe/bucket_cfr_river.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | 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: `Path`
[INFO] [stdout]   --> src/nlhe/cache.rs:16:17
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling poker_gto_engine v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `ShowdownKey`
[INFO] [stdout]   --> src/nlhe/preflop_cfr.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::tree::{Node, walk_nodes, ShowdownKey};
[INFO] [stdout]    |                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/nlhe/preflop_equity.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/nlhe/range_derive.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Action`
[INFO] [stdout]   --> src/nlhe/range_derive.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::tree::{Action, Node};
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/nlhe/preflop_tree.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let mut new_stacks = stacks;
[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: fields `n_actions` and `player` are never read
[INFO] [stdout]    --> src/nlhe/cfr.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | struct NodeMeta {
[INFO] [stdout]     |        -------- fields in this struct
[INFO] [stdout] 117 |     n_actions: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 118 |     player: i8,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeMeta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `decision_nodes` is never read
[INFO] [stdout]    --> src/nlhe/cfr.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct SolverState<'a> {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 132 |     decision_nodes: Vec<NodeMeta>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expand_showdowns_to_turn_chance` is never used
[INFO] [stdout]    --> src/nlhe/tree.rs:521:4
[INFO] [stdout]     |
[INFO] [stdout] 521 | fn expand_showdowns_to_turn_chance(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `exploitability_multi` and `exploitability_river`
[INFO] [stdout]   --> src/bin/solve.rs:27:59
[INFO] [stdout]    |
[INFO] [stdout] 27 |     best_response_value_multi, best_response_value_river, exploitability_multi, exploitability_river,
[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: `ShowdownTable`
[INFO] [stdout]   --> src/bin/solve.rs:35:64
[INFO] [stdout]    |
[INFO] [stdout] 35 | use poker_gto_engine::nlhe::showdown::{compute_showdown_table, ShowdownTable};
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weights`
[INFO] [stdout]   --> src/bin/solve_river_subgame.rs:85:38
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn ehs_range_per_bucket(ehs: &[f32], weights: &[f32], k: usize, bucket_of_combo: &[i8]) -> Vec<[f32; 2]> {
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_weights`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `combo_cards`
[INFO] [stdout]  --> src/bin/inspect_preflop_lines.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use poker_gto_engine::nlhe::cards::{combo_cards, NUM_COMBOS};
[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: `Action`
[INFO] [stdout]  --> src/bin/inspect_preflop_lines.rs:9:36
[INFO] [stdout]   |
[INFO] [stdout] 9 | use poker_gto_engine::nlhe::tree::{Action, Node};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/precompute_bucketed_parallel.rs:21:77
[INFO] [stdout]    |
[INFO] [stdout] 21 | use poker_gto_engine::nlhe::cards::{card_to_string, combo_label, NUM_CARDS, NUM_COMBOS};
[INFO] [stdout]    |                                                                             ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `description` is never read
[INFO] [stdout]   --> src/bin/precompute_bucketed_parallel.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct ActionLine {
[INFO] [stdout]    |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActionLine` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/patch_bucket_arrays.rs:18:63
[INFO] [stdout]    |
[INFO] [stdout] 18 | use poker_gto_engine::nlhe::cards::{card_from_str, NUM_CARDS, NUM_COMBOS};
[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::collections::HashMap`
[INFO] [stdout]  --> src/bin/precompute_bucketed.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | 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: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/precompute_bucketed.rs:18:64
[INFO] [stdout]    |
[INFO] [stdout] 18 | use poker_gto_engine::nlhe::cards::{card_to_string, NUM_CARDS, NUM_COMBOS};
[INFO] [stdout]    |                                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/patch_villain_buckets.rs:19:65
[INFO] [stdout]    |
[INFO] [stdout] 19 | use poker_gto_engine::nlhe::cards::{card_from_str, combo_label, NUM_COMBOS};
[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: `Serialize`
[INFO] [stdout]   --> src/bin/patch_villain_buckets.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/patch_bucket_arrays.rs:18:63
[INFO] [stdout]    |
[INFO] [stdout] 18 | use poker_gto_engine::nlhe::cards::{card_from_str, NUM_CARDS, NUM_COMBOS};
[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: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/precompute_bucketed_parallel.rs:21:77
[INFO] [stdout]    |
[INFO] [stdout] 21 | use poker_gto_engine::nlhe::cards::{card_to_string, combo_label, NUM_CARDS, NUM_COMBOS};
[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: `combo_cards`
[INFO] [stdout]   --> src/bin/precompute.rs:20:37
[INFO] [stdout]    |
[INFO] [stdout] 20 | use poker_gto_engine::nlhe::cards::{combo_cards, NUM_CARDS, NUM_COMBOS};
[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: `Node`
[INFO] [stdout]   --> src/bin/precompute.rs:27:99
[INFO] [stdout]    |
[INFO] [stdout] 27 | use poker_gto_engine::nlhe::tree::{build_flop_tree_subset, count_decision_nodes, count_terminals, Node};
[INFO] [stdout]    |                                                                                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `combo_cards`
[INFO] [stdout]  --> src/bin/inspect_preflop_lines.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use poker_gto_engine::nlhe::cards::{combo_cards, NUM_COMBOS};
[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: `Action`
[INFO] [stdout]  --> src/bin/inspect_preflop_lines.rs:9:36
[INFO] [stdout]   |
[INFO] [stdout] 9 | use poker_gto_engine::nlhe::tree::{Action, Node};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `exploitability_multi` and `exploitability_river`
[INFO] [stdout]   --> src/bin/solve.rs:27:59
[INFO] [stdout]    |
[INFO] [stdout] 27 |     best_response_value_multi, best_response_value_river, exploitability_multi, exploitability_river,
[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: `ShowdownTable`
[INFO] [stdout]   --> src/bin/solve.rs:35:64
[INFO] [stdout]    |
[INFO] [stdout] 35 | use poker_gto_engine::nlhe::showdown::{compute_showdown_table, ShowdownTable};
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weights`
[INFO] [stdout]   --> src/bin/solve_river_subgame.rs:85:38
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn ehs_range_per_bucket(ehs: &[f32], weights: &[f32], k: usize, bucket_of_combo: &[i8]) -> Vec<[f32; 2]> {
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_weights`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/nlhe/bucket_cfr_river.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | 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: `Path`
[INFO] [stdout]   --> src/nlhe/cache.rs:16:17
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NUM_COMBOS` and `combo_index`
[INFO] [stdout]    --> src/nlhe/cfr.rs:475:46
[INFO] [stdout]     |
[INFO] [stdout] 475 |     use super::super::cards::{card_from_str, combo_index, NUM_COMBOS};
[INFO] [stdout]     |                                              ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShowdownKey`
[INFO] [stdout]   --> src/nlhe/preflop_cfr.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout] 15 | use super::tree::{Node, walk_nodes, ShowdownKey};
[INFO] [stdout]    |                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/nlhe/preflop_equity.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/nlhe/range_derive.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Action`
[INFO] [stdout]   --> src/nlhe/range_derive.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::tree::{Action, Node};
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `description` is never read
[INFO] [stdout]   --> src/bin/precompute_bucketed_parallel.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct ActionLine {
[INFO] [stdout]    |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActionLine` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/bin/precompute_bucketed.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | 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: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/precompute_bucketed.rs:18:64
[INFO] [stdout]    |
[INFO] [stdout] 18 | use poker_gto_engine::nlhe::cards::{card_to_string, NUM_CARDS, NUM_COMBOS};
[INFO] [stdout]    |                                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NUM_COMBOS`
[INFO] [stdout]   --> src/bin/patch_villain_buckets.rs:19:65
[INFO] [stdout]    |
[INFO] [stdout] 19 | use poker_gto_engine::nlhe::cards::{card_from_str, combo_label, NUM_COMBOS};
[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: `Serialize`
[INFO] [stdout]   --> src/bin/patch_villain_buckets.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `combo_cards`
[INFO] [stdout]   --> src/bin/precompute.rs:20:37
[INFO] [stdout]    |
[INFO] [stdout] 20 | use poker_gto_engine::nlhe::cards::{combo_cards, NUM_CARDS, NUM_COMBOS};
[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: `Node`
[INFO] [stdout]   --> src/bin/precompute.rs:27:99
[INFO] [stdout]    |
[INFO] [stdout] 27 | use poker_gto_engine::nlhe::tree::{build_flop_tree_subset, count_decision_nodes, count_terminals, Node};
[INFO] [stdout]    |                                                                                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/nlhe/preflop_tree.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let mut new_stacks = stacks;
[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: fields `n_actions` and `player` are never read
[INFO] [stdout]    --> src/nlhe/cfr.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | struct NodeMeta {
[INFO] [stdout]     |        -------- fields in this struct
[INFO] [stdout] 117 |     n_actions: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 118 |     player: i8,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeMeta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `decision_nodes` is never read
[INFO] [stdout]    --> src/nlhe/cfr.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct SolverState<'a> {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 132 |     decision_nodes: Vec<NodeMeta>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expand_showdowns_to_turn_chance` is never used
[INFO] [stdout]    --> src/nlhe/tree.rs:521:4
[INFO] [stdout]     |
[INFO] [stdout] 521 | fn expand_showdowns_to_turn_chance(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.81s
[INFO] running `Command { std: "docker" "inspect" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/nlhe/bucket_cfr_river.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Path`
[INFO] [stderr]   --> src/nlhe/cache.rs:16:17
[INFO] [stderr]    |
[INFO] [stderr] 16 | use std::path::{Path, PathBuf};
[INFO] [stderr]    |                 ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ShowdownKey`
[INFO] [stderr]   --> src/nlhe/preflop_cfr.rs:15:37
[INFO] [stderr]    |
[INFO] [stderr] 15 | use super::tree::{Node, walk_nodes, ShowdownKey};
[INFO] [stderr]    |                                     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/nlhe/preflop_equity.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]  --> src/nlhe/range_derive.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::collections::HashMap;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Action`
[INFO] [stderr]   --> src/nlhe/range_derive.rs:12:19
[INFO] [stderr]    |
[INFO] [stderr] 12 | use super::tree::{Action, Node};
[INFO] [stderr]    |                   ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/nlhe/preflop_tree.rs:87:13
[INFO] [stderr]    |
[INFO] [stderr] 87 |         let mut new_stacks = stacks;
[INFO] [stderr]    |             ----^^^^^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `n_actions` and `player` are never read
[INFO] [stderr]    --> src/nlhe/cfr.rs:117:5
[INFO] [stderr]     |
[INFO] [stderr] 116 | struct NodeMeta {
[INFO] [stderr]     |        -------- fields in this struct
[INFO] [stderr] 117 |     n_actions: usize,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 118 |     player: i8,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `NodeMeta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `decision_nodes` is never read
[INFO] [stderr]    --> src/nlhe/cfr.rs:132:5
[INFO] [stderr]     |
[INFO] [stderr] 121 | pub struct SolverState<'a> {
[INFO] [stderr]     |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 132 |     decision_nodes: Vec<NodeMeta>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `expand_showdowns_to_turn_chance` is never used
[INFO] [stderr]    --> src/nlhe/tree.rs:521:4
[INFO] [stderr]     |
[INFO] [stderr] 521 | fn expand_showdowns_to_turn_chance(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `NUM_COMBOS` and `combo_index`
[INFO] [stderr]    --> src/nlhe/cfr.rs:475:46
[INFO] [stderr]     |
[INFO] [stderr] 475 |     use super::super::cards::{card_from_str, combo_index, NUM_COMBOS};
[INFO] [stderr]     |                                              ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `poker_gto_engine` (lib) generated 10 warnings (run `cargo fix --lib -p poker_gto_engine` to apply 7 suggestions)
[INFO] [stderr] warning: `poker_gto_engine` (lib test) generated 11 warnings (10 duplicates) (run `cargo fix --lib -p poker_gto_engine --tests` to apply 1 suggestion)
[INFO] [stderr] warning: unused import: `combo_cards`
[INFO] [stderr]   --> src/bin/precompute.rs:20:37
[INFO] [stderr]    |
[INFO] [stderr] 20 | use poker_gto_engine::nlhe::cards::{combo_cards, NUM_CARDS, NUM_COMBOS};
[INFO] [stderr]    |                                     ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Node`
[INFO] [stderr]   --> src/bin/precompute.rs:27:99
[INFO] [stderr]    |
[INFO] [stderr] 27 | use poker_gto_engine::nlhe::tree::{build_flop_tree_subset, count_decision_nodes, count_terminals, Node};
[INFO] [stderr]    |                                                                                                   ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `exploitability_multi` and `exploitability_river`
[INFO] [stderr]   --> src/bin/solve.rs:27:59
[INFO] [stderr]    |
[INFO] [stderr] 27 |     best_response_value_multi, best_response_value_river, exploitability_multi, exploitability_river,
[INFO] [stderr]    |                                                           ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ShowdownTable`
[INFO] [stderr]   --> src/bin/solve.rs:35:64
[INFO] [stderr]    |
[INFO] [stderr] 35 | use poker_gto_engine::nlhe::showdown::{compute_showdown_table, ShowdownTable};
[INFO] [stderr]    |                                                                ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `NUM_COMBOS`
[INFO] [stderr]   --> src/bin/precompute_bucketed_parallel.rs:21:77
[INFO] [stderr]    |
[INFO] [stderr] 21 | use poker_gto_engine::nlhe::cards::{card_to_string, combo_label, NUM_CARDS, NUM_COMBOS};
[INFO] [stderr]    |                                                                             ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `description` is never read
[INFO] [stderr]   --> src/bin/precompute_bucketed_parallel.rs:62:5
[INFO] [stderr]    |
[INFO] [stderr] 57 | struct ActionLine {
[INFO] [stderr]    |        ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 62 |     description: String,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ActionLine` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `NUM_COMBOS`
[INFO] [stderr]   --> src/bin/patch_villain_buckets.rs:19:65
[INFO] [stderr]    |
[INFO] [stderr] 19 | use poker_gto_engine::nlhe::cards::{card_from_str, combo_label, NUM_COMBOS};
[INFO] [stderr]    |                                                                 ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Serialize`
[INFO] [stderr]   --> src/bin/patch_villain_buckets.rs:21:26
[INFO] [stderr]    |
[INFO] [stderr] 21 | use serde::{Deserialize, Serialize};
[INFO] [stderr]    |                          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `poker_gto_engine` (bin "precompute") generated 2 warnings (run `cargo fix --bin "precompute" -p poker_gto_engine` to apply 2 suggestions)
[INFO] [stderr] warning: `poker_gto_engine` (bin "solve") generated 2 warnings (run `cargo fix --bin "solve" -p poker_gto_engine` to apply 2 suggestions)
[INFO] [stderr] warning: `poker_gto_engine` (bin "solve" test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `poker_gto_engine` (bin "precompute_bucketed_parallel") generated 2 warnings (run `cargo fix --bin "precompute_bucketed_parallel" -p poker_gto_engine` to apply 1 suggestion)
[INFO] [stderr] warning: `poker_gto_engine` (bin "patch_villain_buckets") generated 2 warnings (run `cargo fix --bin "patch_villain_buckets" -p poker_gto_engine` to apply 2 suggestions)
[INFO] [stderr] warning: unused import: `NUM_COMBOS`
[INFO] [stderr]   --> src/bin/patch_bucket_arrays.rs:18:63
[INFO] [stderr]    |
[INFO] [stderr] 18 | use poker_gto_engine::nlhe::cards::{card_from_str, NUM_CARDS, NUM_COMBOS};
[INFO] [stderr]    |                                                               ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `weights`
[INFO] [stderr]   --> src/bin/solve_river_subgame.rs:85:38
[INFO] [stderr]    |
[INFO] [stderr] 85 | fn ehs_range_per_bucket(ehs: &[f32], weights: &[f32], k: usize, bucket_of_combo: &[i8]) -> Vec<[f32; 2]> {
[INFO] [stderr]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_weights`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]  --> src/bin/precompute_bucketed.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::collections::HashMap;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `NUM_COMBOS`
[INFO] [stderr]   --> src/bin/precompute_bucketed.rs:18:64
[INFO] [stderr]    |
[INFO] [stderr] 18 | use poker_gto_engine::nlhe::cards::{card_to_string, NUM_CARDS, NUM_COMBOS};
[INFO] [stderr]    |                                                                ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `combo_cards`
[INFO] [stderr]  --> src/bin/inspect_preflop_lines.rs:4:37
[INFO] [stderr]   |
[INFO] [stderr] 4 | use poker_gto_engine::nlhe::cards::{combo_cards, NUM_COMBOS};
[INFO] [stderr]   |                                     ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Action`
[INFO] [stderr]  --> src/bin/inspect_preflop_lines.rs:9:36
[INFO] [stderr]   |
[INFO] [stderr] 9 | use poker_gto_engine::nlhe::tree::{Action, Node};
[INFO] [stderr]   |                                    ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `poker_gto_engine` (bin "patch_bucket_arrays") generated 1 warning (run `cargo fix --bin "patch_bucket_arrays" -p poker_gto_engine` to apply 1 suggestion)
[INFO] [stderr] warning: `poker_gto_engine` (bin "solve_river_subgame") generated 1 warning (run `cargo fix --bin "solve_river_subgame" -p poker_gto_engine` to apply 1 suggestion)
[INFO] [stderr] warning: `poker_gto_engine` (bin "precompute_bucketed") generated 2 warnings (run `cargo fix --bin "precompute_bucketed" -p poker_gto_engine` to apply 2 suggestions)
[INFO] [stderr] warning: `poker_gto_engine` (bin "precompute_bucketed" test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `poker_gto_engine` (bin "solve_river_subgame" test) generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `poker_gto_engine` (bin "precompute" test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `poker_gto_engine` (bin "inspect_preflop_lines") generated 2 warnings (run `cargo fix --bin "inspect_preflop_lines" -p poker_gto_engine` to apply 2 suggestions)
[INFO] [stderr] warning: `poker_gto_engine` (bin "inspect_preflop_lines" test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `poker_gto_engine` (bin "precompute_bucketed_parallel" test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `poker_gto_engine` (bin "patch_villain_buckets" test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `poker_gto_engine` (bin "patch_bucket_arrays" test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.07s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/poker_gto_engine-bda397800774522e)
[INFO] [stdout] 
[INFO] [stdout] running 66 tests
[INFO] [stdout] test nlhe::abstraction::tests::rank_subsample_one_per_rank ... ok
[INFO] [stdout] test nlhe::abstraction::tests::iso_key_invariant_under_suit_permutation ... ok
[INFO] [stdout] test nlhe::cards::tests::combo_index_matches_python ... ok
[INFO] [stdout] test nlhe::cache::tests::fnv_stable ... ok
[INFO] [stdout] test nlhe::abstraction::tests::rank_buckets_groups_by_rank ... ok
[INFO] [stdout] test nlhe::abstraction::tests::canonical_enumeration_has_1755_flops ... ok
[INFO] [stdout] test nlhe::cache::tests::cache_roundtrip ... ok
[INFO] [stdout] test nlhe::cards::tests::combo_index_roundtrip ... ok
[INFO] [stdout] test nlhe::cards::tests::rank_suit_roundtrip ... ok
[INFO] [stdout] test nlhe::flat_tree::tests::flatten_preserves_counts ... ok
[INFO] [stdout] test nlhe::cards::tests::parse_and_format_cards ... ok
[INFO] [stdout] test nlhe::cfr::tests::nut_vs_air_hero_wins_pot ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::evaluate_seven_picks_best ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::flush_beats_straight ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::full_house_beats_flush ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::high_card ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::pair_beats_high_card ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::quads_beats_full_house ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::steel_wheel_is_straight_flush ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::straight_flush_beats_quads ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::two_pair_beats_pair ... ok
[INFO] [stdout] test nlhe::hand_eval::tests::wheel_straight ... ok
[INFO] [stdout] test nlhe::abstraction::tests::iso_key_matches_canonical_reps ... ok
[INFO] [stdout] test nlhe::best_response::tests::river_exploitability_non_negative ... ok
[INFO] [stdout] test nlhe::preflop_equity::tests::pair_class_indices ... ok
[INFO] [stdout] test nlhe::cfr::tests::convergence_iter_values_stabilize ... ok
[INFO] [stdout] test nlhe::cfr::tests::tie_gives_half_pot ... ok
[INFO] [stdout] test nlhe::preflop_tree::tests::preflop_chip_conservation ... ok
[INFO] [stdout] test nlhe::preflop_tree::tests::preflop_has_decision_and_terminals ... ok
[INFO] [stdout] test nlhe::preflop_tree::tests::preflop_tree_builds_without_panic ... ok
[INFO] [stdout] test nlhe::preflop_equity::tests::suited_offsuit_distinct_classes ... ok
[INFO] [stdout] test nlhe::range_parser::tests::descending_suited_run ... ok
[INFO] [stdout] test nlhe::range_parser::tests::multi_token ... ok
[INFO] [stdout] test nlhe::range_parser::tests::offsuit_has_twelve_combos ... ok
[INFO] [stdout] test nlhe::range_parser::tests::pair_plus ... ok
[INFO] [stdout] test nlhe::range_parser::tests::pair_range ... ok
[INFO] [stdout] test nlhe::range_parser::tests::pocket_pair_has_six_combos ... ok
[INFO] [stdout] test nlhe::range_parser::tests::specific_combo ... ok
[INFO] [stdout] test nlhe::range_parser::tests::suited_has_four_combos ... ok
[INFO] [stdout] test nlhe::range_parser::tests::suited_plus ... ok
[INFO] [stdout] test nlhe::range_parser::tests::unsuited_token_combines_both ... ok
[INFO] [stdout] test nlhe::range_parser::tests::weighted_token ... ok
[INFO] [stdout] test nlhe::showdown::tests::board_conflict_combos_filtered ... ok
[INFO] [stdout] test nlhe::showdown::tests::nut_set_beats_underpair ... ok
[INFO] [stdout] test nlhe::showdown::tests::pair_card_conflict_marked ... ok
[INFO] [stdout] test nlhe::storage::tests::roundtrip_solution ... ok
[INFO] [stdout] test nlhe::tree::tests::chip_conservation_at_terminals ... ok
[INFO] [stdout] test nlhe::tree::tests::fold_terminals_have_winner ... ok
[INFO] [stdout] test nlhe::tree::tests::river_tree_builds ... ok
[INFO] [stdout] test nlhe::turn_showdown::tests::ace_river_makes_villain_set ... ok
[INFO] [stdout] test nlhe::turn_showdown::tests::turn_showdown_has_48_rivers ... ok
[INFO] [stdout] test nlhe::abstraction::tests::every_real_flop_maps_to_canonical_key ... ok
[INFO] [stdout] test nlhe::flop_showdown::tests::flop_showdown_runout_count ... ok
[INFO] [stdout] test nlhe::bucketing::tests::ehs_nut_vs_air ... ok
[INFO] [stdout] test nlhe::bucketing::tests::bucketing_monotone_in_ehs ... ok
[INFO] [stdout] test nlhe::multi_cfr::tests::turn_solver_runs ... ok
[INFO] [stdout] test nlhe::bucketing::tests::bucketing_partitions_evenly ... ok
[INFO] [stdout] test nlhe::bucket_cfr_river::tests::bucketed_matches_unbucketed_within_tolerance ... ok
[INFO] [stdout] test nlhe::bucket_equity::tests::symmetric_matrix_sums_to_one_minus_ties ... ok
[INFO] [stdout] test nlhe::bucket_equity::tests::top_bucket_crushes_bottom ... ok
[INFO] [stdout] test nlhe::bucket_cfr_river::tests::bucketed_river_converges ... ok
[INFO] [stdout] test nlhe::bucket_cfr_multi::tests::bucketed_turn_runs has been running for over 60 seconds
[INFO] [stdout] test nlhe::flop_showdown::tests::flop_solver_runs has been running for over 60 seconds
[INFO] [stdout] test nlhe::preflop_cfr::tests::solver_runs_with_equity_table has been running for over 60 seconds
[INFO] [stdout] test nlhe::preflop_equity::tests::small_table_sanity has been running for over 60 seconds
[INFO] [stdout] test nlhe::range_derive::tests::derive_for_call_call_path has been running for over 60 seconds
[INFO] [stdout] test nlhe::bucket_cfr_multi::tests::bucketed_turn_runs ... ok
[INFO] [stdout] test nlhe::flop_showdown::tests::flop_solver_runs ... ok
[ERROR] error running command: no output for 300 seconds
[INFO] running `Command { std: "docker" "inspect" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489", kill_on_drop: false }`
[INFO] [stdout] 8e3b9738a59ad2e58633450adf77ab75a7cec2f5356ec369514b387af8dd0489
