[INFO] cloning repository https://github.com/0xjackson/gto-cli [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/0xjackson/gto-cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xjackson%2Fgto-cli", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xjackson%2Fgto-cli'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ce90d6c25522ca476bc31b32832bb58d9e02c043 [INFO] linting 0xjackson/gto-cli against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xjackson%2Fgto-cli" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/0xjackson/gto-cli [INFO] finished tweaking git repo https://github.com/0xjackson/gto-cli [INFO] tweaked toml for git repo https://github.com/0xjackson/gto-cli written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/0xjackson/gto-cli on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/0xjackson/gto-cli 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded zmij v1.0.20 [INFO] [stderr] Downloaded comfy-table v7.1.4 [INFO] [stderr] Downloaded colored v2.2.0 [INFO] [stderr] Downloaded clap v4.5.57 [INFO] [stderr] Downloaded clap_builder v4.5.57 [INFO] [stderr] Downloaded libc v0.2.181 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 92838d2d049b717f2fe8e26e278e3e375cfc3ccbd0888178e6d849c1199db8fe [INFO] running `Command { std: "docker" "start" "-a" "92838d2d049b717f2fe8e26e278e3e375cfc3ccbd0888178e6d849c1199db8fe", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "92838d2d049b717f2fe8e26e278e3e375cfc3ccbd0888178e6d849c1199db8fe", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "92838d2d049b717f2fe8e26e278e3e375cfc3ccbd0888178e6d849c1199db8fe", kill_on_drop: false }` [INFO] [stdout] 92838d2d049b717f2fe8e26e278e3e375cfc3ccbd0888178e6d849c1199db8fe [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e9557f35f1ed52759acf57c7f9ae42a78df4a153422d885f89a40a4b96ae8d79 [INFO] running `Command { std: "docker" "start" "-a" "e9557f35f1ed52759acf57c7f9ae42a78df4a153422d885f89a40a4b96ae8d79", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling libc v0.2.181 [INFO] [stderr] Compiling unicode-ident v1.0.23 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling zmij v1.0.20 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Checking clap_lex v0.7.7 [INFO] [stderr] Checking itoa v1.0.17 [INFO] [stderr] Checking unicode-width v0.2.2 [INFO] [stderr] Checking memchr v2.8.0 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Checking clap_builder v4.5.57 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking comfy-table v7.1.4 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking clap v4.5.57 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking gto-cli v1.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Rank` [INFO] [stdout] --> src/card_encoding.rs:7:26 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::cards::{Card, Rank, Suit, ALL_RANKS, ALL_SUITS}; [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: `break_even_pct` and `spr as calc_spr` [INFO] [stdout] --> src/play.rs:10:26 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::math_engine::{break_even_pct, spr as calc_spr, SprZone}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::multiway::multiway_range_adjustment` [INFO] [stdout] --> src/play.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::multiway::multiway_range_adjustment; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `get_rfi_pct` [INFO] [stdout] --> src/play.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | get_rfi_pct, get_rfi_range, preflop_action, positions_for, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HAND_RANKING` [INFO] [stdout] --> src/play.rs:17:58 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::ranges::{blockers_remove, range_from_top_pct, HAND_RANKING}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `detect_street` [INFO] [stdout] --> src/play.rs:19:22 [INFO] [stdout] | [INFO] [stdout] 19 | default_villain, detect_street, format_strategy, StrategyEngine, StrategySource, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `break_even_pct` and `spr as calc_spr` [INFO] [stdout] --> src/play.rs:10:26 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::math_engine::{break_even_pct, spr as calc_spr, SprZone}; [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: `crate::multiway::multiway_range_adjustment` [INFO] [stdout] --> src/play.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::multiway::multiway_range_adjustment; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `get_rfi_pct` [INFO] [stdout] --> src/play.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | get_rfi_pct, get_rfi_range, preflop_action, positions_for, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HAND_RANKING` [INFO] [stdout] --> src/play.rs:17:58 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::ranges::{blockers_remove, range_from_top_pct, HAND_RANKING}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `detect_street` [INFO] [stdout] --> src/play.rs:19:22 [INFO] [stdout] | [INFO] [stdout] 19 | default_villain, detect_street, format_strategy, StrategyEngine, StrategySource, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bb_amount` [INFO] [stdout] --> src/play.rs:455:9 [INFO] [stdout] | [INFO] [stdout] 455 | let bb_amount = 1.0; // Use bb as unit [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bb_amount` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_solver_preflop` [INFO] [stdout] --> src/play.rs:495:9 [INFO] [stdout] | [INFO] [stdout] 495 | let has_solver_preflop = show_preflop_advice( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_solver_preflop` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `board_str` is never read [INFO] [stdout] --> src/play.rs:514:25 [INFO] [stdout] | [INFO] [stdout] 514 | let mut board_str = String::new(); [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: unused variable: `b` [INFO] [stdout] --> src/flop_enumerator.rs:277:13 [INFO] [stdout] | [INFO] [stdout] 277 | let b = canonicalize(&[(11, 0), (7, 1), (2, 0)]); // Ks9h4s [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_b` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bb_amount` [INFO] [stdout] --> src/play.rs:455:9 [INFO] [stdout] | [INFO] [stdout] 455 | let bb_amount = 1.0; // Use bb as unit [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bb_amount` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_solver_preflop` [INFO] [stdout] --> src/play.rs:495:9 [INFO] [stdout] | [INFO] [stdout] 495 | let has_solver_preflop = show_preflop_advice( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_solver_preflop` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `board_str` is never read [INFO] [stdout] --> src/play.rs:514:25 [INFO] [stdout] | [INFO] [stdout] 514 | let mut board_str = String::new(); [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: function `parse_sizing_pct` is never used [INFO] [stdout] --> src/play.rs:377:4 [INFO] [stdout] | [INFO] [stdout] 377 | fn parse_sizing_pct(sizing: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fold` is never read [INFO] [stdout] --> src/preflop.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 35 | struct SqueezeEntry { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 36 | squeeze: Vec, [INFO] [stdout] 37 | fold: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SqueezeEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/batch.rs:97:9 [INFO] [stdout] | [INFO] [stdout] 97 | flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 97 - flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] 97 + flops.sort_by_key(|b| std::cmp::Reverse(strategic_priority(b))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Deck` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/cards.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used consecutive `str::replace` call [INFO] [stdout] --> src/cards.rs:230:36 [INFO] [stdout] | [INFO] [stdout] 230 | let notation = notation.trim().replace(' ', "").replace(',', ""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `replace([' ', ','], "")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_str_replace [INFO] [stdout] = note: `#[warn(clippy::collapsible_str_replace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/cards.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 231 | if notation.len() % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!notation.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `ALL_SUITS` [INFO] [stdout] --> src/cards.rs:270:18 [INFO] [stdout] | [INFO] [stdout] 270 | for i in 0..ALL_SUITS.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 270 - for i in 0..ALL_SUITS.len() { [INFO] [stdout] 270 + for (i, ) in ALL_SUITS.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `ALL_SUITS` [INFO] [stdout] --> src/cards.rs:271:22 [INFO] [stdout] | [INFO] [stdout] 271 | for j in (i + 1)..ALL_SUITS.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 271 - for j in (i + 1)..ALL_SUITS.len() { [INFO] [stdout] 271 + for in ALL_SUITS.iter().skip((i + 1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CfrTrainer` [INFO] [stdout] --> src/cfr.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | / pub fn new() -> Self { [INFO] [stdout] 95 | | CfrTrainer { [INFO] [stdout] 96 | | info_sets: HashMap::new(), [INFO] [stdout] 97 | | } [INFO] [stdout] 98 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 93 + impl Default for CfrTrainer { [INFO] [stdout] 94 + fn default() -> Self { [INFO] [stdout] 95 + Self::new() [INFO] [stdout] 96 + } [INFO] [stdout] 97 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `action_values` [INFO] [stdout] --> src/flat_cfr.rs:181:18 [INFO] [stdout] | [INFO] [stdout] 181 | for i in 0..na { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 181 - for i in 0..na { [INFO] [stdout] 181 + for (i, ) in action_values.iter().enumerate().take(na) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/flop_enumerator.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | sorted.sort_by(|a, b| b.0.cmp(&a.0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 52 - sorted.sort_by(|a, b| b.0.cmp(&a.0)); [INFO] [stdout] 52 + sorted.sort_by_key(|b| std::cmp::Reverse(b.0)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `bb_strats` [INFO] [stdout] --> src/game_tree.rs:449:19 [INFO] [stdout] | [INFO] [stdout] 449 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 449 - for bb in 0..NUM_HANDS { [INFO] [stdout] 449 + for (bb, ) in bb_strats.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `sb_strats` [INFO] [stdout] --> src/game_tree.rs:496:19 [INFO] [stdout] | [INFO] [stdout] 496 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 496 - for sb in 0..NUM_HANDS { [INFO] [stdout] 496 + for (sb, ) in sb_strats.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `push_strat` [INFO] [stdout] --> src/game_tree.rs:536:15 [INFO] [stdout] | [INFO] [stdout] 536 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 536 - for sb in 0..NUM_HANDS { [INFO] [stdout] 536 + for (sb, ) in push_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `call_strat` [INFO] [stdout] --> src/game_tree.rs:543:19 [INFO] [stdout] | [INFO] [stdout] 543 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 543 - for bb in 0..NUM_HANDS { [INFO] [stdout] 543 + for (bb, ) in call_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `call_strat` [INFO] [stdout] --> src/game_tree.rs:573:15 [INFO] [stdout] | [INFO] [stdout] 573 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 573 - for bb in 0..NUM_HANDS { [INFO] [stdout] 573 + for (bb, ) in call_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `push_strat` [INFO] [stdout] --> src/game_tree.rs:580:19 [INFO] [stdout] | [INFO] [stdout] 580 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 580 - for sb in 0..NUM_HANDS { [INFO] [stdout] 580 + for (sb, ) in push_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `straight_high` after checking its variant with `is_some` [INFO] [stdout] --> src/hand_evaluator.rs:128:20 [INFO] [stdout] | [INFO] [stdout] 127 | if flush && straight_high.is_some() { [INFO] [stdout] | ----------------------- the check is happening here [INFO] [stdout] 128 | let high = straight_high.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fold` is never read [INFO] [stdout] --> src/preflop.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 35 | struct SqueezeEntry { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 36 | squeeze: Vec, [INFO] [stdout] 37 | fold: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SqueezeEntry` 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: consider using `sort_by_key` [INFO] [stdout] --> src/batch.rs:97:9 [INFO] [stdout] | [INFO] [stdout] 97 | flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 97 - flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] 97 + flops.sort_by_key(|b| std::cmp::Reverse(strategic_priority(b))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/hand_evaluator.rs:226:12 [INFO] [stdout] | [INFO] [stdout] 226 | if best.as_ref().map_or(true, |b| result > *b) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 226 - if best.as_ref().map_or(true, |b| result > *b) { [INFO] [stdout] 226 + if best.as_ref().is_none_or(|b| result > *b) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sing.get(0)` [INFO] [stdout] --> src/lookup_eval.rs:180:44 [INFO] [stdout] | [INFO] [stdout] 180 | let kick = if np >= 3 && pair[2] > sing.get(0).copied().unwrap_or(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `sing.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sing.get(0)` [INFO] [stdout] --> src/lookup_eval.rs:183:13 [INFO] [stdout] | [INFO] [stdout] 183 | sing.get(0).copied().unwrap_or(0) [INFO] [stdout] | ^^^^^^^^^^^ help: try: `sing.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/play.rs:123:35 [INFO] [stdout] | [INFO] [stdout] 123 | } else if is_top_pair { [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 124 | | "medium" [INFO] [stdout] 125 | | } else if board_values.len() > 1 && pair_rank_value >= board_values[1] { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/play.rs:125:84 [INFO] [stdout] | [INFO] [stdout] 125 | } else if board_values.len() > 1 && pair_rank_value >= board_values[1] { [INFO] [stdout] | ____________________________________________________________________________________^ [INFO] [stdout] 126 | | "medium" [INFO] [stdout] 127 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Deck` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/cards.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used consecutive `str::replace` call [INFO] [stdout] --> src/cards.rs:230:36 [INFO] [stdout] | [INFO] [stdout] 230 | let notation = notation.trim().replace(' ', "").replace(',', ""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `replace([' ', ','], "")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_str_replace [INFO] [stdout] = note: `#[warn(clippy::collapsible_str_replace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/cards.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 231 | if notation.len() % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!notation.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `ALL_SUITS` [INFO] [stdout] --> src/cards.rs:270:18 [INFO] [stdout] | [INFO] [stdout] 270 | for i in 0..ALL_SUITS.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 270 - for i in 0..ALL_SUITS.len() { [INFO] [stdout] 270 + for (i, ) in ALL_SUITS.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `ALL_SUITS` [INFO] [stdout] --> src/cards.rs:271:22 [INFO] [stdout] | [INFO] [stdout] 271 | for j in (i + 1)..ALL_SUITS.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 271 - for j in (i + 1)..ALL_SUITS.len() { [INFO] [stdout] 271 + for in ALL_SUITS.iter().skip((i + 1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/play.rs:371:8 [INFO] [stdout] | [INFO] [stdout] 371 | if text.len() % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace with: `!text.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CfrTrainer` [INFO] [stdout] --> src/cfr.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | / pub fn new() -> Self { [INFO] [stdout] 95 | | CfrTrainer { [INFO] [stdout] 96 | | info_sets: HashMap::new(), [INFO] [stdout] 97 | | } [INFO] [stdout] 98 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 93 + impl Default for CfrTrainer { [INFO] [stdout] 94 + fn default() -> Self { [INFO] [stdout] 95 + Self::new() [INFO] [stdout] 96 + } [INFO] [stdout] 97 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (15/7) [INFO] [stdout] --> src/play.rs:644:1 [INFO] [stdout] | [INFO] [stdout] 644 | / fn show_street_advice( [INFO] [stdout] 645 | | engine: &mut StrategyEngine, [INFO] [stdout] 646 | | hand_str: &str, [INFO] [stdout] 647 | | hero: Position, [INFO] [stdout] ... | [INFO] [stdout] 659 | | writer: &mut dyn Write, [INFO] [stdout] 660 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (11/7) [INFO] [stdout] --> src/play.rs:691:1 [INFO] [stdout] | [INFO] [stdout] 691 | / fn show_heuristic_analysis( [INFO] [stdout] 692 | | street: &str, [INFO] [stdout] 693 | | hole_cards: &[Card], [INFO] [stdout] 694 | | board: &[Card], [INFO] [stdout] ... | [INFO] [stdout] 702 | | writer: &mut dyn Write, [INFO] [stdout] 703 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `action_values` [INFO] [stdout] --> src/flat_cfr.rs:181:18 [INFO] [stdout] | [INFO] [stdout] 181 | for i in 0..na { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 181 - for i in 0..na { [INFO] [stdout] 181 + for (i, ) in action_values.iter().enumerate().take(na) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/postflop.rs:97:25 [INFO] [stdout] | [INFO] [stdout] 97 | let has_connected = gaps.iter().any(|&g| g == 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `gaps.contains(&1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/postflop.rs:98:23 [INFO] [stdout] | [INFO] [stdout] 98 | let has_one_gap = gaps.iter().any(|&g| g == 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `gaps.contains(&2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/flop_enumerator.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | sorted.sort_by(|a, b| b.0.cmp(&a.0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 52 - sorted.sort_by(|a, b| b.0.cmp(&a.0)); [INFO] [stdout] 52 + sorted.sort_by_key(|b| std::cmp::Reverse(b.0)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/flop_enumerator.rs:317:9 [INFO] [stdout] | [INFO] [stdout] 317 | flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 317 - flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] 317 + flops.sort_by_key(|b| std::cmp::Reverse(strategic_priority(b))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/flop_enumerator.rs:333:29 [INFO] [stdout] | [INFO] [stdout] 333 | let r1 = rank_value(top.chars().nth(0).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `top.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/preflop_solver.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | / pub fn from_str(s: &str) -> Option { [INFO] [stdout] 95 | | match s.to_uppercase().as_str() { [INFO] [stdout] 96 | | "UTG" => Some(Position::UTG), [INFO] [stdout] 97 | | "HJ" => Some(Position::HJ), [INFO] [stdout] ... | [INFO] [stdout] 104 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `bb_strats` [INFO] [stdout] --> src/game_tree.rs:449:19 [INFO] [stdout] | [INFO] [stdout] 449 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 449 - for bb in 0..NUM_HANDS { [INFO] [stdout] 449 + for (bb, ) in bb_strats.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `sb_strats` [INFO] [stdout] --> src/game_tree.rs:496:19 [INFO] [stdout] | [INFO] [stdout] 496 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 496 - for sb in 0..NUM_HANDS { [INFO] [stdout] 496 + for (sb, ) in sb_strats.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `push_strat` [INFO] [stdout] --> src/game_tree.rs:536:15 [INFO] [stdout] | [INFO] [stdout] 536 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 536 - for sb in 0..NUM_HANDS { [INFO] [stdout] 536 + for (sb, ) in push_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `call_strat` [INFO] [stdout] --> src/game_tree.rs:543:19 [INFO] [stdout] | [INFO] [stdout] 543 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 543 - for bb in 0..NUM_HANDS { [INFO] [stdout] 543 + for (bb, ) in call_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `call_strat` [INFO] [stdout] --> src/game_tree.rs:573:15 [INFO] [stdout] | [INFO] [stdout] 573 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 573 - for bb in 0..NUM_HANDS { [INFO] [stdout] 573 + for (bb, ) in call_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `push_strat` [INFO] [stdout] --> src/game_tree.rs:580:19 [INFO] [stdout] | [INFO] [stdout] 580 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 580 - for sb in 0..NUM_HANDS { [INFO] [stdout] 580 + for (sb, ) in push_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/game_tree.rs:679:29 [INFO] [stdout] | [INFO] [stdout] 679 | assert!(eq >= 0.0 && eq <= 1.0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0.0..=1.0).contains(&eq)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `strategy` [INFO] [stdout] --> src/preflop_solver.rs:312:14 [INFO] [stdout] | [INFO] [stdout] 312 | for i in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 312 - for i in 0..NUM_HANDS { [INFO] [stdout] 312 + for (i, ) in strategy.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `straight_high` after checking its variant with `is_some` [INFO] [stdout] --> src/hand_evaluator.rs:128:20 [INFO] [stdout] | [INFO] [stdout] 127 | if flush && straight_high.is_some() { [INFO] [stdout] | ----------------------- the check is happening here [INFO] [stdout] 128 | let high = straight_high.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/hand_evaluator.rs:226:12 [INFO] [stdout] | [INFO] [stdout] 226 | if best.as_ref().map_or(true, |b| result > *b) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 226 - if best.as_ref().map_or(true, |b| result > *b) { [INFO] [stdout] 226 + if best.as_ref().is_none_or(|b| result > *b) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/preflop_solver.rs:805:1 [INFO] [stdout] | [INFO] [stdout] 805 | / pub fn compute_preflop_exploitability( [INFO] [stdout] 806 | | open_strat: &[f64], [INFO] [stdout] 807 | | vs_open_3bet: &[f64], [INFO] [stdout] 808 | | vs_open_call: &[f64], [INFO] [stdout] ... | [INFO] [stdout] 815 | | payoffs: &PreflopPayoffs, [INFO] [stdout] 816 | | ) -> f64 { [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sing.get(0)` [INFO] [stdout] --> src/lookup_eval.rs:180:44 [INFO] [stdout] | [INFO] [stdout] 180 | let kick = if np >= 3 && pair[2] > sing.get(0).copied().unwrap_or(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `sing.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sing.get(0)` [INFO] [stdout] --> src/lookup_eval.rs:183:13 [INFO] [stdout] | [INFO] [stdout] 183 | sing.get(0).copied().unwrap_or(0) [INFO] [stdout] | ^^^^^^^^^^^ help: try: `sing.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/preflop_solver.rs:989:26 [INFO] [stdout] | [INFO] [stdout] 989 | .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 989 - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; [INFO] [stdout] 989 + .map_err(|e| std::io::Error::other(e))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/preflop_solver.rs:1004:26 [INFO] [stdout] | [INFO] [stdout] 1004 | .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 1004 - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] 1004 + .map_err(|e| std::io::Error::other(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a suffix manually [INFO] [stdout] --> src/ranges.rs:47:34 [INFO] [stdout] | [INFO] [stdout] 47 | for h in expand_plus(&part[..part.len() - 1]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the suffix was tested here [INFO] [stdout] --> src/ranges.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | if part.ends_with('+') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_suffix` method [INFO] [stdout] | [INFO] [stdout] 46 ~ if let Some() = part.strip_suffix('+') { [INFO] [stdout] 47 ~ for h in expand_plus() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/flop_solver.rs:65:18 [INFO] [stdout] | [INFO] [stdout] 65 | .map(|c| crate::card_encoding::card_to_index(c)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `crate::card_encoding::card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/play.rs:123:35 [INFO] [stdout] | [INFO] [stdout] 123 | } else if is_top_pair { [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 124 | | "medium" [INFO] [stdout] 125 | | } else if board_values.len() > 1 && pair_rank_value >= board_values[1] { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/play.rs:125:84 [INFO] [stdout] | [INFO] [stdout] 125 | } else if board_values.len() > 1 && pair_rank_value >= board_values[1] { [INFO] [stdout] | ____________________________________________________________________________________^ [INFO] [stdout] 126 | | "medium" [INFO] [stdout] 127 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/play.rs:371:8 [INFO] [stdout] | [INFO] [stdout] 371 | if text.len() % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace with: `!text.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (15/7) [INFO] [stdout] --> src/play.rs:644:1 [INFO] [stdout] | [INFO] [stdout] 644 | / fn show_street_advice( [INFO] [stdout] 645 | | engine: &mut StrategyEngine, [INFO] [stdout] 646 | | hand_str: &str, [INFO] [stdout] 647 | | hero: Position, [INFO] [stdout] ... | [INFO] [stdout] 659 | | writer: &mut dyn Write, [INFO] [stdout] 660 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (11/7) [INFO] [stdout] --> src/play.rs:691:1 [INFO] [stdout] | [INFO] [stdout] 691 | / fn show_heuristic_analysis( [INFO] [stdout] 692 | | street: &str, [INFO] [stdout] 693 | | hole_cards: &[Card], [INFO] [stdout] 694 | | board: &[Card], [INFO] [stdout] ... | [INFO] [stdout] 702 | | writer: &mut dyn Write, [INFO] [stdout] 703 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/flop_solver.rs:213:27 [INFO] [stdout] | [INFO] [stdout] 213 | let num_oop_buckets = (*flop_oop_buckets.iter().max().unwrap_or(&0) + 1) as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*flop_oop_buckets.iter().max().unwrap_or(&0) + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/flop_solver.rs:214:26 [INFO] [stdout] | [INFO] [stdout] 214 | let num_ip_buckets = (*flop_ip_buckets.iter().max().unwrap_or(&0) + 1) as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*flop_ip_buckets.iter().max().unwrap_or(&0) + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/flop_solver.rs:389:22 [INFO] [stdout] | [INFO] [stdout] 389 | let results: Vec<((Vec, Vec), (Vec, Vec))> = (0..num_runouts) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/postflop.rs:97:25 [INFO] [stdout] | [INFO] [stdout] 97 | let has_connected = gaps.iter().any(|&g| g == 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `gaps.contains(&1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/postflop.rs:98:23 [INFO] [stdout] | [INFO] [stdout] 98 | let has_one_gap = gaps.iter().any(|&g| g == 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `gaps.contains(&2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:814:66 [INFO] [stdout] | [INFO] [stdout] 814 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:711:5 [INFO] [stdout] | [INFO] [stdout] 711 | oop_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:828:25 [INFO] [stdout] | [INFO] [stdout] 828 | oop_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 919 | oop_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:712:5 [INFO] [stdout] | [INFO] [stdout] 712 | ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:829:25 [INFO] [stdout] | [INFO] [stdout] 829 | ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:723:5 [INFO] [stdout] | [INFO] [stdout] 723 | flop_pot: f64, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:840:25 [INFO] [stdout] | [INFO] [stdout] 840 | flop_pot, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 931 | flop_pot, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1058:66 [INFO] [stdout] | [INFO] [stdout] 1058 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1303:66 [INFO] [stdout] | [INFO] [stdout] 1303 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1194:5 [INFO] [stdout] | [INFO] [stdout] 1194 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1313:25 [INFO] [stdout] | [INFO] [stdout] 1313 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1388 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1195:5 [INFO] [stdout] | [INFO] [stdout] 1195 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1314:25 [INFO] [stdout] | [INFO] [stdout] 1314 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1389 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1486:62 [INFO] [stdout] | [INFO] [stdout] 1486 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1435:5 [INFO] [stdout] | [INFO] [stdout] 1435 | oop_blockers: &[[bool; 52]], ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1491:25 [INFO] [stdout] | [INFO] [stdout] 1491 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1543 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1435:34 [INFO] [stdout] | [INFO] [stdout] 1435 | oop_blockers: &[[bool; 52]], ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1491:39 [INFO] [stdout] | [INFO] [stdout] 1491 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1543 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1441:5 [INFO] [stdout] | [INFO] [stdout] 1441 | flop_pot: f64, turn_template: &TreeNode, river_template: &TreeNode, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1497:25 [INFO] [stdout] | [INFO] [stdout] 1497 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1549 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1613:62 [INFO] [stdout] | [INFO] [stdout] 1613 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1744:62 [INFO] [stdout] | [INFO] [stdout] 1744 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1683:5 [INFO] [stdout] | [INFO] [stdout] 1683 | oop_combos: &[Combo], ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1747:36 [INFO] [stdout] | [INFO] [stdout] 1747 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1790 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1683:27 [INFO] [stdout] | [INFO] [stdout] 1683 | oop_combos: &[Combo], ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1747:48 [INFO] [stdout] | [INFO] [stdout] 1747 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1790 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/flop_solver.rs:1852:21 [INFO] [stdout] | [INFO] [stdout] 1852 | let river_data: Vec<((Vec, Vec), (Vec, Vec))> = (0..num_runouts) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2111:30 [INFO] [stdout] | [INFO] [stdout] 2111 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2111 - for a in 0..num_actions { [INFO] [stdout] 2111 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2034:5 [INFO] [stdout] | [INFO] [stdout] 2034 | flop_pot: f64, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2119:29 [INFO] [stdout] | [INFO] [stdout] 2119 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2141 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2177 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2261:30 [INFO] [stdout] | [INFO] [stdout] 2261 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2261 - for a in 0..num_actions { [INFO] [stdout] 2261 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2417:30 [INFO] [stdout] | [INFO] [stdout] 2417 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2417 - for a in 0..num_actions { [INFO] [stdout] 2417 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2339:5 [INFO] [stdout] | [INFO] [stdout] 2339 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2420:40 [INFO] [stdout] | [INFO] [stdout] 2420 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2438 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2469 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2340:5 [INFO] [stdout] | [INFO] [stdout] 2340 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2420:52 [INFO] [stdout] | [INFO] [stdout] 2420 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2438 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2469 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/flop_solver.rs:2608:1 [INFO] [stdout] | [INFO] [stdout] 2608 | / fn extract_flop_strategies( [INFO] [stdout] 2609 | | node: &TreeNode, [INFO] [stdout] 2610 | | flop_oop_cfr: &FlatCfr, [INFO] [stdout] 2611 | | flop_ip_cfr: &FlatCfr, [INFO] [stdout] ... | [INFO] [stdout] 2616 | | strategies: &mut Vec, [INFO] [stdout] 2617 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/flop_solver.rs:2820:22 [INFO] [stdout] | [INFO] [stdout] 2820 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 2820 - for i in 0..num_to_show { [INFO] [stdout] 2820 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/river_solver.rs:169:53 [INFO] [stdout] | [INFO] [stdout] 169 | let board: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/preflop_solver.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | / pub fn from_str(s: &str) -> Option { [INFO] [stdout] 95 | | match s.to_uppercase().as_str() { [INFO] [stdout] 96 | | "UTG" => Some(Position::UTG), [INFO] [stdout] 97 | | "HJ" => Some(Position::HJ), [INFO] [stdout] ... | [INFO] [stdout] 104 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `strategy` [INFO] [stdout] --> src/preflop_solver.rs:312:14 [INFO] [stdout] | [INFO] [stdout] 312 | for i in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 312 - for i in 0..NUM_HANDS { [INFO] [stdout] 312 + for (i, ) in strategy.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/river_solver.rs:608:26 [INFO] [stdout] | [INFO] [stdout] 608 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 608 - for a in 0..num_actions { [INFO] [stdout] 608 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/river_solver.rs:889:22 [INFO] [stdout] | [INFO] [stdout] 889 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 889 - for i in 0..num_to_show { [INFO] [stdout] 889 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/preflop_solver.rs:805:1 [INFO] [stdout] | [INFO] [stdout] 805 | / pub fn compute_preflop_exploitability( [INFO] [stdout] 806 | | open_strat: &[f64], [INFO] [stdout] 807 | | vs_open_3bet: &[f64], [INFO] [stdout] 808 | | vs_open_call: &[f64], [INFO] [stdout] ... | [INFO] [stdout] 815 | | payoffs: &PreflopPayoffs, [INFO] [stdout] 816 | | ) -> f64 { [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/strategy.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | / pub fn query_postflop( [INFO] [stdout] 214 | | &mut self, [INFO] [stdout] 215 | | hand: &str, [INFO] [stdout] 216 | | hero: Position, [INFO] [stdout] ... | [INFO] [stdout] 222 | | action_path: &[String], [INFO] [stdout] 223 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:287:5 [INFO] [stdout] | [INFO] [stdout] 287 | / fn query_flop( [INFO] [stdout] 288 | | &self, [INFO] [stdout] 289 | | hand: &str, [INFO] [stdout] 290 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 299 | | action_path: &[String], [INFO] [stdout] 300 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 317 | / fn query_turn( [INFO] [stdout] 318 | | &self, [INFO] [stdout] 319 | | hand: &str, [INFO] [stdout] 320 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 329 | | action_path: &[String], [INFO] [stdout] 330 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:360:5 [INFO] [stdout] | [INFO] [stdout] 360 | / fn query_river( [INFO] [stdout] 361 | | &self, [INFO] [stdout] 362 | | hand: &str, [INFO] [stdout] 363 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 372 | | action_path: &[String], [INFO] [stdout] 373 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/preflop_solver.rs:989:26 [INFO] [stdout] | [INFO] [stdout] 989 | .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 989 - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; [INFO] [stdout] 989 + .map_err(|e| std::io::Error::other(e))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/strategy.rs:634:57 [INFO] [stdout] | [INFO] [stdout] 634 | let board_indices: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/preflop_solver.rs:1004:26 [INFO] [stdout] | [INFO] [stdout] 1004 | .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 1004 - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] 1004 + .map_err(|e| std::io::Error::other(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/turn_solver.rs:49:53 [INFO] [stdout] | [INFO] [stdout] 49 | let board: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a suffix manually [INFO] [stdout] --> src/ranges.rs:47:34 [INFO] [stdout] | [INFO] [stdout] 47 | for h in expand_plus(&part[..part.len() - 1]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the suffix was tested here [INFO] [stdout] --> src/ranges.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | if part.ends_with('+') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_suffix` method [INFO] [stdout] | [INFO] [stdout] 46 ~ if let Some() = part.strip_suffix('+') { [INFO] [stdout] 47 ~ for h in expand_plus() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bucketing.rs:198:18 [INFO] [stdout] | [INFO] [stdout] 198 | .map(|c| card_to_index(c)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/flop_solver.rs:65:18 [INFO] [stdout] | [INFO] [stdout] 65 | .map(|c| crate::card_encoding::card_to_index(c)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `crate::card_encoding::card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/turn_solver.rs:375:66 [INFO] [stdout] | [INFO] [stdout] 375 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:272:5 [INFO] [stdout] | [INFO] [stdout] 272 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:384:25 [INFO] [stdout] | [INFO] [stdout] 384 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 451 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:273:5 [INFO] [stdout] | [INFO] [stdout] 273 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:385:25 [INFO] [stdout] | [INFO] [stdout] 385 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:274:5 [INFO] [stdout] | [INFO] [stdout] 274 | river_board: &[u8; 5], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_river_board` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:386:25 [INFO] [stdout] | [INFO] [stdout] 386 | river_board, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | river_board, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/turn_solver.rs:686:66 [INFO] [stdout] | [INFO] [stdout] 686 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/turn_solver.rs:784:1 [INFO] [stdout] | [INFO] [stdout] 784 | / pub fn compute_exploitability( [INFO] [stdout] 785 | | tree: &TreeNode, [INFO] [stdout] 786 | | oop_cfr: &FlatCfr, [INFO] [stdout] 787 | | ip_cfr: &FlatCfr, [INFO] [stdout] ... | [INFO] [stdout] 792 | | board: &[u8], [INFO] [stdout] 793 | | ) -> f64 { [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `valid_for` [INFO] [stdout] --> src/turn_solver.rs:866:14 [INFO] [stdout] | [INFO] [stdout] 866 | for h in 0..num_br { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 866 - for h in 0..num_br { [INFO] [stdout] 866 + for (h, ) in valid_for.iter().enumerate().take(num_br) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/turn_solver.rs:1068:30 [INFO] [stdout] | [INFO] [stdout] 1068 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1068 - for a in 0..num_actions { [INFO] [stdout] 1068 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/turn_solver.rs:1213:30 [INFO] [stdout] | [INFO] [stdout] 1213 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1213 - for a in 0..num_actions { [INFO] [stdout] 1213 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:1133:5 [INFO] [stdout] | [INFO] [stdout] 1133 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:1216:29 [INFO] [stdout] | [INFO] [stdout] 1216 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1233 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1259 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:1134:5 [INFO] [stdout] | [INFO] [stdout] 1134 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:1216:41 [INFO] [stdout] | [INFO] [stdout] 1216 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1233 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1259 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/turn_solver.rs:1467:22 [INFO] [stdout] | [INFO] [stdout] 1467 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 1467 - for i in 0..num_to_show { [INFO] [stdout] 1467 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/flop_solver.rs:213:27 [INFO] [stdout] | [INFO] [stdout] 213 | let num_oop_buckets = (*flop_oop_buckets.iter().max().unwrap_or(&0) + 1) as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*flop_oop_buckets.iter().max().unwrap_or(&0) + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/flop_solver.rs:214:26 [INFO] [stdout] | [INFO] [stdout] 214 | let num_ip_buckets = (*flop_ip_buckets.iter().max().unwrap_or(&0) + 1) as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*flop_ip_buckets.iter().max().unwrap_or(&0) + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/flop_solver.rs:389:22 [INFO] [stdout] | [INFO] [stdout] 389 | let results: Vec<((Vec, Vec), (Vec, Vec))> = (0..num_runouts) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:814:66 [INFO] [stdout] | [INFO] [stdout] 814 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:711:5 [INFO] [stdout] | [INFO] [stdout] 711 | oop_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:828:25 [INFO] [stdout] | [INFO] [stdout] 828 | oop_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 919 | oop_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:712:5 [INFO] [stdout] | [INFO] [stdout] 712 | ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:829:25 [INFO] [stdout] | [INFO] [stdout] 829 | ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:723:5 [INFO] [stdout] | [INFO] [stdout] 723 | flop_pot: f64, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:840:25 [INFO] [stdout] | [INFO] [stdout] 840 | flop_pot, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 931 | flop_pot, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1058:66 [INFO] [stdout] | [INFO] [stdout] 1058 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1303:66 [INFO] [stdout] | [INFO] [stdout] 1303 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1194:5 [INFO] [stdout] | [INFO] [stdout] 1194 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1313:25 [INFO] [stdout] | [INFO] [stdout] 1313 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1388 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1195:5 [INFO] [stdout] | [INFO] [stdout] 1195 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1314:25 [INFO] [stdout] | [INFO] [stdout] 1314 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1389 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1486:62 [INFO] [stdout] | [INFO] [stdout] 1486 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1435:5 [INFO] [stdout] | [INFO] [stdout] 1435 | oop_blockers: &[[bool; 52]], ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1491:25 [INFO] [stdout] | [INFO] [stdout] 1491 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1543 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1435:34 [INFO] [stdout] | [INFO] [stdout] 1435 | oop_blockers: &[[bool; 52]], ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1491:39 [INFO] [stdout] | [INFO] [stdout] 1491 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1543 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1441:5 [INFO] [stdout] | [INFO] [stdout] 1441 | flop_pot: f64, turn_template: &TreeNode, river_template: &TreeNode, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1497:25 [INFO] [stdout] | [INFO] [stdout] 1497 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1549 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1613:62 [INFO] [stdout] | [INFO] [stdout] 1613 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1744:62 [INFO] [stdout] | [INFO] [stdout] 1744 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1683:5 [INFO] [stdout] | [INFO] [stdout] 1683 | oop_combos: &[Combo], ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1747:36 [INFO] [stdout] | [INFO] [stdout] 1747 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1790 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1683:27 [INFO] [stdout] | [INFO] [stdout] 1683 | oop_combos: &[Combo], ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1747:48 [INFO] [stdout] | [INFO] [stdout] 1747 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1790 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/flop_solver.rs:1852:21 [INFO] [stdout] | [INFO] [stdout] 1852 | let river_data: Vec<((Vec, Vec), (Vec, Vec))> = (0..num_runouts) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2111:30 [INFO] [stdout] | [INFO] [stdout] 2111 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2111 - for a in 0..num_actions { [INFO] [stdout] 2111 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2034:5 [INFO] [stdout] | [INFO] [stdout] 2034 | flop_pot: f64, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2119:29 [INFO] [stdout] | [INFO] [stdout] 2119 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2141 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2177 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2261:30 [INFO] [stdout] | [INFO] [stdout] 2261 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2261 - for a in 0..num_actions { [INFO] [stdout] 2261 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2417:30 [INFO] [stdout] | [INFO] [stdout] 2417 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2417 - for a in 0..num_actions { [INFO] [stdout] 2417 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2339:5 [INFO] [stdout] | [INFO] [stdout] 2339 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2420:40 [INFO] [stdout] | [INFO] [stdout] 2420 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2438 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2469 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2340:5 [INFO] [stdout] | [INFO] [stdout] 2340 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2420:52 [INFO] [stdout] | [INFO] [stdout] 2420 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2438 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2469 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/flop_solver.rs:2608:1 [INFO] [stdout] | [INFO] [stdout] 2608 | / fn extract_flop_strategies( [INFO] [stdout] 2609 | | node: &TreeNode, [INFO] [stdout] 2610 | | flop_oop_cfr: &FlatCfr, [INFO] [stdout] 2611 | | flop_ip_cfr: &FlatCfr, [INFO] [stdout] ... | [INFO] [stdout] 2616 | | strategies: &mut Vec, [INFO] [stdout] 2617 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/flop_solver.rs:2820:22 [INFO] [stdout] | [INFO] [stdout] 2820 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 2820 - for i in 0..num_to_show { [INFO] [stdout] 2820 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `gto_cli::lookup_eval::evaluate_fast` [INFO] [stdout] --> tests/test_river_solver.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use gto_cli::lookup_eval::evaluate_fast; [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: `Player` [INFO] [stdout] --> tests/test_river_solver.rs:6:42 [INFO] [stdout] | [INFO] [stdout] 6 | use gto_cli::postflop_tree::{build_tree, Player, TerminalType, TreeConfig, TreeNode}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> tests/test_flop_solver.rs:76:21 [INFO] [stdout] | [INFO] [stdout] 76 | f >= -0.01 && f <= 1.01, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(-0.01..=1.01).contains(&f)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> tests/test_turn_solver.rs:60:21 [INFO] [stdout] | [INFO] [stdout] 60 | f >= -0.01 && f <= 1.01, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(-0.01..=1.01).contains(&f)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `gto_cli::error::GtoError` [INFO] [stdout] --> tests/test_cards.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use gto_cli::error::GtoError; [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: `cards_to_indices` [INFO] [stdout] --> tests/test_lookup_eval.rs:5:45 [INFO] [stdout] | [INFO] [stdout] 5 | use gto_cli::card_encoding::{card_to_index, cards_to_indices, index_to_card}; [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: `HandCategory` [INFO] [stdout] --> tests/test_lookup_eval.rs:7:61 [INFO] [stdout] | [INFO] [stdout] 7 | use gto_cli::hand_evaluator::{compare_hands, evaluate_hand, HandCategory}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> tests/test_cards.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | assert!(!(king < queen)); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `(king >= queen)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> tests/test_river_solver.rs:270:21 [INFO] [stdout] | [INFO] [stdout] 270 | f >= -0.001 && f <= 1.001, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(-0.001..=1.001).contains(&f)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/river_solver.rs:169:53 [INFO] [stdout] | [INFO] [stdout] 169 | let board: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/test_river_solver.rs:376:41 [INFO] [stdout] | [INFO] [stdout] 376 | let combos = expand_range_to_combos(&vec!["AA".to_string()], &b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["AA".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/test_river_solver.rs:380:41 [INFO] [stdout] | [INFO] [stdout] 380 | let combos = expand_range_to_combos(&vec!["AKs".to_string()], &b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["AKs".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/test_river_solver.rs:384:41 [INFO] [stdout] | [INFO] [stdout] 384 | let combos = expand_range_to_combos(&vec!["AKo".to_string()], &b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["AKo".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/test_river_solver.rs:389:41 [INFO] [stdout] | [INFO] [stdout] 389 | let combos = expand_range_to_combos(&vec!["AA".to_string()], &b2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["AA".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/test_river_solver.rs:409:41 [INFO] [stdout] | [INFO] [stdout] 409 | let combos = expand_range_to_combos(&vec!["AA".to_string()], &b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["AA".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> tests/test_audit.rs:795:9 [INFO] [stdout] | [INFO] [stdout] 795 | rfi_combos >= 200 && rfi_combos <= 350, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(200..=350).contains(&rfi_combos)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> tests/test_audit.rs:804:9 [INFO] [stdout] | [INFO] [stdout] 804 | three_bet_combos >= 50 && three_bet_combos <= 120, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(50..=120).contains(&three_bet_combos)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/river_solver.rs:608:26 [INFO] [stdout] | [INFO] [stdout] 608 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 608 - for a in 0..num_actions { [INFO] [stdout] 608 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/river_solver.rs:889:22 [INFO] [stdout] | [INFO] [stdout] 889 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 889 - for i in 0..num_to_show { [INFO] [stdout] 889 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/strategy.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | / pub fn query_postflop( [INFO] [stdout] 214 | | &mut self, [INFO] [stdout] 215 | | hand: &str, [INFO] [stdout] 216 | | hero: Position, [INFO] [stdout] ... | [INFO] [stdout] 222 | | action_path: &[String], [INFO] [stdout] 223 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:287:5 [INFO] [stdout] | [INFO] [stdout] 287 | / fn query_flop( [INFO] [stdout] 288 | | &self, [INFO] [stdout] 289 | | hand: &str, [INFO] [stdout] 290 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 299 | | action_path: &[String], [INFO] [stdout] 300 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 317 | / fn query_turn( [INFO] [stdout] 318 | | &self, [INFO] [stdout] 319 | | hand: &str, [INFO] [stdout] 320 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 329 | | action_path: &[String], [INFO] [stdout] 330 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:360:5 [INFO] [stdout] | [INFO] [stdout] 360 | / fn query_river( [INFO] [stdout] 361 | | &self, [INFO] [stdout] 362 | | hand: &str, [INFO] [stdout] 363 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 372 | | action_path: &[String], [INFO] [stdout] 373 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/strategy.rs:634:57 [INFO] [stdout] | [INFO] [stdout] 634 | let board_indices: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/turn_solver.rs:49:53 [INFO] [stdout] | [INFO] [stdout] 49 | let board: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Rank` [INFO] [stdout] --> src/card_encoding.rs:7:26 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::cards::{Card, Rank, Suit, ALL_RANKS, ALL_SUITS}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/turn_solver.rs:375:66 [INFO] [stdout] | [INFO] [stdout] 375 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:272:5 [INFO] [stdout] | [INFO] [stdout] 272 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:384:25 [INFO] [stdout] | [INFO] [stdout] 384 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 451 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:273:5 [INFO] [stdout] | [INFO] [stdout] 273 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:385:25 [INFO] [stdout] | [INFO] [stdout] 385 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:274:5 [INFO] [stdout] | [INFO] [stdout] 274 | river_board: &[u8; 5], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_river_board` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:386:25 [INFO] [stdout] | [INFO] [stdout] 386 | river_board, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | river_board, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/turn_solver.rs:686:66 [INFO] [stdout] | [INFO] [stdout] 686 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/turn_solver.rs:784:1 [INFO] [stdout] | [INFO] [stdout] 784 | / pub fn compute_exploitability( [INFO] [stdout] 785 | | tree: &TreeNode, [INFO] [stdout] 786 | | oop_cfr: &FlatCfr, [INFO] [stdout] 787 | | ip_cfr: &FlatCfr, [INFO] [stdout] ... | [INFO] [stdout] 792 | | board: &[u8], [INFO] [stdout] 793 | | ) -> f64 { [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `valid_for` [INFO] [stdout] --> src/turn_solver.rs:866:14 [INFO] [stdout] | [INFO] [stdout] 866 | for h in 0..num_br { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 866 - for h in 0..num_br { [INFO] [stdout] 866 + for (h, ) in valid_for.iter().enumerate().take(num_br) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/turn_solver.rs:1068:30 [INFO] [stdout] | [INFO] [stdout] 1068 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1068 - for a in 0..num_actions { [INFO] [stdout] 1068 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/turn_solver.rs:1213:30 [INFO] [stdout] | [INFO] [stdout] 1213 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1213 - for a in 0..num_actions { [INFO] [stdout] 1213 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:1133:5 [INFO] [stdout] | [INFO] [stdout] 1133 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:1216:29 [INFO] [stdout] | [INFO] [stdout] 1216 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1233 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1259 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:1134:5 [INFO] [stdout] | [INFO] [stdout] 1134 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:1216:41 [INFO] [stdout] | [INFO] [stdout] 1216 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1233 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1259 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/turn_solver.rs:1467:22 [INFO] [stdout] | [INFO] [stdout] 1467 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 1467 - for i in 0..num_to_show { [INFO] [stdout] 1467 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `break_even_pct` and `spr as calc_spr` [INFO] [stdout] --> src/play.rs:10:26 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::math_engine::{break_even_pct, spr as calc_spr, SprZone}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::multiway::multiway_range_adjustment` [INFO] [stdout] --> src/play.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::multiway::multiway_range_adjustment; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `get_rfi_pct` [INFO] [stdout] --> src/play.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | get_rfi_pct, get_rfi_range, preflop_action, positions_for, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HAND_RANKING` [INFO] [stdout] --> src/play.rs:17:58 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::ranges::{blockers_remove, range_from_top_pct, HAND_RANKING}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `detect_street` [INFO] [stdout] --> src/play.rs:19:22 [INFO] [stdout] | [INFO] [stdout] 19 | default_villain, detect_street, format_strategy, StrategyEngine, StrategySource, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `break_even_pct` and `spr as calc_spr` [INFO] [stdout] --> src/play.rs:10:26 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::math_engine::{break_even_pct, spr as calc_spr, SprZone}; [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: `crate::multiway::multiway_range_adjustment` [INFO] [stdout] --> src/play.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::multiway::multiway_range_adjustment; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `get_rfi_pct` [INFO] [stdout] --> src/play.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | get_rfi_pct, get_rfi_range, preflop_action, positions_for, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HAND_RANKING` [INFO] [stdout] --> src/play.rs:17:58 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::ranges::{blockers_remove, range_from_top_pct, HAND_RANKING}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `detect_street` [INFO] [stdout] --> src/play.rs:19:22 [INFO] [stdout] | [INFO] [stdout] 19 | default_villain, detect_street, format_strategy, StrategyEngine, StrategySource, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bb_amount` [INFO] [stdout] --> src/play.rs:455:9 [INFO] [stdout] | [INFO] [stdout] 455 | let bb_amount = 1.0; // Use bb as unit [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bb_amount` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_solver_preflop` [INFO] [stdout] --> src/play.rs:495:9 [INFO] [stdout] | [INFO] [stdout] 495 | let has_solver_preflop = show_preflop_advice( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_solver_preflop` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `board_str` is never read [INFO] [stdout] --> src/play.rs:514:25 [INFO] [stdout] | [INFO] [stdout] 514 | let mut board_str = String::new(); [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: unused variable: `b` [INFO] [stdout] --> src/flop_enumerator.rs:277:13 [INFO] [stdout] | [INFO] [stdout] 277 | let b = canonicalize(&[(11, 0), (7, 1), (2, 0)]); // Ks9h4s [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_b` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cards_to_indices` is never used [INFO] [stdout] --> src/card_encoding.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn cards_to_indices(cards: &[Card]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SUITS_STR` is never used [INFO] [stdout] --> src/cards.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub const SUITS_STR: &str = "shdc"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Deck` is never constructed [INFO] [stdout] --> src/cards.rs:179:12 [INFO] [stdout] | [INFO] [stdout] 179 | pub struct Deck { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `shuffle`, `deal`, and `len` are never used [INFO] [stdout] --> src/cards.rs:184:12 [INFO] [stdout] | [INFO] [stdout] 183 | impl Deck { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 184 | pub fn new(exclude: Option<&[Card]>) -> Deck { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | pub fn shuffle(&mut self) -> &mut Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn deal(&mut self, n: usize) -> GtoResult> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 213 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rank_index` is never used [INFO] [stdout] --> src/cards.rs:314:8 [INFO] [stdout] | [INFO] [stdout] 314 | pub fn rank_index(c: char) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_str` is never used [INFO] [stdout] --> src/cli.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 49 | impl Situation { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 50 | fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run` is never used [INFO] [stdout] --> src/cli.rs:403:8 [INFO] [stdout] | [INFO] [stdout] 403 | pub fn run() { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `range_grid_strs` is never used [INFO] [stdout] --> src/display.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn range_grid_strs(hands_in_range: &[&str], title: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `odds_table` is never used [INFO] [stdout] --> src/display.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn odds_table(pot: f64, bet: f64, equity_needed: f64, ev_value: Option) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_action` is never used [INFO] [stdout] --> src/display.rs:190:8 [INFO] [stdout] | [INFO] [stdout] 190 | pub fn print_action(action: &str, detail: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_section` is never used [INFO] [stdout] --> src/display.rs:199:8 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn print_section(title: &str, content: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_success` is never used [INFO] [stdout] --> src/display.rs:208:8 [INFO] [stdout] | [INFO] [stdout] 208 | pub fn print_success(msg: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `NotEnoughDeck` and `RangeDataNotFound` are never constructed [INFO] [stdout] --> src/error.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum GtoError { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 24 | NotEnoughDeck { requested: usize, available: usize }, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | RangeDataNotFound(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GtoError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `num_nodes`, `total_entries`, and `memory_bytes` are never used [INFO] [stdout] --> src/flat_cfr.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl FlatCfr { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn num_nodes(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn total_entries(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 80 | pub fn memory_bytes(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `cards` is never read [INFO] [stdout] --> src/hand_evaluator.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct HandResult { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 45 | pub cards: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HandResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `compare_hands` is never used [INFO] [stdout] --> src/hand_evaluator.rs:234:8 [INFO] [stdout] | [INFO] [stdout] 234 | pub fn compare_hands(hand1: &[Card], hand2: &[Card], board: &[Card]) -> GtoResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `category_from_score` is never used [INFO] [stdout] --> src/lookup_eval.rs:202:8 [INFO] [stdout] | [INFO] [stdout] 202 | pub fn category_from_score(score: u32) -> HandCategory { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `kickers_from_score` is never used [INFO] [stdout] --> src/lookup_eval.rs:218:8 [INFO] [stdout] | [INFO] [stdout] 218 | pub fn kickers_from_score(score: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reverse_implied_odds` is never used [INFO] [stdout] --> src/math_engine.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn reverse_implied_odds(pot: f64, bet: f64, risk: f64) -> GtoResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fold_equity` is never used [INFO] [stdout] --> src/math_engine.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn fold_equity(fold_pct: f64, pot: f64, bet: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `effective_stack` is never used [INFO] [stdout] --> src/math_engine.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn effective_stack(stacks: &[f64]) -> GtoResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MultiwayBetAdvice` is never constructed [INFO] [stdout] --> src/multiway.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct MultiwayBetAdvice { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `multiway_cbet` is never used [INFO] [stdout] --> src/multiway.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn multiway_cbet(num_players: usize, board_wetness: &str, position: &str) -> MultiwayBetAdvice { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `multiway_sizing` is never used [INFO] [stdout] --> src/multiway.rs:83:8 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn multiway_sizing(num_players: usize, board_wetness: &str) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `POSITION_ORDER_6MAX` is never used [INFO] [stdout] --> src/play.rs:26:7 [INFO] [stdout] | [INFO] [stdout] 26 | const POSITION_ORDER_6MAX: &[(&str, u8)] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `POSITION_ORDER_9MAX` is never used [INFO] [stdout] --> src/play.rs:30:7 [INFO] [stdout] | [INFO] [stdout] 30 | const POSITION_ORDER_9MAX: &[(&str, u8)] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `position_order` is never used [INFO] [stdout] --> src/play.rs:35:4 [INFO] [stdout] | [INFO] [stdout] 35 | fn position_order(pos: &str, table_size: &str) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_in_position` is never used [INFO] [stdout] --> src/play.rs:44:8 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn is_in_position(hero_pos: &str, villain_pos: &str, table_size: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `explain_position` is never used [INFO] [stdout] --> src/play.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn explain_position(pos: &str) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `explain_hand_category` is never used [INFO] [stdout] --> src/play.rs:193:8 [INFO] [stdout] | [INFO] [stdout] 193 | pub fn explain_hand_category(category: HandCategory) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `explain_board_texture` is never used [INFO] [stdout] --> src/play.rs:208:8 [INFO] [stdout] | [INFO] [stdout] 208 | pub fn explain_board_texture(wetness: Wetness) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `explain_spr` is never used [INFO] [stdout] --> src/play.rs:216:8 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn explain_spr(zone: SprZone) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `explain_strength` is never used [INFO] [stdout] --> src/play.rs:224:8 [INFO] [stdout] | [INFO] [stdout] 224 | pub fn explain_strength(strength: &str) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_sizing_pct` is never used [INFO] [stdout] --> src/play.rs:377:4 [INFO] [stdout] | [INFO] [stdout] 377 | fn parse_sizing_pct(sizing: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cards`, `is_monotone`, `is_two_tone`, `is_rainbow`, and `connectedness` are never read [INFO] [stdout] --> src/postflop.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct BoardTexture { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 42 | pub cards: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub is_monotone: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 46 | pub is_two_tone: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 47 | pub is_rainbow: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub connectedness: Connectedness, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BoardTexture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `should_cbet` is never read [INFO] [stdout] --> src/postflop.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 225 | pub struct CBetRecommendation { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] 226 | pub should_cbet: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `hand_strength` is never read [INFO] [stdout] --> src/postflop.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 372 | pub struct StreetStrategy { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 376 | pub hand_strength: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pot`, `stacks`, and `invested` are never read [INFO] [stdout] --> src/postflop_tree.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 83 | Chance { [INFO] [stdout] | ------ fields in this variant [INFO] [stdout] 84 | pot: f64, [INFO] [stdout] | ^^^ [INFO] [stdout] 85 | stacks: [f64; 2], [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 86 | invested: [f64; 2], [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TreeNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `count_action_nodes` and `count_terminal_nodes` are never used [INFO] [stdout] --> src/postflop_tree.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 94 | impl TreeNode { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 95 | pub fn count_action_nodes(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn count_terminal_nodes(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `default_river` is never used [INFO] [stdout] --> src/postflop_tree.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 136 | impl TreeConfig { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 137 | pub fn default_river(starting_pot: f64, effective_stack: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `squeeze` and `fold` are never read [INFO] [stdout] --> src/preflop.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 35 | struct SqueezeEntry { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 36 | squeeze: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 37 | fold: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SqueezeEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `squeeze` is never read [INFO] [stdout] --> src/preflop.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 48 | struct RangeData { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 54 | squeeze: HashMap, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RangeData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fold` is never read [INFO] [stdout] --> src/preflop.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 113 | pub struct VsRfiResult { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 116 | pub fold: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VsRfiResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fold` is never read [INFO] [stdout] --> src/preflop.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 151 | pub struct Vs3BetResult { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 154 | pub fold: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Vs3BetResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_squeeze_range` is never used [INFO] [stdout] --> src/preflop.rs:186:8 [INFO] [stdout] | [INFO] [stdout] 186 | pub fn get_squeeze_range( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `hand` and `position` are never read [INFO] [stdout] --> src/preflop.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 227 | pub struct PreflopAction { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 228 | pub action: String, [INFO] [stdout] 229 | pub hand: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 230 | pub position: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `total_combos_strs` is never used [INFO] [stdout] --> src/ranges.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 174 | pub fn total_combos_strs(hands: &[&str]) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `range_pct_strs` is never used [INFO] [stdout] --> src/ranges.rs:182:8 [INFO] [stdout] | [INFO] [stdout] 182 | pub fn range_pct_strs(hands: &[&str]) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `blocked_combos` is never used [INFO] [stdout] --> src/ranges.rs:202:8 [INFO] [stdout] | [INFO] [stdout] 202 | pub fn blocked_combos(hand_notation: &str, hero_cards: &[Card]) -> GtoResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stack_bb` is never read [INFO] [stdout] --> src/strategy.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct StrategyEngine { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 17 | preflop: Option, [INFO] [stdout] 18 | pub stack_bb: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `SolvedOnDemand` is never constructed [INFO] [stdout] --> src/strategy.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum StrategySource { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] 29 | Cached, [INFO] [stdout] 30 | SolvedOnDemand, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StrategySource` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `FourBet` is never constructed [INFO] [stdout] --> src/strategy.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub enum PotType { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 42 | FourBet, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PotType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/batch.rs:97:9 [INFO] [stdout] | [INFO] [stdout] 97 | flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 97 - flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] 97 + flops.sort_by_key(|b| std::cmp::Reverse(strategic_priority(b))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used consecutive `str::replace` call [INFO] [stdout] --> src/cards.rs:230:36 [INFO] [stdout] | [INFO] [stdout] 230 | let notation = notation.trim().replace(' ', "").replace(',', ""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `replace([' ', ','], "")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_str_replace [INFO] [stdout] = note: `#[warn(clippy::collapsible_str_replace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/cards.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 231 | if notation.len() % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!notation.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `ALL_SUITS` [INFO] [stdout] --> src/cards.rs:270:18 [INFO] [stdout] | [INFO] [stdout] 270 | for i in 0..ALL_SUITS.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 270 - for i in 0..ALL_SUITS.len() { [INFO] [stdout] 270 + for (i, ) in ALL_SUITS.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `ALL_SUITS` [INFO] [stdout] --> src/cards.rs:271:22 [INFO] [stdout] | [INFO] [stdout] 271 | for j in (i + 1)..ALL_SUITS.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 271 - for j in (i + 1)..ALL_SUITS.len() { [INFO] [stdout] 271 + for in ALL_SUITS.iter().skip((i + 1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bb_amount` [INFO] [stdout] --> src/play.rs:455:9 [INFO] [stdout] | [INFO] [stdout] 455 | let bb_amount = 1.0; // Use bb as unit [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bb_amount` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_solver_preflop` [INFO] [stdout] --> src/play.rs:495:9 [INFO] [stdout] | [INFO] [stdout] 495 | let has_solver_preflop = show_preflop_advice( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_solver_preflop` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `board_str` is never read [INFO] [stdout] --> src/play.rs:514:25 [INFO] [stdout] | [INFO] [stdout] 514 | let mut board_str = String::new(); [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: name `RFI` contains a capitalized acronym [INFO] [stdout] --> src/cli.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | RFI, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Rfi` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `RFI` contains a capitalized acronym [INFO] [stdout] --> src/cli.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | RFI, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Rfi` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (11/7) [INFO] [stdout] --> src/cli.rs:1435:1 [INFO] [stdout] | [INFO] [stdout] 1435 | / fn cmd_action( [INFO] [stdout] 1436 | | hand: String, [INFO] [stdout] 1437 | | position: String, [INFO] [stdout] 1438 | | board: Option, [INFO] [stdout] ... | [INFO] [stdout] 1446 | | strength: Option, [INFO] [stdout] 1447 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/cli.rs:1865:8 [INFO] [stdout] | [INFO] [stdout] 1865 | if rake < 0.0 || rake > 100.0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=100.0).contains(&rake)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/cli.rs:1887:8 [INFO] [stdout] | [INFO] [stdout] 1887 | if rake < 0.0 || rake > 100.0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=100.0).contains(&rake)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/cli.rs:1892:5 [INFO] [stdout] | [INFO] [stdout] 1892 | / match table_size { [INFO] [stdout] 1893 | | TableSize::NineMax => { [INFO] [stdout] 1894 | | print_error("Preflop solver currently only supports 6max"); [INFO] [stdout] 1895 | | return; [INFO] [stdout] 1896 | | } [INFO] [stdout] 1897 | | _ => {} [INFO] [stdout] 1898 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1892 ~ if let TableSize::NineMax = table_size { [INFO] [stdout] 1893 + print_error("Preflop solver currently only supports 6max"); [INFO] [stdout] 1894 + return; [INFO] [stdout] 1895 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `action_values` [INFO] [stdout] --> src/flat_cfr.rs:181:18 [INFO] [stdout] | [INFO] [stdout] 181 | for i in 0..na { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 181 - for i in 0..na { [INFO] [stdout] 181 + for (i, ) in action_values.iter().enumerate().take(na) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/flop_enumerator.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | sorted.sort_by(|a, b| b.0.cmp(&a.0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 52 - sorted.sort_by(|a, b| b.0.cmp(&a.0)); [INFO] [stdout] 52 + sorted.sort_by_key(|b| std::cmp::Reverse(b.0)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/flop_solver.rs:65:18 [INFO] [stdout] | [INFO] [stdout] 65 | .map(|c| crate::card_encoding::card_to_index(c)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `crate::card_encoding::card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cards_to_indices` is never used [INFO] [stdout] --> src/card_encoding.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn cards_to_indices(cards: &[Card]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SUITS_STR` is never used [INFO] [stdout] --> src/cards.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub const SUITS_STR: &str = "shdc"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Deck` is never constructed [INFO] [stdout] --> src/cards.rs:179:12 [INFO] [stdout] | [INFO] [stdout] 179 | pub struct Deck { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `shuffle`, `deal`, and `len` are never used [INFO] [stdout] --> src/cards.rs:184:12 [INFO] [stdout] | [INFO] [stdout] 183 | impl Deck { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 184 | pub fn new(exclude: Option<&[Card]>) -> Deck { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | pub fn shuffle(&mut self) -> &mut Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn deal(&mut self, n: usize) -> GtoResult> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 213 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rank_index` is never used [INFO] [stdout] --> src/cards.rs:314:8 [INFO] [stdout] | [INFO] [stdout] 314 | pub fn rank_index(c: char) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_str` is never used [INFO] [stdout] --> src/cli.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 49 | impl Situation { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 50 | fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run` is never used [INFO] [stdout] --> src/cli.rs:403:8 [INFO] [stdout] | [INFO] [stdout] 403 | pub fn run() { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `range_grid_strs` is never used [INFO] [stdout] --> src/display.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn range_grid_strs(hands_in_range: &[&str], title: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `odds_table` is never used [INFO] [stdout] --> src/display.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn odds_table(pot: f64, bet: f64, equity_needed: f64, ev_value: Option) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_action` is never used [INFO] [stdout] --> src/display.rs:190:8 [INFO] [stdout] | [INFO] [stdout] 190 | pub fn print_action(action: &str, detail: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_section` is never used [INFO] [stdout] --> src/display.rs:199:8 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn print_section(title: &str, content: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_success` is never used [INFO] [stdout] --> src/display.rs:208:8 [INFO] [stdout] | [INFO] [stdout] 208 | pub fn print_success(msg: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `NotEnoughDeck` and `RangeDataNotFound` are never constructed [INFO] [stdout] --> src/error.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum GtoError { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 24 | NotEnoughDeck { requested: usize, available: usize }, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | RangeDataNotFound(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GtoError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `cards` is never read [INFO] [stdout] --> src/hand_evaluator.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct HandResult { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 45 | pub cards: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HandResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `compare_hands` is never used [INFO] [stdout] --> src/hand_evaluator.rs:234:8 [INFO] [stdout] | [INFO] [stdout] 234 | pub fn compare_hands(hand1: &[Card], hand2: &[Card], board: &[Card]) -> GtoResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reverse_implied_odds` is never used [INFO] [stdout] --> src/math_engine.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn reverse_implied_odds(pot: f64, bet: f64, risk: f64) -> GtoResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fold_equity` is never used [INFO] [stdout] --> src/math_engine.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn fold_equity(fold_pct: f64, pot: f64, bet: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `effective_stack` is never used [INFO] [stdout] --> src/math_engine.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn effective_stack(stacks: &[f64]) -> GtoResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MultiwayBetAdvice` is never constructed [INFO] [stdout] --> src/multiway.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct MultiwayBetAdvice { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `multiway_cbet` is never used [INFO] [stdout] --> src/multiway.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn multiway_cbet(num_players: usize, board_wetness: &str, position: &str) -> MultiwayBetAdvice { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `multiway_sizing` is never used [INFO] [stdout] --> src/multiway.rs:83:8 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn multiway_sizing(num_players: usize, board_wetness: &str) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `explain_strength` is never used [INFO] [stdout] --> src/play.rs:224:8 [INFO] [stdout] | [INFO] [stdout] 224 | pub fn explain_strength(strength: &str) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cards`, `is_monotone`, `is_two_tone`, `is_rainbow`, and `connectedness` are never read [INFO] [stdout] --> src/postflop.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct BoardTexture { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 42 | pub cards: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub is_monotone: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 46 | pub is_two_tone: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 47 | pub is_rainbow: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub connectedness: Connectedness, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BoardTexture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `should_cbet` is never read [INFO] [stdout] --> src/postflop.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 225 | pub struct CBetRecommendation { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] 226 | pub should_cbet: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `hand_strength` is never read [INFO] [stdout] --> src/postflop.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 372 | pub struct StreetStrategy { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 376 | pub hand_strength: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pot`, `stacks`, and `invested` are never read [INFO] [stdout] --> src/postflop_tree.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 83 | Chance { [INFO] [stdout] | ------ fields in this variant [INFO] [stdout] 84 | pot: f64, [INFO] [stdout] | ^^^ [INFO] [stdout] 85 | stacks: [f64; 2], [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 86 | invested: [f64; 2], [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TreeNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `squeeze` and `fold` are never read [INFO] [stdout] --> src/preflop.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 35 | struct SqueezeEntry { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 36 | squeeze: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 37 | fold: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SqueezeEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `squeeze` is never read [INFO] [stdout] --> src/preflop.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 48 | struct RangeData { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 54 | squeeze: HashMap, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RangeData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fold` is never read [INFO] [stdout] --> src/preflop.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 113 | pub struct VsRfiResult { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 116 | pub fold: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VsRfiResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fold` is never read [INFO] [stdout] --> src/preflop.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 151 | pub struct Vs3BetResult { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 154 | pub fold: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Vs3BetResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_squeeze_range` is never used [INFO] [stdout] --> src/preflop.rs:186:8 [INFO] [stdout] | [INFO] [stdout] 186 | pub fn get_squeeze_range( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `hand` and `position` are never read [INFO] [stdout] --> src/preflop.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 227 | pub struct PreflopAction { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 228 | pub action: String, [INFO] [stdout] 229 | pub hand: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 230 | pub position: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `total_combos_strs` is never used [INFO] [stdout] --> src/ranges.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 174 | pub fn total_combos_strs(hands: &[&str]) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `range_pct_strs` is never used [INFO] [stdout] --> src/ranges.rs:182:8 [INFO] [stdout] | [INFO] [stdout] 182 | pub fn range_pct_strs(hands: &[&str]) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `blocked_combos` is never used [INFO] [stdout] --> src/ranges.rs:202:8 [INFO] [stdout] | [INFO] [stdout] 202 | pub fn blocked_combos(hand_notation: &str, hero_cards: &[Card]) -> GtoResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stack_bb` is never read [INFO] [stdout] --> src/strategy.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct StrategyEngine { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 17 | preflop: Option, [INFO] [stdout] 18 | pub stack_bb: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `SolvedOnDemand` is never constructed [INFO] [stdout] --> src/strategy.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum StrategySource { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] 29 | Cached, [INFO] [stdout] 30 | SolvedOnDemand, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StrategySource` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `FourBet` is never constructed [INFO] [stdout] --> src/strategy.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub enum PotType { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 42 | FourBet, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PotType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/batch.rs:97:9 [INFO] [stdout] | [INFO] [stdout] 97 | flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 97 - flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] 97 + flops.sort_by_key(|b| std::cmp::Reverse(strategic_priority(b))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bucketing.rs:198:18 [INFO] [stdout] | [INFO] [stdout] 198 | .map(|c| card_to_index(c)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/flop_solver.rs:213:27 [INFO] [stdout] | [INFO] [stdout] 213 | let num_oop_buckets = (*flop_oop_buckets.iter().max().unwrap_or(&0) + 1) as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*flop_oop_buckets.iter().max().unwrap_or(&0) + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/flop_solver.rs:214:26 [INFO] [stdout] | [INFO] [stdout] 214 | let num_ip_buckets = (*flop_ip_buckets.iter().max().unwrap_or(&0) + 1) as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*flop_ip_buckets.iter().max().unwrap_or(&0) + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used consecutive `str::replace` call [INFO] [stdout] --> src/cards.rs:230:36 [INFO] [stdout] | [INFO] [stdout] 230 | let notation = notation.trim().replace(' ', "").replace(',', ""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `replace([' ', ','], "")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_str_replace [INFO] [stdout] = note: `#[warn(clippy::collapsible_str_replace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/cards.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 231 | if notation.len() % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!notation.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/flop_solver.rs:389:22 [INFO] [stdout] | [INFO] [stdout] 389 | let results: Vec<((Vec, Vec), (Vec, Vec))> = (0..num_runouts) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `ALL_SUITS` [INFO] [stdout] --> src/cards.rs:270:18 [INFO] [stdout] | [INFO] [stdout] 270 | for i in 0..ALL_SUITS.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 270 - for i in 0..ALL_SUITS.len() { [INFO] [stdout] 270 + for (i, ) in ALL_SUITS.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `ALL_SUITS` [INFO] [stdout] --> src/cards.rs:271:22 [INFO] [stdout] | [INFO] [stdout] 271 | for j in (i + 1)..ALL_SUITS.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 271 - for j in (i + 1)..ALL_SUITS.len() { [INFO] [stdout] 271 + for in ALL_SUITS.iter().skip((i + 1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:814:66 [INFO] [stdout] | [INFO] [stdout] 814 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `RFI` contains a capitalized acronym [INFO] [stdout] --> src/cli.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | RFI, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Rfi` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:711:5 [INFO] [stdout] | [INFO] [stdout] 711 | oop_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:828:25 [INFO] [stdout] | [INFO] [stdout] 828 | oop_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 919 | oop_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:712:5 [INFO] [stdout] | [INFO] [stdout] 712 | ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:829:25 [INFO] [stdout] | [INFO] [stdout] 829 | ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:723:5 [INFO] [stdout] | [INFO] [stdout] 723 | flop_pot: f64, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:840:25 [INFO] [stdout] | [INFO] [stdout] 840 | flop_pot, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 931 | flop_pot, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `RFI` contains a capitalized acronym [INFO] [stdout] --> src/cli.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | RFI, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Rfi` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1058:66 [INFO] [stdout] | [INFO] [stdout] 1058 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1303:66 [INFO] [stdout] | [INFO] [stdout] 1303 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1194:5 [INFO] [stdout] | [INFO] [stdout] 1194 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1313:25 [INFO] [stdout] | [INFO] [stdout] 1313 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1388 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1195:5 [INFO] [stdout] | [INFO] [stdout] 1195 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1314:25 [INFO] [stdout] | [INFO] [stdout] 1314 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1389 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1486:62 [INFO] [stdout] | [INFO] [stdout] 1486 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1435:5 [INFO] [stdout] | [INFO] [stdout] 1435 | oop_blockers: &[[bool; 52]], ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1491:25 [INFO] [stdout] | [INFO] [stdout] 1491 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1543 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1435:34 [INFO] [stdout] | [INFO] [stdout] 1435 | oop_blockers: &[[bool; 52]], ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1491:39 [INFO] [stdout] | [INFO] [stdout] 1491 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1543 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1441:5 [INFO] [stdout] | [INFO] [stdout] 1441 | flop_pot: f64, turn_template: &TreeNode, river_template: &TreeNode, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1497:25 [INFO] [stdout] | [INFO] [stdout] 1497 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1549 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1613:62 [INFO] [stdout] | [INFO] [stdout] 1613 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1744:62 [INFO] [stdout] | [INFO] [stdout] 1744 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1683:5 [INFO] [stdout] | [INFO] [stdout] 1683 | oop_combos: &[Combo], ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1747:36 [INFO] [stdout] | [INFO] [stdout] 1747 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1790 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1683:27 [INFO] [stdout] | [INFO] [stdout] 1683 | oop_combos: &[Combo], ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1747:48 [INFO] [stdout] | [INFO] [stdout] 1747 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1790 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/flop_solver.rs:1852:21 [INFO] [stdout] | [INFO] [stdout] 1852 | let river_data: Vec<((Vec, Vec), (Vec, Vec))> = (0..num_runouts) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2111:30 [INFO] [stdout] | [INFO] [stdout] 2111 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2111 - for a in 0..num_actions { [INFO] [stdout] 2111 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2034:5 [INFO] [stdout] | [INFO] [stdout] 2034 | flop_pot: f64, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2119:29 [INFO] [stdout] | [INFO] [stdout] 2119 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2141 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2177 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2261:30 [INFO] [stdout] | [INFO] [stdout] 2261 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2261 - for a in 0..num_actions { [INFO] [stdout] 2261 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2417:30 [INFO] [stdout] | [INFO] [stdout] 2417 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2417 - for a in 0..num_actions { [INFO] [stdout] 2417 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2339:5 [INFO] [stdout] | [INFO] [stdout] 2339 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2420:40 [INFO] [stdout] | [INFO] [stdout] 2420 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2438 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2469 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2340:5 [INFO] [stdout] | [INFO] [stdout] 2340 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2420:52 [INFO] [stdout] | [INFO] [stdout] 2420 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2438 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2469 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/flop_solver.rs:2608:1 [INFO] [stdout] | [INFO] [stdout] 2608 | / fn extract_flop_strategies( [INFO] [stdout] 2609 | | node: &TreeNode, [INFO] [stdout] 2610 | | flop_oop_cfr: &FlatCfr, [INFO] [stdout] 2611 | | flop_ip_cfr: &FlatCfr, [INFO] [stdout] ... | [INFO] [stdout] 2616 | | strategies: &mut Vec, [INFO] [stdout] 2617 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/flop_solver.rs:2820:22 [INFO] [stdout] | [INFO] [stdout] 2820 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 2820 - for i in 0..num_to_show { [INFO] [stdout] 2820 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `bb_strats` [INFO] [stdout] --> src/game_tree.rs:449:19 [INFO] [stdout] | [INFO] [stdout] 449 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 449 - for bb in 0..NUM_HANDS { [INFO] [stdout] 449 + for (bb, ) in bb_strats.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `sb_strats` [INFO] [stdout] --> src/game_tree.rs:496:19 [INFO] [stdout] | [INFO] [stdout] 496 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 496 - for sb in 0..NUM_HANDS { [INFO] [stdout] 496 + for (sb, ) in sb_strats.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `push_strat` [INFO] [stdout] --> src/game_tree.rs:536:15 [INFO] [stdout] | [INFO] [stdout] 536 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 536 - for sb in 0..NUM_HANDS { [INFO] [stdout] 536 + for (sb, ) in push_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `call_strat` [INFO] [stdout] --> src/game_tree.rs:543:19 [INFO] [stdout] | [INFO] [stdout] 543 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 543 - for bb in 0..NUM_HANDS { [INFO] [stdout] 543 + for (bb, ) in call_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `call_strat` [INFO] [stdout] --> src/game_tree.rs:573:15 [INFO] [stdout] | [INFO] [stdout] 573 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 573 - for bb in 0..NUM_HANDS { [INFO] [stdout] 573 + for (bb, ) in call_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `push_strat` [INFO] [stdout] --> src/game_tree.rs:580:19 [INFO] [stdout] | [INFO] [stdout] 580 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 580 - for sb in 0..NUM_HANDS { [INFO] [stdout] 580 + for (sb, ) in push_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `straight_high` after checking its variant with `is_some` [INFO] [stdout] --> src/hand_evaluator.rs:128:20 [INFO] [stdout] | [INFO] [stdout] 127 | if flush && straight_high.is_some() { [INFO] [stdout] | ----------------------- the check is happening here [INFO] [stdout] 128 | let high = straight_high.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/hand_evaluator.rs:226:12 [INFO] [stdout] | [INFO] [stdout] 226 | if best.as_ref().map_or(true, |b| result > *b) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 226 - if best.as_ref().map_or(true, |b| result > *b) { [INFO] [stdout] 226 + if best.as_ref().is_none_or(|b| result > *b) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sing.get(0)` [INFO] [stdout] --> src/lookup_eval.rs:180:44 [INFO] [stdout] | [INFO] [stdout] 180 | let kick = if np >= 3 && pair[2] > sing.get(0).copied().unwrap_or(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `sing.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sing.get(0)` [INFO] [stdout] --> src/lookup_eval.rs:183:13 [INFO] [stdout] | [INFO] [stdout] 183 | sing.get(0).copied().unwrap_or(0) [INFO] [stdout] | ^^^^^^^^^^^ help: try: `sing.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/play.rs:123:35 [INFO] [stdout] | [INFO] [stdout] 123 | } else if is_top_pair { [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 124 | | "medium" [INFO] [stdout] 125 | | } else if board_values.len() > 1 && pair_rank_value >= board_values[1] { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/play.rs:125:84 [INFO] [stdout] | [INFO] [stdout] 125 | } else if board_values.len() > 1 && pair_rank_value >= board_values[1] { [INFO] [stdout] | ____________________________________________________________________________________^ [INFO] [stdout] 126 | | "medium" [INFO] [stdout] 127 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/play.rs:371:8 [INFO] [stdout] | [INFO] [stdout] 371 | if text.len() % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace with: `!text.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (15/7) [INFO] [stdout] --> src/play.rs:644:1 [INFO] [stdout] | [INFO] [stdout] 644 | / fn show_street_advice( [INFO] [stdout] 645 | | engine: &mut StrategyEngine, [INFO] [stdout] 646 | | hand_str: &str, [INFO] [stdout] 647 | | hero: Position, [INFO] [stdout] ... | [INFO] [stdout] 659 | | writer: &mut dyn Write, [INFO] [stdout] 660 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (11/7) [INFO] [stdout] --> src/play.rs:691:1 [INFO] [stdout] | [INFO] [stdout] 691 | / fn show_heuristic_analysis( [INFO] [stdout] 692 | | street: &str, [INFO] [stdout] 693 | | hole_cards: &[Card], [INFO] [stdout] 694 | | board: &[Card], [INFO] [stdout] ... | [INFO] [stdout] 702 | | writer: &mut dyn Write, [INFO] [stdout] 703 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/postflop.rs:97:25 [INFO] [stdout] | [INFO] [stdout] 97 | let has_connected = gaps.iter().any(|&g| g == 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `gaps.contains(&1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/postflop.rs:98:23 [INFO] [stdout] | [INFO] [stdout] 98 | let has_one_gap = gaps.iter().any(|&g| g == 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `gaps.contains(&2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `OOP` contains a capitalized acronym [INFO] [stdout] --> src/postflop_tree.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | OOP, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Oop` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (11/7) [INFO] [stdout] --> src/cli.rs:1435:1 [INFO] [stdout] | [INFO] [stdout] 1435 | / fn cmd_action( [INFO] [stdout] 1436 | | hand: String, [INFO] [stdout] 1437 | | position: String, [INFO] [stdout] 1438 | | board: Option, [INFO] [stdout] ... | [INFO] [stdout] 1446 | | strength: Option, [INFO] [stdout] 1447 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/cli.rs:1865:8 [INFO] [stdout] | [INFO] [stdout] 1865 | if rake < 0.0 || rake > 100.0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=100.0).contains(&rake)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/cli.rs:1887:8 [INFO] [stdout] | [INFO] [stdout] 1887 | if rake < 0.0 || rake > 100.0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=100.0).contains(&rake)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/cli.rs:1892:5 [INFO] [stdout] | [INFO] [stdout] 1892 | / match table_size { [INFO] [stdout] 1893 | | TableSize::NineMax => { [INFO] [stdout] 1894 | | print_error("Preflop solver currently only supports 6max"); [INFO] [stdout] 1895 | | return; [INFO] [stdout] 1896 | | } [INFO] [stdout] 1897 | | _ => {} [INFO] [stdout] 1898 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1892 ~ if let TableSize::NineMax = table_size { [INFO] [stdout] 1893 + print_error("Preflop solver currently only supports 6max"); [INFO] [stdout] 1894 + return; [INFO] [stdout] 1895 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `UTG` contains a capitalized acronym [INFO] [stdout] --> src/preflop_solver.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | UTG, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Utg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `BTN` contains a capitalized acronym [INFO] [stdout] --> src/preflop_solver.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | BTN, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Btn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `action_values` [INFO] [stdout] --> src/flat_cfr.rs:181:18 [INFO] [stdout] | [INFO] [stdout] 181 | for i in 0..na { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 181 - for i in 0..na { [INFO] [stdout] 181 + for (i, ) in action_values.iter().enumerate().take(na) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `strategy` [INFO] [stdout] --> src/preflop_solver.rs:312:14 [INFO] [stdout] | [INFO] [stdout] 312 | for i in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 312 - for i in 0..NUM_HANDS { [INFO] [stdout] 312 + for (i, ) in strategy.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/flop_enumerator.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | sorted.sort_by(|a, b| b.0.cmp(&a.0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 52 - sorted.sort_by(|a, b| b.0.cmp(&a.0)); [INFO] [stdout] 52 + sorted.sort_by_key(|b| std::cmp::Reverse(b.0)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/preflop_solver.rs:805:1 [INFO] [stdout] | [INFO] [stdout] 805 | / pub fn compute_preflop_exploitability( [INFO] [stdout] 806 | | open_strat: &[f64], [INFO] [stdout] 807 | | vs_open_3bet: &[f64], [INFO] [stdout] 808 | | vs_open_call: &[f64], [INFO] [stdout] ... | [INFO] [stdout] 815 | | payoffs: &PreflopPayoffs, [INFO] [stdout] 816 | | ) -> f64 { [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/flop_enumerator.rs:317:9 [INFO] [stdout] | [INFO] [stdout] 317 | flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 317 - flops.sort_by(|a, b| strategic_priority(b).cmp(&strategic_priority(a))); [INFO] [stdout] 317 + flops.sort_by_key(|b| std::cmp::Reverse(strategic_priority(b))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/flop_enumerator.rs:333:29 [INFO] [stdout] | [INFO] [stdout] 333 | let r1 = rank_value(top.chars().nth(0).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `top.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/flop_solver.rs:65:18 [INFO] [stdout] | [INFO] [stdout] 65 | .map(|c| crate::card_encoding::card_to_index(c)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `crate::card_encoding::card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/preflop_solver.rs:989:26 [INFO] [stdout] | [INFO] [stdout] 989 | .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 989 - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; [INFO] [stdout] 989 + .map_err(|e| std::io::Error::other(e))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/preflop_solver.rs:1004:26 [INFO] [stdout] | [INFO] [stdout] 1004 | .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 1004 - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] 1004 + .map_err(|e| std::io::Error::other(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a suffix manually [INFO] [stdout] --> src/ranges.rs:47:34 [INFO] [stdout] | [INFO] [stdout] 47 | for h in expand_plus(&part[..part.len() - 1]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the suffix was tested here [INFO] [stdout] --> src/ranges.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | if part.ends_with('+') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_suffix` method [INFO] [stdout] | [INFO] [stdout] 46 ~ if let Some() = part.strip_suffix('+') { [INFO] [stdout] 47 ~ for h in expand_plus() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/river_solver.rs:169:53 [INFO] [stdout] | [INFO] [stdout] 169 | let board: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/flop_solver.rs:213:27 [INFO] [stdout] | [INFO] [stdout] 213 | let num_oop_buckets = (*flop_oop_buckets.iter().max().unwrap_or(&0) + 1) as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*flop_oop_buckets.iter().max().unwrap_or(&0) + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/flop_solver.rs:214:26 [INFO] [stdout] | [INFO] [stdout] 214 | let num_ip_buckets = (*flop_ip_buckets.iter().max().unwrap_or(&0) + 1) as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*flop_ip_buckets.iter().max().unwrap_or(&0) + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/flop_solver.rs:389:22 [INFO] [stdout] | [INFO] [stdout] 389 | let results: Vec<((Vec, Vec), (Vec, Vec))> = (0..num_runouts) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:814:66 [INFO] [stdout] | [INFO] [stdout] 814 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:711:5 [INFO] [stdout] | [INFO] [stdout] 711 | oop_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:828:25 [INFO] [stdout] | [INFO] [stdout] 828 | oop_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 919 | oop_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:712:5 [INFO] [stdout] | [INFO] [stdout] 712 | ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:829:25 [INFO] [stdout] | [INFO] [stdout] 829 | ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:723:5 [INFO] [stdout] | [INFO] [stdout] 723 | flop_pot: f64, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:840:25 [INFO] [stdout] | [INFO] [stdout] 840 | flop_pot, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 931 | flop_pot, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/river_solver.rs:608:26 [INFO] [stdout] | [INFO] [stdout] 608 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 608 - for a in 0..num_actions { [INFO] [stdout] 608 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1058:66 [INFO] [stdout] | [INFO] [stdout] 1058 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1303:66 [INFO] [stdout] | [INFO] [stdout] 1303 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1194:5 [INFO] [stdout] | [INFO] [stdout] 1194 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1313:25 [INFO] [stdout] | [INFO] [stdout] 1313 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1388 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1195:5 [INFO] [stdout] | [INFO] [stdout] 1195 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1314:25 [INFO] [stdout] | [INFO] [stdout] 1314 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1389 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/river_solver.rs:889:22 [INFO] [stdout] | [INFO] [stdout] 889 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 889 - for i in 0..num_to_show { [INFO] [stdout] 889 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1486:62 [INFO] [stdout] | [INFO] [stdout] 1486 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1435:5 [INFO] [stdout] | [INFO] [stdout] 1435 | oop_blockers: &[[bool; 52]], ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1491:25 [INFO] [stdout] | [INFO] [stdout] 1491 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1543 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1435:34 [INFO] [stdout] | [INFO] [stdout] 1435 | oop_blockers: &[[bool; 52]], ip_blockers: &[[bool; 52]], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_blockers` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1491:39 [INFO] [stdout] | [INFO] [stdout] 1491 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1543 | oop_blockers, ip_blockers, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1441:5 [INFO] [stdout] | [INFO] [stdout] 1441 | flop_pot: f64, turn_template: &TreeNode, river_template: &TreeNode, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1497:25 [INFO] [stdout] | [INFO] [stdout] 1497 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1549 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1613:62 [INFO] [stdout] | [INFO] [stdout] 1613 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/strategy.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | / pub fn query_postflop( [INFO] [stdout] 214 | | &mut self, [INFO] [stdout] 215 | | hand: &str, [INFO] [stdout] 216 | | hero: Position, [INFO] [stdout] ... | [INFO] [stdout] 222 | | action_path: &[String], [INFO] [stdout] 223 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/flop_solver.rs:1744:62 [INFO] [stdout] | [INFO] [stdout] 1744 | if strategy[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:287:5 [INFO] [stdout] | [INFO] [stdout] 287 | / fn query_flop( [INFO] [stdout] 288 | | &self, [INFO] [stdout] 289 | | hand: &str, [INFO] [stdout] 290 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 299 | | action_path: &[String], [INFO] [stdout] 300 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 317 | / fn query_turn( [INFO] [stdout] 318 | | &self, [INFO] [stdout] 319 | | hand: &str, [INFO] [stdout] 320 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 329 | | action_path: &[String], [INFO] [stdout] 330 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1683:5 [INFO] [stdout] | [INFO] [stdout] 1683 | oop_combos: &[Combo], ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1747:36 [INFO] [stdout] | [INFO] [stdout] 1747 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1790 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:1683:27 [INFO] [stdout] | [INFO] [stdout] 1683 | oop_combos: &[Combo], ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:1747:48 [INFO] [stdout] | [INFO] [stdout] 1747 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1790 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:360:5 [INFO] [stdout] | [INFO] [stdout] 360 | / fn query_river( [INFO] [stdout] 361 | | &self, [INFO] [stdout] 362 | | hand: &str, [INFO] [stdout] 363 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 372 | | action_path: &[String], [INFO] [stdout] 373 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/flop_solver.rs:1852:21 [INFO] [stdout] | [INFO] [stdout] 1852 | let river_data: Vec<((Vec, Vec), (Vec, Vec))> = (0..num_runouts) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2111:30 [INFO] [stdout] | [INFO] [stdout] 2111 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2111 - for a in 0..num_actions { [INFO] [stdout] 2111 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/strategy.rs:634:57 [INFO] [stdout] | [INFO] [stdout] 634 | let board_indices: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2034:5 [INFO] [stdout] | [INFO] [stdout] 2034 | flop_pot: f64, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flop_pot` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2119:29 [INFO] [stdout] | [INFO] [stdout] 2119 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2141 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2177 | flop_pot, turn_template, river_template, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2261:30 [INFO] [stdout] | [INFO] [stdout] 2261 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2261 - for a in 0..num_actions { [INFO] [stdout] 2261 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/turn_solver.rs:49:53 [INFO] [stdout] | [INFO] [stdout] 49 | let board: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/flop_solver.rs:2417:30 [INFO] [stdout] | [INFO] [stdout] 2417 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2417 - for a in 0..num_actions { [INFO] [stdout] 2417 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2339:5 [INFO] [stdout] | [INFO] [stdout] 2339 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2420:40 [INFO] [stdout] | [INFO] [stdout] 2420 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2438 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2469 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/flop_solver.rs:2340:5 [INFO] [stdout] | [INFO] [stdout] 2340 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/flop_solver.rs:2420:52 [INFO] [stdout] | [INFO] [stdout] 2420 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2438 | opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2469 | &new_opp_reach, oop_combos, ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/flop_solver.rs:2608:1 [INFO] [stdout] | [INFO] [stdout] 2608 | / fn extract_flop_strategies( [INFO] [stdout] 2609 | | node: &TreeNode, [INFO] [stdout] 2610 | | flop_oop_cfr: &FlatCfr, [INFO] [stdout] 2611 | | flop_ip_cfr: &FlatCfr, [INFO] [stdout] ... | [INFO] [stdout] 2616 | | strategies: &mut Vec, [INFO] [stdout] 2617 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/flop_solver.rs:2820:22 [INFO] [stdout] | [INFO] [stdout] 2820 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 2820 - for i in 0..num_to_show { [INFO] [stdout] 2820 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/turn_solver.rs:375:66 [INFO] [stdout] | [INFO] [stdout] 375 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:272:5 [INFO] [stdout] | [INFO] [stdout] 272 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:384:25 [INFO] [stdout] | [INFO] [stdout] 384 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 451 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:273:5 [INFO] [stdout] | [INFO] [stdout] 273 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:385:25 [INFO] [stdout] | [INFO] [stdout] 385 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:274:5 [INFO] [stdout] | [INFO] [stdout] 274 | river_board: &[u8; 5], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_river_board` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:386:25 [INFO] [stdout] | [INFO] [stdout] 386 | river_board, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | river_board, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `bb_strats` [INFO] [stdout] --> src/game_tree.rs:449:19 [INFO] [stdout] | [INFO] [stdout] 449 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 449 - for bb in 0..NUM_HANDS { [INFO] [stdout] 449 + for (bb, ) in bb_strats.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `sb_strats` [INFO] [stdout] --> src/game_tree.rs:496:19 [INFO] [stdout] | [INFO] [stdout] 496 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 496 - for sb in 0..NUM_HANDS { [INFO] [stdout] 496 + for (sb, ) in sb_strats.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `push_strat` [INFO] [stdout] --> src/game_tree.rs:536:15 [INFO] [stdout] | [INFO] [stdout] 536 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 536 - for sb in 0..NUM_HANDS { [INFO] [stdout] 536 + for (sb, ) in push_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `call_strat` [INFO] [stdout] --> src/game_tree.rs:543:19 [INFO] [stdout] | [INFO] [stdout] 543 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 543 - for bb in 0..NUM_HANDS { [INFO] [stdout] 543 + for (bb, ) in call_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/turn_solver.rs:686:66 [INFO] [stdout] | [INFO] [stdout] 686 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `bb` is used to index `call_strat` [INFO] [stdout] --> src/game_tree.rs:573:15 [INFO] [stdout] | [INFO] [stdout] 573 | for bb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 573 - for bb in 0..NUM_HANDS { [INFO] [stdout] 573 + for (bb, ) in call_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `sb` is used to index `push_strat` [INFO] [stdout] --> src/game_tree.rs:580:19 [INFO] [stdout] | [INFO] [stdout] 580 | for sb in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 580 - for sb in 0..NUM_HANDS { [INFO] [stdout] 580 + for (sb, ) in push_strat.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/turn_solver.rs:784:1 [INFO] [stdout] | [INFO] [stdout] 784 | / pub fn compute_exploitability( [INFO] [stdout] 785 | | tree: &TreeNode, [INFO] [stdout] 786 | | oop_cfr: &FlatCfr, [INFO] [stdout] 787 | | ip_cfr: &FlatCfr, [INFO] [stdout] ... | [INFO] [stdout] 792 | | board: &[u8], [INFO] [stdout] 793 | | ) -> f64 { [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `valid_for` [INFO] [stdout] --> src/turn_solver.rs:866:14 [INFO] [stdout] | [INFO] [stdout] 866 | for h in 0..num_br { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 866 - for h in 0..num_br { [INFO] [stdout] 866 + for (h, ) in valid_for.iter().enumerate().take(num_br) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/game_tree.rs:679:29 [INFO] [stdout] | [INFO] [stdout] 679 | assert!(eq >= 0.0 && eq <= 1.0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0.0..=1.0).contains(&eq)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/turn_solver.rs:1068:30 [INFO] [stdout] | [INFO] [stdout] 1068 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1068 - for a in 0..num_actions { [INFO] [stdout] 1068 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/turn_solver.rs:1213:30 [INFO] [stdout] | [INFO] [stdout] 1213 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1213 - for a in 0..num_actions { [INFO] [stdout] 1213 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:1133:5 [INFO] [stdout] | [INFO] [stdout] 1133 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:1216:29 [INFO] [stdout] | [INFO] [stdout] 1216 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1233 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1259 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:1134:5 [INFO] [stdout] | [INFO] [stdout] 1134 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:1216:41 [INFO] [stdout] | [INFO] [stdout] 1216 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1233 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1259 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `straight_high` after checking its variant with `is_some` [INFO] [stdout] --> src/hand_evaluator.rs:128:20 [INFO] [stdout] | [INFO] [stdout] 127 | if flush && straight_high.is_some() { [INFO] [stdout] | ----------------------- the check is happening here [INFO] [stdout] 128 | let high = straight_high.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/turn_solver.rs:1467:22 [INFO] [stdout] | [INFO] [stdout] 1467 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 1467 - for i in 0..num_to_show { [INFO] [stdout] 1467 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/hand_evaluator.rs:226:12 [INFO] [stdout] | [INFO] [stdout] 226 | if best.as_ref().map_or(true, |b| result > *b) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 226 - if best.as_ref().map_or(true, |b| result > *b) { [INFO] [stdout] 226 + if best.as_ref().is_none_or(|b| result > *b) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sing.get(0)` [INFO] [stdout] --> src/lookup_eval.rs:180:44 [INFO] [stdout] | [INFO] [stdout] 180 | let kick = if np >= 3 && pair[2] > sing.get(0).copied().unwrap_or(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `sing.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sing.get(0)` [INFO] [stdout] --> src/lookup_eval.rs:183:13 [INFO] [stdout] | [INFO] [stdout] 183 | sing.get(0).copied().unwrap_or(0) [INFO] [stdout] | ^^^^^^^^^^^ help: try: `sing.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/play.rs:123:35 [INFO] [stdout] | [INFO] [stdout] 123 | } else if is_top_pair { [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 124 | | "medium" [INFO] [stdout] 125 | | } else if board_values.len() > 1 && pair_rank_value >= board_values[1] { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/play.rs:125:84 [INFO] [stdout] | [INFO] [stdout] 125 | } else if board_values.len() > 1 && pair_rank_value >= board_values[1] { [INFO] [stdout] | ____________________________________________________________________________________^ [INFO] [stdout] 126 | | "medium" [INFO] [stdout] 127 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/play.rs:371:8 [INFO] [stdout] | [INFO] [stdout] 371 | if text.len() % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace with: `!text.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (15/7) [INFO] [stdout] --> src/play.rs:644:1 [INFO] [stdout] | [INFO] [stdout] 644 | / fn show_street_advice( [INFO] [stdout] 645 | | engine: &mut StrategyEngine, [INFO] [stdout] 646 | | hand_str: &str, [INFO] [stdout] 647 | | hero: Position, [INFO] [stdout] ... | [INFO] [stdout] 659 | | writer: &mut dyn Write, [INFO] [stdout] 660 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (11/7) [INFO] [stdout] --> src/play.rs:691:1 [INFO] [stdout] | [INFO] [stdout] 691 | / fn show_heuristic_analysis( [INFO] [stdout] 692 | | street: &str, [INFO] [stdout] 693 | | hole_cards: &[Card], [INFO] [stdout] 694 | | board: &[Card], [INFO] [stdout] ... | [INFO] [stdout] 702 | | writer: &mut dyn Write, [INFO] [stdout] 703 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/postflop.rs:97:25 [INFO] [stdout] | [INFO] [stdout] 97 | let has_connected = gaps.iter().any(|&g| g == 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `gaps.contains(&1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/postflop.rs:98:23 [INFO] [stdout] | [INFO] [stdout] 98 | let has_one_gap = gaps.iter().any(|&g| g == 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `gaps.contains(&2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `OOP` contains a capitalized acronym [INFO] [stdout] --> src/postflop_tree.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | OOP, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Oop` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `UTG` contains a capitalized acronym [INFO] [stdout] --> src/preflop_solver.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | UTG, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Utg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `BTN` contains a capitalized acronym [INFO] [stdout] --> src/preflop_solver.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | BTN, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Btn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `strategy` [INFO] [stdout] --> src/preflop_solver.rs:312:14 [INFO] [stdout] | [INFO] [stdout] 312 | for i in 0..NUM_HANDS { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 312 - for i in 0..NUM_HANDS { [INFO] [stdout] 312 + for (i, ) in strategy.iter().enumerate().take(NUM_HANDS) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/preflop_solver.rs:805:1 [INFO] [stdout] | [INFO] [stdout] 805 | / pub fn compute_preflop_exploitability( [INFO] [stdout] 806 | | open_strat: &[f64], [INFO] [stdout] 807 | | vs_open_3bet: &[f64], [INFO] [stdout] 808 | | vs_open_call: &[f64], [INFO] [stdout] ... | [INFO] [stdout] 815 | | payoffs: &PreflopPayoffs, [INFO] [stdout] 816 | | ) -> f64 { [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/preflop_solver.rs:989:26 [INFO] [stdout] | [INFO] [stdout] 989 | .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 989 - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; [INFO] [stdout] 989 + .map_err(|e| std::io::Error::other(e))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/preflop_solver.rs:1004:26 [INFO] [stdout] | [INFO] [stdout] 1004 | .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 1004 - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] 1004 + .map_err(|e| std::io::Error::other(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a suffix manually [INFO] [stdout] --> src/ranges.rs:47:34 [INFO] [stdout] | [INFO] [stdout] 47 | for h in expand_plus(&part[..part.len() - 1]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the suffix was tested here [INFO] [stdout] --> src/ranges.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | if part.ends_with('+') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_suffix` method [INFO] [stdout] | [INFO] [stdout] 46 ~ if let Some() = part.strip_suffix('+') { [INFO] [stdout] 47 ~ for h in expand_plus() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/river_solver.rs:169:53 [INFO] [stdout] | [INFO] [stdout] 169 | let board: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/river_solver.rs:608:26 [INFO] [stdout] | [INFO] [stdout] 608 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 608 - for a in 0..num_actions { [INFO] [stdout] 608 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/river_solver.rs:889:22 [INFO] [stdout] | [INFO] [stdout] 889 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 889 - for i in 0..num_to_show { [INFO] [stdout] 889 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/strategy.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | / pub fn query_postflop( [INFO] [stdout] 214 | | &mut self, [INFO] [stdout] 215 | | hand: &str, [INFO] [stdout] 216 | | hero: Position, [INFO] [stdout] ... | [INFO] [stdout] 222 | | action_path: &[String], [INFO] [stdout] 223 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:287:5 [INFO] [stdout] | [INFO] [stdout] 287 | / fn query_flop( [INFO] [stdout] 288 | | &self, [INFO] [stdout] 289 | | hand: &str, [INFO] [stdout] 290 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 299 | | action_path: &[String], [INFO] [stdout] 300 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 317 | / fn query_turn( [INFO] [stdout] 318 | | &self, [INFO] [stdout] 319 | | hand: &str, [INFO] [stdout] 320 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 329 | | action_path: &[String], [INFO] [stdout] 330 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/strategy.rs:360:5 [INFO] [stdout] | [INFO] [stdout] 360 | / fn query_river( [INFO] [stdout] 361 | | &self, [INFO] [stdout] 362 | | hand: &str, [INFO] [stdout] 363 | | hero_side: &str, [INFO] [stdout] ... | [INFO] [stdout] 372 | | action_path: &[String], [INFO] [stdout] 373 | | ) -> Result { [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/strategy.rs:634:57 [INFO] [stdout] | [INFO] [stdout] 634 | let board_indices: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/turn_solver.rs:49:53 [INFO] [stdout] | [INFO] [stdout] 49 | let board: Vec = board_cards.iter().map(|c| card_to_index(c)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `card_to_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/turn_solver.rs:375:66 [INFO] [stdout] | [INFO] [stdout] 375 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:272:5 [INFO] [stdout] | [INFO] [stdout] 272 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:384:25 [INFO] [stdout] | [INFO] [stdout] 384 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 451 | oop_combos, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:273:5 [INFO] [stdout] | [INFO] [stdout] 273 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:385:25 [INFO] [stdout] | [INFO] [stdout] 385 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | ip_combos, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:274:5 [INFO] [stdout] | [INFO] [stdout] 274 | river_board: &[u8; 5], [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_river_board` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:386:25 [INFO] [stdout] | [INFO] [stdout] 386 | river_board, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | river_board, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/turn_solver.rs:686:66 [INFO] [stdout] | [INFO] [stdout] 686 | if strategy_buf[a] < 0.001 && iter > 1000 && iter % 1000 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `!iter.is_multiple_of(1000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/turn_solver.rs:784:1 [INFO] [stdout] | [INFO] [stdout] 784 | / pub fn compute_exploitability( [INFO] [stdout] 785 | | tree: &TreeNode, [INFO] [stdout] 786 | | oop_cfr: &FlatCfr, [INFO] [stdout] 787 | | ip_cfr: &FlatCfr, [INFO] [stdout] ... | [INFO] [stdout] 792 | | board: &[u8], [INFO] [stdout] 793 | | ) -> f64 { [INFO] [stdout] | |________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `valid_for` [INFO] [stdout] --> src/turn_solver.rs:866:14 [INFO] [stdout] | [INFO] [stdout] 866 | for h in 0..num_br { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 866 - for h in 0..num_br { [INFO] [stdout] 866 + for (h, ) in valid_for.iter().enumerate().take(num_br) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/turn_solver.rs:1068:30 [INFO] [stdout] | [INFO] [stdout] 1068 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1068 - for a in 0..num_actions { [INFO] [stdout] 1068 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `a` is only used to index `children` [INFO] [stdout] --> src/turn_solver.rs:1213:30 [INFO] [stdout] | [INFO] [stdout] 1213 | for a in 0..num_actions { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1213 - for a in 0..num_actions { [INFO] [stdout] 1213 + for in children.iter().take(num_actions) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:1133:5 [INFO] [stdout] | [INFO] [stdout] 1133 | oop_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oop_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:1216:29 [INFO] [stdout] | [INFO] [stdout] 1216 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1233 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1259 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/turn_solver.rs:1134:5 [INFO] [stdout] | [INFO] [stdout] 1134 | ip_combos: &[Combo], [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ip_combos` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/turn_solver.rs:1216:41 [INFO] [stdout] | [INFO] [stdout] 1216 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1233 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1259 | oop_combos, ip_combos, oop_scores, ip_scores, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `combos` [INFO] [stdout] --> src/turn_solver.rs:1467:22 [INFO] [stdout] | [INFO] [stdout] 1467 | for i in 0..num_to_show { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 1467 - for i in 0..num_to_show { [INFO] [stdout] 1467 + for (i, ) in combos.iter().enumerate().take(num_to_show) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.11s [INFO] running `Command { std: "docker" "inspect" "e9557f35f1ed52759acf57c7f9ae42a78df4a153422d885f89a40a4b96ae8d79", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e9557f35f1ed52759acf57c7f9ae42a78df4a153422d885f89a40a4b96ae8d79", kill_on_drop: false }` [INFO] [stdout] e9557f35f1ed52759acf57c7f9ae42a78df4a153422d885f89a40a4b96ae8d79