[INFO] cloning repository https://github.com/FreeDeathTV/solvermrk1
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/FreeDeathTV/solvermrk1" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFreeDeathTV%2Fsolvermrk1", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFreeDeathTV%2Fsolvermrk1'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a2391e8d295ca6fc9303442fcd6f0e79122f261b
[INFO] checking FreeDeathTV/solvermrk1/a2391e8d295ca6fc9303442fcd6f0e79122f261b against master#2aabf3ce0569dd7c8c2d2a27944850056dcf2566 for pr-156508
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFreeDeathTV%2Fsolvermrk1" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  23% (1031/4328)
Updating files:  24% (1039/4328)
Updating files:  25% (1082/4328)
Updating files:  26% (1126/4328)
Updating files:  27% (1169/4328)
Updating files:  27% (1193/4328)
Updating files:  28% (1212/4328)
Updating files:  29% (1256/4328)
Updating files:  29% (1283/4328)
Updating files:  30% (1299/4328)
Updating files:  31% (1342/4328)
Updating files:  32% (1385/4328)
Updating files:  33% (1429/4328)
Updating files:  34% (1472/4328)
Updating files:  35% (1515/4328)
Updating files:  36% (1559/4328)
Updating files:  37% (1602/4328)
Updating files:  38% (1645/4328)
Updating files:  39% (1688/4328)
Updating files:  40% (1732/4328)
Updating files:  41% (1775/4328)
Updating files:  42% (1818/4328)
Updating files:  43% (1862/4328)
Updating files:  44% (1905/4328)
Updating files:  45% (1948/4328)
Updating files:  45% (1960/4328)
Updating files:  46% (1991/4328)
Updating files:  47% (2035/4328)
Updating files:  48% (2078/4328)
Updating files:  49% (2121/4328)
Updating files:  50% (2164/4328)
Updating files:  51% (2208/4328)
Updating files:  52% (2251/4328)
Updating files:  53% (2294/4328)
Updating files:  54% (2338/4328)
Updating files:  55% (2381/4328)
Updating files:  56% (2424/4328)
Updating files:  57% (2467/4328)
Updating files:  58% (2511/4328)
Updating files:  59% (2554/4328)
Updating files:  60% (2597/4328)
Updating files:  61% (2641/4328)
Updating files:  62% (2684/4328)
Updating files:  63% (2727/4328)
Updating files:  64% (2770/4328)
Updating files:  65% (2814/4328)
Updating files:  66% (2857/4328)
Updating files:  67% (2900/4328)
Updating files:  68% (2944/4328)
Updating files:  69% (2987/4328)
Updating files:  70% (3030/4328)
Updating files:  71% (3073/4328)
Updating files:  72% (3117/4328)
Updating files:  73% (3160/4328)
Updating files:  74% (3203/4328)
Updating files:  75% (3246/4328)
Updating files:  75% (3287/4328)
Updating files:  76% (3290/4328)
Updating files:  77% (3333/4328)
Updating files:  78% (3376/4328)
Updating files:  79% (3420/4328)
Updating files:  80% (3463/4328)
Updating files:  81% (3506/4328)
Updating files:  82% (3549/4328)
Updating files:  83% (3593/4328)
Updating files:  84% (3636/4328)
Updating files:  85% (3679/4328)
Updating files:  86% (3723/4328)
Updating files:  87% (3766/4328)
Updating files:  88% (3809/4328)
Updating files:  89% (3852/4328)
Updating files:  90% (3896/4328)
Updating files:  91% (3939/4328)
Updating files:  92% (3982/4328)
Updating files:  92% (3998/4328)
Updating files:  93% (4026/4328)
Updating files:  94% (4069/4328)
Updating files:  95% (4112/4328)
Updating files:  96% (4155/4328)
Updating files:  97% (4199/4328)
Updating files:  98% (4242/4328)
Updating files:  99% (4285/4328)
Updating files: 100% (4328/4328)
Updating files: 100% (4328/4328), done.
[INFO] started tweaking git repo https://github.com/FreeDeathTV/solvermrk1
[INFO] finished tweaking git repo https://github.com/FreeDeathTV/solvermrk1
[INFO] tweaked toml for git repo https://github.com/FreeDeathTV/solvermrk1 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/FreeDeathTV/solvermrk1 on toolchain 2aabf3ce0569dd7c8c2d2a27944850056dcf2566
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/FreeDeathTV/solvermrk1 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" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] eec32aabcf96342977c9ea612ec2abf7628263ca86de2281e5e46455cd78627a
[INFO] running `Command { std: "docker" "start" "-a" "eec32aabcf96342977c9ea612ec2abf7628263ca86de2281e5e46455cd78627a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "eec32aabcf96342977c9ea612ec2abf7628263ca86de2281e5e46455cd78627a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "eec32aabcf96342977c9ea612ec2abf7628263ca86de2281e5e46455cd78627a", kill_on_drop: false }`
[INFO] [stdout] eec32aabcf96342977c9ea612ec2abf7628263ca86de2281e5e46455cd78627a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 46b6892fd2e58cd080461724b9a0ac55e0baf95556bdf5aa8c2c55a443f8bc57
[INFO] running `Command { std: "docker" "start" "-a" "46b6892fd2e58cd080461724b9a0ac55e0baf95556bdf5aa8c2c55a443f8bc57", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking iana-time-zone v0.1.65
[INFO] [stderr]     Checking anyhow v1.0.102
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking clap_lex v1.0.0
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]     Checking clap_builder v4.5.60
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking clap v4.5.60
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking env_logger v0.9.3
[INFO] [stderr]    Compiling zerocopy-derive v0.8.42
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking solvermk1 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Hasher`
[INFO] [stdout]  --> src/game/game_tree.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::hash::{Hash, Hasher};
[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 variable: `action`
[INFO] [stdout]   --> src/cfr/sampling.rs:68:18
[INFO] [stdout]    |
[INFO] [stdout] 68 |             for &action in &valid_actions {
[INFO] [stdout]    |                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/cfr/sampling.rs:165:37
[INFO] [stdout]     |
[INFO] [stdout] 165 |     fn compute_action_probabilities(state: &GameState, actions: &[u8], _rng: &mut impl Rng) -> Vec<f32> {
[INFO] [stdout]     |                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `layer_idx`
[INFO] [stdout]    --> src/network.rs:282:14
[INFO] [stdout]     |
[INFO] [stdout] 282 |         for (layer_idx, layer) in self.layers[..self.layers.len() - 1].iter().enumerate() {
[INFO] [stdout]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_layer_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/network.rs:323:14
[INFO] [stdout]     |
[INFO] [stdout] 323 |         for (i, (val, weight)) in x.iter().zip(attention_weights.iter()).enumerate() {
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `abstraction_cache` and `abstraction_profile` are never read
[INFO] [stdout]   --> src/game/game_builder.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct GameBuilder {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     abstraction_cache: HashMap<u64, GameState>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Abstraction profile
[INFO] [stdout] 63 |     abstraction_profile: AbstractionProfile,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `abstract_state`, `apply_abstraction`, `bucket_cards`, and `abstract_bet_size` are never used
[INFO] [stdout]    --> src/game/game_builder.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl GameBuilder {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 306 |     fn abstract_state(&mut self, state: &GameState) -> GameState {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn apply_abstraction(&self, state: &GameState) -> GameState {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     fn bucket_cards(&self, cards: [crate::poker::Card; 2]) -> [crate::poker::Card; 2] {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     fn abstract_bet_size(&self, bet: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/benchmarks/batched_strategy.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Instant, Duration};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/benchmarks/batched_strategy.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/benchmarks/sgd_reduction.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Instant, Duration};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/benchmarks/sgd_reduction.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/benchmarks/batched_strategy.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Instant, Duration};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/benchmarks/batched_strategy.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/benchmarks/sgd_reduction.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Instant, Duration};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/benchmarks/sgd_reduction.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_samples` is assigned to, but never used
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:124:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |         let mut total_samples = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_samples` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_samples` is never read
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             total_samples += samples_processed;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_samples` is assigned to, but never used
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:130:13
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut total_samples = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_samples` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_samples` is never read
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |             total_samples += samples_processed;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BenchmarkConfig` is never constructed
[INFO] [stdout]   --> src/benchmarks/sgd_reduction.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct BenchmarkConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BenchmarkMetrics` is never constructed
[INFO] [stdout]   --> src/benchmarks/sgd_reduction.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct BenchmarkMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BenchmarkResults` is never constructed
[INFO] [stdout]   --> src/benchmarks/sgd_reduction.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct BenchmarkResults {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BenchmarkRunner` is never constructed
[INFO] [stdout]   --> src/benchmarks/sgd_reduction.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct BenchmarkRunner {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `run`, `save_results`, and `generate_report` are never used
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:95:12
[INFO] [stdout]     |
[INFO] [stdout]  93 | impl BenchmarkRunner {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  94 |     /// Create a new benchmark runner
[INFO] [stdout]  95 |     pub fn new(config: BenchmarkConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn run(&mut self) -> BenchmarkResults {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn save_results(&self, results: &BenchmarkResults, filename: &str) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn generate_report(&self, results: &BenchmarkResults) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_benchmark` is never used
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:266:8
[INFO] [stdout]     |
[INFO] [stdout] 266 | pub fn run_benchmark(config: BenchmarkConfig) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_samples` is assigned to, but never used
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:124:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |         let mut total_samples = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_samples` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_samples` is never read
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             total_samples += samples_processed;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_samples` is assigned to, but never used
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:130:13
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut total_samples = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_samples` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_samples` is never read
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |             total_samples += samples_processed;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BenchmarkConfig` is never constructed
[INFO] [stdout]   --> src/benchmarks/batched_strategy.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct BenchmarkConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BenchmarkMetrics` is never constructed
[INFO] [stdout]   --> src/benchmarks/batched_strategy.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct BenchmarkMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BenchmarkResults` is never constructed
[INFO] [stdout]   --> src/benchmarks/batched_strategy.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct BenchmarkResults {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BenchmarkRunner` is never constructed
[INFO] [stdout]   --> src/benchmarks/batched_strategy.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct BenchmarkRunner {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `run`, `save_results`, and `generate_report` are never used
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:90:12
[INFO] [stdout]     |
[INFO] [stdout]  88 | impl BenchmarkRunner {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  89 |     /// Create a new benchmark runner
[INFO] [stdout]  90 |     pub fn new(config: BenchmarkConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn run(&mut self) -> BenchmarkResults {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn save_results(&self, results: &BenchmarkResults, filename: &str) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn generate_report(&self, results: &BenchmarkResults) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_benchmark` is never used
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub fn run_benchmark(config: BenchmarkConfig) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> examples/data_integrity_check.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::Instant;
[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 variable: `i`
[INFO] [stdout]   --> examples/data_integrity_check.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 |         for (i, sample) in samples_p1.iter().enumerate() {
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> examples/data_integrity_check.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 |         for (i, sample) in samples_p2.iter().enumerate() {
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/benchmarks/batched_strategy.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Instant, Duration};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/benchmarks/batched_strategy.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/benchmarks/sgd_reduction.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Instant, Duration};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/benchmarks/sgd_reduction.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> examples/benchmark_demo.rs:83:26
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn benchmark_function<F>(name: &str, mut f: F) -> BenchmarkMetrics
[INFO] [stdout]    |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `wall_time_ns`, `iterations`, `ns_per_op`, `min_ns`, and `max_ns` are never read
[INFO] [stdout]    --> examples/benchmark_demo.rs:122:9
[INFO] [stdout]     |
[INFO] [stdout] 121 | struct BenchmarkMetrics {
[INFO] [stdout]     |        ---------------- fields in this struct
[INFO] [stdout] 122 |     pub wall_time_ns: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 123 |     pub iterations: u64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 124 |     pub ops_per_second: f64,
[INFO] [stdout] 125 |     pub ns_per_op: f64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 126 |     pub mean_ns: f64,
[INFO] [stdout] 127 |     pub min_ns: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 128 |     pub max_ns: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BenchmarkMetrics` 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] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> examples/full_iteration_benchmark.rs:99:20
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let _samples = solvermk1::cfr::Sampling::traverse_iteration(1);
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - argument #1 of type `&mut GameState` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/cfr/sampling.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn traverse_iteration(initial_state: &mut GameState, target_player: u8) -> Vec<Sample> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let _samples = solvermk1::cfr::Sampling::traverse_iteration(/* &mut GameState */, 1);
[INFO] [stdout]    |                                                                 +++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/full_iteration_benchmark.rs:100:21
[INFO] [stdout]     |
[INFO] [stdout] 100 |     let _samples2 = solvermk1::cfr::Sampling::traverse_iteration(2);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - argument #1 of type `&mut GameState` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cfr/sampling.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  17 |     pub fn traverse_iteration(initial_state: &mut GameState, target_player: u8) -> Vec<Sample> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 100 |     let _samples2 = solvermk1::cfr::Sampling::traverse_iteration(/* &mut GameState */, 2);
[INFO] [stdout]     |                                                                  +++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/full_iteration_benchmark.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let _ = solvermk1::cfr::Sampling::traverse_iteration(1);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - argument #1 of type `&mut GameState` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cfr/sampling.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  17 |     pub fn traverse_iteration(initial_state: &mut GameState, target_player: u8) -> Vec<Sample> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let _ = solvermk1::cfr::Sampling::traverse_iteration(/* &mut GameState */, 1);
[INFO] [stdout]     |                                                              +++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/full_iteration_benchmark.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let _ = solvermk1::cfr::Sampling::traverse_iteration(2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - argument #1 of type `&mut GameState` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cfr/sampling.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  17 |     pub fn traverse_iteration(initial_state: &mut GameState, target_player: u8) -> Vec<Sample> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let _ = solvermk1::cfr::Sampling::traverse_iteration(/* &mut GameState */, 2);
[INFO] [stdout]     |                                                              +++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/benchmarks/batched_strategy.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Instant, Duration};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/benchmarks/batched_strategy.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/benchmarks/sgd_reduction.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Instant, Duration};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/benchmarks/sgd_reduction.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `solvermk1` (example "full_iteration_benchmark") due to 4 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> examples/critical_path_benchmark.rs:99:23
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let _samples_p1 = solvermk1::cfr::Sampling::traverse_iteration(1);
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - argument #1 of type `&mut GameState` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/cfr/sampling.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn traverse_iteration(initial_state: &mut GameState, target_player: u8) -> Vec<Sample> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let _samples_p1 = solvermk1::cfr::Sampling::traverse_iteration(/* &mut GameState */, 1);
[INFO] [stdout]    |                                                                    +++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/critical_path_benchmark.rs:100:23
[INFO] [stdout]     |
[INFO] [stdout] 100 |     let _samples_p2 = solvermk1::cfr::Sampling::traverse_iteration(2);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - argument #1 of type `&mut GameState` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cfr/sampling.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  17 |     pub fn traverse_iteration(initial_state: &mut GameState, target_player: u8) -> Vec<Sample> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 100 |     let _samples_p2 = solvermk1::cfr::Sampling::traverse_iteration(/* &mut GameState */, 2);
[INFO] [stdout]     |                                                                    +++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/critical_path_benchmark.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let _ = solvermk1::cfr::Sampling::traverse_iteration(1);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - argument #1 of type `&mut GameState` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cfr/sampling.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  17 |     pub fn traverse_iteration(initial_state: &mut GameState, target_player: u8) -> Vec<Sample> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let _ = solvermk1::cfr::Sampling::traverse_iteration(/* &mut GameState */, 1);
[INFO] [stdout]     |                                                              +++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/critical_path_benchmark.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let _ = solvermk1::cfr::Sampling::traverse_iteration(2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - argument #1 of type `&mut GameState` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cfr/sampling.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  17 |     pub fn traverse_iteration(initial_state: &mut GameState, target_player: u8) -> Vec<Sample> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let _ = solvermk1::cfr::Sampling::traverse_iteration(/* &mut GameState */, 2);
[INFO] [stdout]     |                                                              +++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `solvermk1` (example "critical_path_benchmark") due to 4 previous errors
[INFO] [stdout] warning: variable `total_samples` is assigned to, but never used
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:124:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |         let mut total_samples = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_samples` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_samples` is never read
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             total_samples += samples_processed;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_samples` is assigned to, but never used
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:130:13
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut total_samples = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_samples` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_samples` is never read
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |             total_samples += samples_processed;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save_results` and `generate_report` are never used
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout]  88 | impl BenchmarkRunner {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn save_results(&self, results: &BenchmarkResults, filename: &str) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn generate_report(&self, results: &BenchmarkResults) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_benchmark` is never used
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub fn run_benchmark(config: BenchmarkConfig) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Hasher`
[INFO] [stdout]  --> src/game/game_tree.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::hash::{Hash, Hasher};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_samples` is assigned to, but never used
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:124:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |         let mut total_samples = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_samples` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_samples` is never read
[INFO] [stdout]    --> src/benchmarks/batched_strategy.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             total_samples += samples_processed;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_samples` is assigned to, but never used
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:130:13
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut total_samples = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_samples` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_samples` is never read
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |             total_samples += samples_processed;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save_results` and `generate_report` are never used
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout]  93 | impl BenchmarkRunner {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn save_results(&self, results: &BenchmarkResults, filename: &str) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn generate_report(&self, results: &BenchmarkResults) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_benchmark` is never used
[INFO] [stdout]    --> src/benchmarks/sgd_reduction.rs:266:8
[INFO] [stdout]     |
[INFO] [stdout] 266 | pub fn run_benchmark(config: BenchmarkConfig) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `action`
[INFO] [stdout]   --> src/cfr/sampling.rs:68:18
[INFO] [stdout]    |
[INFO] [stdout] 68 |             for &action in &valid_actions {
[INFO] [stdout]    |                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/cfr/sampling.rs:165:37
[INFO] [stdout]     |
[INFO] [stdout] 165 |     fn compute_action_probabilities(state: &GameState, actions: &[u8], _rng: &mut impl Rng) -> Vec<f32> {
[INFO] [stdout]     |                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `layer_idx`
[INFO] [stdout]    --> src/network.rs:282:14
[INFO] [stdout]     |
[INFO] [stdout] 282 |         for (layer_idx, layer) in self.layers[..self.layers.len() - 1].iter().enumerate() {
[INFO] [stdout]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_layer_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/network.rs:323:14
[INFO] [stdout]     |
[INFO] [stdout] 323 |         for (i, (val, weight)) in x.iter().zip(attention_weights.iter()).enumerate() {
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `abstraction_cache` and `abstraction_profile` are never read
[INFO] [stdout]   --> src/game/game_builder.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct GameBuilder {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     abstraction_cache: HashMap<u64, GameState>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Abstraction profile
[INFO] [stdout] 63 |     abstraction_profile: AbstractionProfile,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `abstract_state`, `apply_abstraction`, `bucket_cards`, and `abstract_bet_size` are never used
[INFO] [stdout]    --> src/game/game_builder.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl GameBuilder {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 306 |     fn abstract_state(&mut self, state: &GameState) -> GameState {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn apply_abstraction(&self, state: &GameState) -> GameState {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     fn bucket_cards(&self, cards: [crate::poker::Card; 2]) -> [crate::poker::Card; 2] {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     fn abstract_bet_size(&self, bet: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "46b6892fd2e58cd080461724b9a0ac55e0baf95556bdf5aa8c2c55a443f8bc57", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "46b6892fd2e58cd080461724b9a0ac55e0baf95556bdf5aa8c2c55a443f8bc57", kill_on_drop: false }`
[INFO] [stdout] 46b6892fd2e58cd080461724b9a0ac55e0baf95556bdf5aa8c2c55a443f8bc57
