[INFO] cloning repository https://github.com/Tordlemaster/universal-card-engine
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Tordlemaster/universal-card-engine" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTordlemaster%2Funiversal-card-engine", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTordlemaster%2Funiversal-card-engine'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] baf95eb4e27db74defc5c86501bcebe1bd9c791f
[INFO] checking Tordlemaster/universal-card-engine against try#0611f7de057c584b8771102fde7aed6c70c71d3b for pr-146440
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTordlemaster%2Funiversal-card-engine" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Tordlemaster/universal-card-engine
[INFO] finished tweaking git repo https://github.com/Tordlemaster/universal-card-engine
[INFO] tweaked toml for git repo https://github.com/Tordlemaster/universal-card-engine written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Tordlemaster/universal-card-engine on toolchain 0611f7de057c584b8771102fde7aed6c70c71d3b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0611f7de057c584b8771102fde7aed6c70c71d3b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Tordlemaster/universal-card-engine already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0611f7de057c584b8771102fde7aed6c70c71d3b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0611f7de057c584b8771102fde7aed6c70c71d3b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1c525f6e076ac96a96c293561c29d553eb21cba93be24d9f676984c658635958
[INFO] running `Command { std: "docker" "start" "-a" "1c525f6e076ac96a96c293561c29d553eb21cba93be24d9f676984c658635958", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1c525f6e076ac96a96c293561c29d553eb21cba93be24d9f676984c658635958", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1c525f6e076ac96a96c293561c29d553eb21cba93be24d9f676984c658635958", kill_on_drop: false }`
[INFO] [stdout] 1c525f6e076ac96a96c293561c29d553eb21cba93be24d9f676984c658635958
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0611f7de057c584b8771102fde7aed6c70c71d3b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 310dd09a7f5ebc5225bb3a27dfe04d14be78e935dc9bdc5300daaf79c4a32803
[INFO] running `Command { std: "docker" "start" "-a" "310dd09a7f5ebc5225bb3a27dfe04d14be78e935dc9bdc5300daaf79c4a32803", kill_on_drop: false }`
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling precomputed-hash v0.1.1
[INFO] [stderr]    Compiling fixedbitset v0.5.7
[INFO] [stderr]    Compiling keccak v0.1.5
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling term v1.1.0
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling ena v0.14.3
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling ascii-canvas v4.0.0
[INFO] [stderr]    Compiling petgraph v0.7.1
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling pico-args v0.5.0
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling sha3 v0.10.8
[INFO] [stderr]     Checking rand v0.9.1
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]     Checking lalrpop-util v0.22.2
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling lalrpop v0.22.2
[INFO] [stderr]    Compiling universal-card-engine v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `DeckVisibility`, `GameWorld`, `print_deck`, `routine::evaluatables::EvaluatableString`, `state::StateSet`, and `variable::VarBindSet`
[INFO] [stdout]  --> src/main.rs:5:57
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...s, print_deck}, rules::{deck::{CardAttr, CardSetData, DeckVisibility}, game::{Game, GameWorld}, player::Player, routine::evaluatables::EvaluatableString, state::StateSet, variable::VarBindSet}};
[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: `HashMap`
[INFO] [stdout]  --> src/rules/game.rs:1:51
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{cmp::max, collections::{hash_map::Iter, HashMap}};
[INFO] [stdout]   |                                                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> src/rules/routine/choice_routine.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 | ...sh((Choice::new("End turn".to_string(), CondRoutine::new(Box::new(TrueConditional), Box::new(NullRoutine), CondRoutineMode::PreCond))));
[INFO] [stdout]    |       ^                                                                                                                                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 43 -             choices.push((Choice::new("End turn".to_string(), CondRoutine::new(Box::new(TrueConditional), Box::new(NullRoutine), CondRoutineMode::PreCond))));
[INFO] [stdout] 43 +             choices.push(Choice::new("End turn".to_string(), CondRoutine::new(Box::new(TrueConditional), Box::new(NullRoutine), CondRoutineMode::PreCond)) );
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/rules/routine/primitives.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         ///The indices of each card pulled from source so far at the moment it was pulled, so taking offset into account
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 180 |         let mut dealt_offset_indices = Vec::new();
[INFO] [stdout]     |         ------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice::Iter`
[INFO] [stdout]  --> src/rules/player.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::slice::Iter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/interface/deck_printing.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EvaluatableString`, `ForPlayerCondRoutine`, `GameWorld`, `NotConditional`, `PlayerConditional`, `PlayerNameConditional`, `TrueConditional`, and `variable::VarBindSet`
[INFO] [stdout]   --> src/test_rummy.rs:1:83
[INFO] [stdout]    |
[INFO] [stdout]  1 | ...l, NotConditional, TrueConditional, ValCompMode}, deck_conditional::{DeckConditional, DeckLenConditional, DeckSuitsComp, DeckSuitsConditional, DeckValsComp, DeckValsConditional}, player_conditional::{PlayerConditional, PlayerNameConditional}}, deck::{CardAttr, CardSetData}, game::{Game, GameWorld}, player::Player, routine::{choice_routine::{Choice, ChoiceLimit, ChoicesRoutine}, cond_routine::{CondRoutine, CondRoutineMode, IfRoutine}, evaluatables::{DeckVisibilityEvaluatable, EvaluatableString}, iter_routine::{ForPlayerCondRoutine, ForPlayerRoutine}, primitives::{CreateDeckRoutine, CreateSourceDeckRoutine, DealChoiceRoutine, DealRandRoutine, LoopRoutine, PrintDecksRoutine, PrintMsgRoutine, StateSwitchRoutine}, routine::SeqRoutine}, state::{State, StateSet}, variable::VarBindSet};
[INFO] [stdout]    |       ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^                                                                                                                                                                      ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^                                                ^^^^^^^^^                                                                                                                                                                                       ^^^^^^^^^^^^^^^^^                  ^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | mod test_rummy;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DeckSet`, `GameWorld`, and `player::PlayerSet`
[INFO] [stdout]   --> src/test.rs:3:50
[INFO] [stdout]    |
[INFO] [stdout]  3 | use crate::rules::{deck::{CardAttr, CardSetData, DeckSet}, game::{Game, GameWorld}, player::PlayerSet};
[INFO] [stdout]    |                                                  ^^^^^^^                ^^^^^^^^^   ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | mod test;
[INFO] [stdout]    | ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DeckVisibility`, `GameWorld`, `print_deck`, `routine::evaluatables::EvaluatableString`, `state::StateSet`, and `variable::VarBindSet`
[INFO] [stdout]  --> src/main.rs:5:57
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...s, print_deck}, rules::{deck::{CardAttr, CardSetData, DeckVisibility}, game::{Game, GameWorld}, player::Player, routine::evaluatables::EvaluatableString, state::StateSet, variable::VarBindSet}};
[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: `HashMap`
[INFO] [stdout]  --> src/rules/game.rs:1:51
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{cmp::max, collections::{hash_map::Iter, HashMap}};
[INFO] [stdout]   |                                                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> src/rules/routine/choice_routine.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 | ...sh((Choice::new("End turn".to_string(), CondRoutine::new(Box::new(TrueConditional), Box::new(NullRoutine), CondRoutineMode::PreCond))));
[INFO] [stdout]    |       ^                                                                                                                                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 43 -             choices.push((Choice::new("End turn".to_string(), CondRoutine::new(Box::new(TrueConditional), Box::new(NullRoutine), CondRoutineMode::PreCond))));
[INFO] [stdout] 43 +             choices.push(Choice::new("End turn".to_string(), CondRoutine::new(Box::new(TrueConditional), Box::new(NullRoutine), CondRoutineMode::PreCond)) );
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/rules/routine/primitives.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         ///The indices of each card pulled from source so far at the moment it was pulled, so taking offset into account
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 180 |         let mut dealt_offset_indices = Vec::new();
[INFO] [stdout]     |         ------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice::Iter`
[INFO] [stdout]  --> src/rules/player.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::slice::Iter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/interface/deck_printing.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EvaluatableString`, `ForPlayerCondRoutine`, `GameWorld`, `NotConditional`, `PlayerConditional`, `PlayerNameConditional`, `TrueConditional`, and `variable::VarBindSet`
[INFO] [stdout]  --> src/test_rummy.rs:1:83
[INFO] [stdout]   |
[INFO] [stdout] 1 | ...l, NotConditional, TrueConditional, ValCompMode}, deck_conditional::{DeckConditional, DeckLenConditional, DeckSuitsComp, DeckSuitsConditional, DeckValsComp, DeckValsConditional}, player_conditional::{PlayerConditional, PlayerNameConditional}}, deck::{CardAttr, CardSetData}, game::{Game, GameWorld}, player::Player, routine::{choice_routine::{Choice, ChoiceLimit, ChoicesRoutine}, cond_routine::{CondRoutine, CondRoutineMode, IfRoutine}, evaluatables::{DeckVisibilityEvaluatable, EvaluatableString}, iter_routine::{ForPlayerCondRoutine, ForPlayerRoutine}, primitives::{CreateDeckRoutine, CreateSourceDeckRoutine, DealChoiceRoutine, DealRandRoutine, LoopRoutine, PrintDecksRoutine, PrintMsgRoutine, StateSwitchRoutine}, routine::SeqRoutine}, state::{State, StateSet}, variable::VarBindSet};
[INFO] [stdout]   |       ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^                                                                                                                                                                      ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^                                                ^^^^^^^^^                                                                                                                                                                                       ^^^^^^^^^^^^^^^^^                  ^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DeckSet`, `GameWorld`, and `player::PlayerSet`
[INFO] [stdout]  --> src/test.rs:3:50
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::rules::{deck::{CardAttr, CardSetData, DeckSet}, game::{Game, GameWorld}, player::PlayerSet};
[INFO] [stdout]   |                                                  ^^^^^^^                ^^^^^^^^^   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary braces around block return value
[INFO] [stdout]      --> /opt/rustwide/target/debug/build/universal-card-engine-1214c5e2da0ddf14/out/grammar.rs:53730:5
[INFO] [stdout]       |
[INFO] [stdout] 53730 |     {(d.chars().nth(0) == Some('S'), d.chars().nth(1) == Some('U'), d.chars().nth(2) == Some('1'))}
[INFO] [stdout]       |     ^                                                                                             ^
[INFO] [stdout]       |
[INFO] [stdout]       = note: `#[warn(unused_braces)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these braces
[INFO] [stdout]       |
[INFO] [stdout] 53730 -     {(d.chars().nth(0) == Some('S'), d.chars().nth(1) == Some('U'), d.chars().nth(2) == Some('1'))}
[INFO] [stdout] 53730 +     (d.chars().nth(0) == Some('S'), d.chars().nth(1) == Some('U'), d.chars().nth(2) == Some('1'))
[INFO] [stdout]       |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary braces around block return value
[INFO] [stdout]      --> /opt/rustwide/target/debug/build/universal-card-engine-1214c5e2da0ddf14/out/grammar.rs:53730:5
[INFO] [stdout]       |
[INFO] [stdout] 53730 |     {(d.chars().nth(0) == Some('S'), d.chars().nth(1) == Some('U'), d.chars().nth(2) == Some('1'))}
[INFO] [stdout]       |     ^                                                                                             ^
[INFO] [stdout]       |
[INFO] [stdout]       = note: `#[warn(unused_braces)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these braces
[INFO] [stdout]       |
[INFO] [stdout] 53730 -     {(d.chars().nth(0) == Some('S'), d.chars().nth(1) == Some('U'), d.chars().nth(2) == Some('1'))}
[INFO] [stdout] 53730 +     (d.chars().nth(0) == Some('S'), d.chars().nth(1) == Some('U'), d.chars().nth(2) == Some('1'))
[INFO] [stdout]       |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/rules/game.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         for i in 0..n {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/rules/state.rs:26:16
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(mut names: Vec<String>, mut states: Vec<&mut Option<State>>) -> StateSet {
[INFO] [stdout]    |                ----^^^^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `success` is never read
[INFO] [stdout]   --> src/rules/routine/choice_routine.rs:64:33
[INFO] [stdout]    |
[INFO] [stdout] 64 | ...                   success = true;
[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: `bindings`
[INFO] [stdout]    --> src/rules/routine/choice_routine.rs:108:25
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/choice_routine.rs:108:48
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/choice_routine.rs:108:76
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deck`
[INFO] [stdout]   --> src/rules/routine/primitives.rs:71:21
[INFO] [stdout]    |
[INFO] [stdout] 71 |         if let Some(deck) = game_world.get_deck(&name) {
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_deck`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]   --> src/rules/routine/primitives.rs:81:25
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]    |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]   --> src/rules/routine/primitives.rs:81:48
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]    |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]   --> src/rules/routine/primitives.rs:81:76
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]    |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:113:17
[INFO] [stdout]     |
[INFO] [stdout] 113 |             for idx in self.prev_dealing.as_ref().unwrap() {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:114:28
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...   if let Err(n_dealt) = game_world.deal_top(&self.source.evaluate(bindings, game_world, choice_vars), &self.dest.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:140:20
[INFO] [stdout]     |
[INFO] [stdout] 140 | ...   if let Err(n_dealt) = game_world.deal_top(&self.source.evaluate(bindings, game_world, choice_vars), &self.dest.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:147:20
[INFO] [stdout]     |
[INFO] [stdout] 147 | ...   if let Err(n_dealt) = game_world.deal_top(&self.source.evaluate(bindings, game_world, choice_vars), &self.dest.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:187:24
[INFO] [stdout]     |
[INFO] [stdout] 187 | ...   if let Err(n_dealt) = game_world.deal_idx(&self.source.evaluate(bindings, game_world, choice_vars), &self.dest.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:203:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |         for idx in self.exec_idcs.iter().rev() {
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:205:24
[INFO] [stdout]     |
[INFO] [stdout] 205 | ...   if let Err(n_dealt) = game_world.deal_idx(&self.dest.evaluate(bindings, game_world, choice_vars), &self.source.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:233:25
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:233:48
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:233:76
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:253:25
[INFO] [stdout]     |
[INFO] [stdout] 253 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {}
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:253:48
[INFO] [stdout]     |
[INFO] [stdout] 253 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {}
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:253:76
[INFO] [stdout]     |
[INFO] [stdout] 253 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {}
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:276:25
[INFO] [stdout]     |
[INFO] [stdout] 276 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:276:48
[INFO] [stdout]     |
[INFO] [stdout] 276 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:276:76
[INFO] [stdout]     |
[INFO] [stdout] 276 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:296:25
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:296:48
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:296:76
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:310:28
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn execute (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> Option<StateSwitchData> {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:310:51
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn execute (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> Option<StateSwitchData> {
[INFO] [stdout]     |                                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:310:79
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn execute (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> Option<StateSwitchData> {
[INFO] [stdout]     |                                                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:313:25
[INFO] [stdout]     |
[INFO] [stdout] 313 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:313:48
[INFO] [stdout]     |
[INFO] [stdout] 313 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:313:76
[INFO] [stdout]     |
[INFO] [stdout] 313 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/rules/routine/evaluatables.rs:73:13
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut n = 0;
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/rules/routine/evaluatables.rs:73:13
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut n = 0;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:139:23
[INFO] [stdout]     |
[INFO] [stdout] 139 |             .map(|(n, d)| n)
[INFO] [stdout]     |                       ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:135:46
[INFO] [stdout]     |
[INFO] [stdout] 135 |     fn pattern_match(start: &str, end: &str, bindings: &VarBindSet, game_world: &GameWorld) -> usize {
[INFO] [stdout]     |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `teams_visible`
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:180:81
[INFO] [stdout]     |
[INFO] [stdout] 180 | ...ible: Vec<String>, teams_visible: Vec<usize>) -> DeckVisibilityEvaluatable {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_teams_visible`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]   --> src/rules/conditional/conditional.rs:56:24
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn evaluate(&self, bindings: &VarBindSet, game_world: &GameWorld, choice_vars: &mut TempVars) -> bool {
[INFO] [stdout]    |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]   --> src/rules/conditional/conditional.rs:56:47
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn evaluate(&self, bindings: &VarBindSet, game_world: &GameWorld, choice_vars: &mut TempVars) -> bool {
[INFO] [stdout]    |                                               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]   --> src/rules/conditional/conditional.rs:56:71
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn evaluate(&self, bindings: &VarBindSet, game_world: &GameWorld, choice_vars: &mut TempVars) -> bool {
[INFO] [stdout]    |                                                                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]   --> src/rules/conditional/player_conditional.rs:73:41
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn evaluate(&self, player: &Player, bindings: &VarBindSet, game_world: &GameWorld, choice_var: &mut TempVars) -> bool {
[INFO] [stdout]    |                                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]   --> src/rules/conditional/player_conditional.rs:73:64
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn evaluate(&self, player: &Player, bindings: &VarBindSet, game_world: &GameWorld, choice_var: &mut TempVars) -> bool {
[INFO] [stdout]    |                                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_var`
[INFO] [stdout]   --> src/rules/conditional/player_conditional.rs:73:88
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn evaluate(&self, player: &Player, bindings: &VarBindSet, game_world: &GameWorld, choice_var: &mut TempVars) -> bool {
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]   --> src/rules/score/score.rs:34:25
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn undo (&mut self, bindings: &crate::rules::variable::VarBindSet, game_world: &mut crate::rules::game::GameWorld, choice_vars: ...
[INFO] [stdout]    |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]   --> src/rules/score/score.rs:34:72
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...variable::VarBindSet, game_world: &mut crate::rules::game::GameWorld, choice_vars: &mut crate::rules::variable::TempVars) -> () {
[INFO] [stdout]    |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]   --> src/rules/score/score.rs:34:120
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...es::game::GameWorld, choice_vars: &mut crate::rules::variable::TempVars) -> () {
[INFO] [stdout]    |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/interface/interface.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 |     while let Err(e) = stdin().read_line(&mut s) {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/interface/interface.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let mut success = false;
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/interface/interface.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |     unsafe{
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/interface/interface.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut out = io::stdout();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `out`
[INFO] [stdout]    --> src/interface/interface.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut out = io::stdout();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_out`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/rules/game.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         for i in 0..n {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/rules/state.rs:26:16
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(mut names: Vec<String>, mut states: Vec<&mut Option<State>>) -> StateSet {
[INFO] [stdout]    |                ----^^^^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `success` is never read
[INFO] [stdout]   --> src/rules/routine/choice_routine.rs:64:33
[INFO] [stdout]    |
[INFO] [stdout] 64 | ...                   success = true;
[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: `bindings`
[INFO] [stdout]    --> src/rules/routine/choice_routine.rs:108:25
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/choice_routine.rs:108:48
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/choice_routine.rs:108:76
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deck`
[INFO] [stdout]   --> src/rules/routine/primitives.rs:71:21
[INFO] [stdout]    |
[INFO] [stdout] 71 |         if let Some(deck) = game_world.get_deck(&name) {
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_deck`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]   --> src/rules/routine/primitives.rs:81:25
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]    |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]   --> src/rules/routine/primitives.rs:81:48
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]    |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]   --> src/rules/routine/primitives.rs:81:76
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]    |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:113:17
[INFO] [stdout]     |
[INFO] [stdout] 113 |             for idx in self.prev_dealing.as_ref().unwrap() {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:114:28
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...   if let Err(n_dealt) = game_world.deal_top(&self.source.evaluate(bindings, game_world, choice_vars), &self.dest.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:140:20
[INFO] [stdout]     |
[INFO] [stdout] 140 | ...   if let Err(n_dealt) = game_world.deal_top(&self.source.evaluate(bindings, game_world, choice_vars), &self.dest.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:147:20
[INFO] [stdout]     |
[INFO] [stdout] 147 | ...   if let Err(n_dealt) = game_world.deal_top(&self.source.evaluate(bindings, game_world, choice_vars), &self.dest.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:187:24
[INFO] [stdout]     |
[INFO] [stdout] 187 | ...   if let Err(n_dealt) = game_world.deal_idx(&self.source.evaluate(bindings, game_world, choice_vars), &self.dest.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:203:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |         for idx in self.exec_idcs.iter().rev() {
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_dealt`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:205:24
[INFO] [stdout]     |
[INFO] [stdout] 205 | ...   if let Err(n_dealt) = game_world.deal_idx(&self.dest.evaluate(bindings, game_world, choice_vars), &self.source.evaluate(bindi...
[INFO] [stdout]     |                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_dealt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:233:25
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:233:48
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:233:76
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:253:25
[INFO] [stdout]     |
[INFO] [stdout] 253 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {}
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:253:48
[INFO] [stdout]     |
[INFO] [stdout] 253 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {}
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:253:76
[INFO] [stdout]     |
[INFO] [stdout] 253 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {}
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:276:25
[INFO] [stdout]     |
[INFO] [stdout] 276 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:276:48
[INFO] [stdout]     |
[INFO] [stdout] 276 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:276:76
[INFO] [stdout]     |
[INFO] [stdout] 276 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:296:25
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:296:48
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:296:76
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:310:28
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn execute (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> Option<StateSwitchData> {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:310:51
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn execute (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> Option<StateSwitchData> {
[INFO] [stdout]     |                                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:310:79
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn execute (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> Option<StateSwitchData> {
[INFO] [stdout]     |                                                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:313:25
[INFO] [stdout]     |
[INFO] [stdout] 313 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:313:48
[INFO] [stdout]     |
[INFO] [stdout] 313 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]    --> src/rules/routine/primitives.rs:313:76
[INFO] [stdout]     |
[INFO] [stdout] 313 |     fn undo (&mut self, bindings: &VarBindSet, game_world: &mut GameWorld, choice_vars: &mut TempVars) -> () {
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/rules/routine/evaluatables.rs:73:13
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut n = 0;
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/rules/routine/evaluatables.rs:73:13
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut n = 0;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:139:23
[INFO] [stdout]     |
[INFO] [stdout] 139 |             .map(|(n, d)| n)
[INFO] [stdout]     |                       ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:135:46
[INFO] [stdout]     |
[INFO] [stdout] 135 |     fn pattern_match(start: &str, end: &str, bindings: &VarBindSet, game_world: &GameWorld) -> usize {
[INFO] [stdout]     |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `teams_visible`
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:180:81
[INFO] [stdout]     |
[INFO] [stdout] 180 | ...ible: Vec<String>, teams_visible: Vec<usize>) -> DeckVisibilityEvaluatable {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_teams_visible`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]   --> src/rules/conditional/conditional.rs:56:24
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn evaluate(&self, bindings: &VarBindSet, game_world: &GameWorld, choice_vars: &mut TempVars) -> bool {
[INFO] [stdout]    |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]   --> src/rules/conditional/conditional.rs:56:47
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn evaluate(&self, bindings: &VarBindSet, game_world: &GameWorld, choice_vars: &mut TempVars) -> bool {
[INFO] [stdout]    |                                               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]   --> src/rules/conditional/conditional.rs:56:71
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn evaluate(&self, bindings: &VarBindSet, game_world: &GameWorld, choice_vars: &mut TempVars) -> bool {
[INFO] [stdout]    |                                                                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]   --> src/rules/conditional/player_conditional.rs:73:41
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn evaluate(&self, player: &Player, bindings: &VarBindSet, game_world: &GameWorld, choice_var: &mut TempVars) -> bool {
[INFO] [stdout]    |                                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]   --> src/rules/conditional/player_conditional.rs:73:64
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn evaluate(&self, player: &Player, bindings: &VarBindSet, game_world: &GameWorld, choice_var: &mut TempVars) -> bool {
[INFO] [stdout]    |                                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_var`
[INFO] [stdout]   --> src/rules/conditional/player_conditional.rs:73:88
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn evaluate(&self, player: &Player, bindings: &VarBindSet, game_world: &GameWorld, choice_var: &mut TempVars) -> bool {
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bindings`
[INFO] [stdout]   --> src/rules/score/score.rs:34:25
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn undo (&mut self, bindings: &crate::rules::variable::VarBindSet, game_world: &mut crate::rules::game::GameWorld, choice_vars: ...
[INFO] [stdout]    |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bindings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_world`
[INFO] [stdout]   --> src/rules/score/score.rs:34:72
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...variable::VarBindSet, game_world: &mut crate::rules::game::GameWorld, choice_vars: &mut crate::rules::variable::TempVars) -> () {
[INFO] [stdout]    |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `choice_vars`
[INFO] [stdout]   --> src/rules/score/score.rs:34:120
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...es::game::GameWorld, choice_vars: &mut crate::rules::variable::TempVars) -> () {
[INFO] [stdout]    |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_choice_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/interface/interface.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 |     while let Err(e) = stdin().read_line(&mut s) {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/interface/interface.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let mut success = false;
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/interface/interface.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |     unsafe{
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/interface/interface.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut out = io::stdout();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `out`
[INFO] [stdout]    --> src/interface/interface.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut out = io::stdout();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_out`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/main.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn test() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: struct `ChoiceMode` is never constructed
[INFO] [stdout]  --> src/rules/routine/choice_routine.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct ChoiceMode {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: this `pub` struct has private fields, no public constructor, and is not otherwise reachable through the external API, so consider providing a public constructor or removing it
[INFO] [stdout]   = note: `#[deny(unused_unconstructable_pub_struct)]` (part of `#[deny(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `limit` is never read
[INFO] [stdout]   --> src/rules/routine/choice_routine.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ChoiceMode {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 10 |     ///The size of the subset of options from the list the player is allowed to select
[INFO] [stdout] 11 |     limit: ChoiceLimit
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `visibility` is never read
[INFO] [stdout]   --> src/rules/routine/primitives.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct RemoveDeckRoutine {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 58 |     name: EvaluatableString,
[INFO] [stdout] 59 |     visibility: Option<DeckVisibility>
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `e` is never read
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:163:5
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub struct EvaluatableStringUInt {
[INFO] [stdout]     |            --------------------- field in this struct
[INFO] [stdout] 163 |     e: EvaluatableString
[INFO] [stdout]     |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `teams_visible` is never read
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:176:5
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub struct DeckVisibilityEvaluatable {
[INFO] [stdout]     |            ------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 176 |     teams_visible: Vec<EvaluatableString>
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prev_score_inc` is never read
[INFO] [stdout]   --> src/rules/score/score.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ScoreAddRoutine {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     prev_score_inc: Option<u32>
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `chars_printed_last_time` is never used
[INFO] [stdout]    --> src/interface/interface.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 |     static mut chars_printed_last_time: usize = 0;
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: struct `Rule` is never constructed
[INFO] [stdout]  --> src/script/cfg.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Rule <'a> {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: this `pub` struct has private fields, no public constructor, and is not otherwise reachable through the external API, so consider providing a public constructor or removing it
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nonterminal` and `production` are never read
[INFO] [stdout]  --> src/script/cfg.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Rule <'a> {
[INFO] [stdout]   |            ---- fields in this struct
[INFO] [stdout] 2 |     nonterminal: &'a str,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 3 |     production: &'a [&'a str]
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `grammar` is never used
[INFO] [stdout]  --> src/script/cfg.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const grammar: [Rule; 3] = [
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rummy` is never used
[INFO] [stdout]  --> src/test_rummy.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn rummy() -> Game {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/rules/game.rs:36:22
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn get_decks(&self) -> Iter<String, Deck> {
[INFO] [stdout]    |                      ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn get_decks(&self) -> Iter<'_, String, Deck> {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/rules/game.rs:135:22
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn get_decks(&self) -> Iter<String, Deck> {
[INFO] [stdout]     |                      ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn get_decks(&self) -> Iter<'_, String, Deck> {
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/rules/deck.rs:140:22
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub fn card_iter(&self) -> std::slice::Iter<Card> {
[INFO] [stdout]     |                      ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub fn card_iter(&self) -> std::slice::Iter<'_, Card> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/rules/deck.rs:177:23
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn iter_decks(&self) -> Iter<String, Deck> {
[INFO] [stdout]     |                       ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn iter_decks(&self) -> Iter<'_, String, Deck> {
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/rules/player.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 |         if idx >= 0 && idx < self.players.len() {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/rules/player.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 |         if idx >= 0 && idx < self.players.len() {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/interface/interface.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     stdout().flush();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let _ = stdout().flush();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/interface/interface.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |         stdout().flush();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let _ = stdout().flush();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `chars_printed_last_time` should have an upper case name
[INFO] [stdout]    --> src/interface/interface.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 |     static mut chars_printed_last_time: usize = 0;
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `CHARS_PRINTED_LAST_TIME`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `grammar` should have an upper case name
[INFO] [stdout]  --> src/script/cfg.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const grammar: [Rule; 3] = [
[INFO] [stdout]   |       ^^^^^^^ help: convert the identifier to upper case: `GRAMMAR`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `universal-card-engine` (bin "universal-card-engine") due to 2 previous errors; 83 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/main.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn test() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: struct `ChoiceMode` is never constructed
[INFO] [stdout]  --> src/rules/routine/choice_routine.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct ChoiceMode {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: this `pub` struct has private fields, no public constructor, and is not otherwise reachable through the external API, so consider providing a public constructor or removing it
[INFO] [stdout]   = note: `#[deny(unused_unconstructable_pub_struct)]` (part of `#[deny(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `limit` is never read
[INFO] [stdout]   --> src/rules/routine/choice_routine.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ChoiceMode {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 10 |     ///The size of the subset of options from the list the player is allowed to select
[INFO] [stdout] 11 |     limit: ChoiceLimit
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `visibility` is never read
[INFO] [stdout]   --> src/rules/routine/primitives.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct RemoveDeckRoutine {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 58 |     name: EvaluatableString,
[INFO] [stdout] 59 |     visibility: Option<DeckVisibility>
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `e` is never read
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:163:5
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub struct EvaluatableStringUInt {
[INFO] [stdout]     |            --------------------- field in this struct
[INFO] [stdout] 163 |     e: EvaluatableString
[INFO] [stdout]     |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `teams_visible` is never read
[INFO] [stdout]    --> src/rules/routine/evaluatables.rs:176:5
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub struct DeckVisibilityEvaluatable {
[INFO] [stdout]     |            ------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 176 |     teams_visible: Vec<EvaluatableString>
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prev_score_inc` is never read
[INFO] [stdout]   --> src/rules/score/score.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ScoreAddRoutine {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     prev_score_inc: Option<u32>
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `chars_printed_last_time` is never used
[INFO] [stdout]    --> src/interface/interface.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 |     static mut chars_printed_last_time: usize = 0;
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: struct `Rule` is never constructed
[INFO] [stdout]  --> src/script/cfg.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Rule <'a> {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: this `pub` struct has private fields, no public constructor, and is not otherwise reachable through the external API, so consider providing a public constructor or removing it
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nonterminal` and `production` are never read
[INFO] [stdout]  --> src/script/cfg.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Rule <'a> {
[INFO] [stdout]   |            ---- fields in this struct
[INFO] [stdout] 2 |     nonterminal: &'a str,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 3 |     production: &'a [&'a str]
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `grammar` is never used
[INFO] [stdout]  --> src/script/cfg.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const grammar: [Rule; 3] = [
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rummy` is never used
[INFO] [stdout]  --> src/test_rummy.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn rummy() -> Game {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/rules/game.rs:36:22
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn get_decks(&self) -> Iter<String, Deck> {
[INFO] [stdout]    |                      ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn get_decks(&self) -> Iter<'_, String, Deck> {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/rules/game.rs:135:22
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn get_decks(&self) -> Iter<String, Deck> {
[INFO] [stdout]     |                      ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn get_decks(&self) -> Iter<'_, String, Deck> {
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/rules/deck.rs:140:22
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub fn card_iter(&self) -> std::slice::Iter<Card> {
[INFO] [stdout]     |                      ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub fn card_iter(&self) -> std::slice::Iter<'_, Card> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/rules/deck.rs:177:23
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn iter_decks(&self) -> Iter<String, Deck> {
[INFO] [stdout]     |                       ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn iter_decks(&self) -> Iter<'_, String, Deck> {
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/rules/player.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 |         if idx >= 0 && idx < self.players.len() {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/rules/player.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 |         if idx >= 0 && idx < self.players.len() {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/interface/interface.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     stdout().flush();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let _ = stdout().flush();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/interface/interface.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |         stdout().flush();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let _ = stdout().flush();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `chars_printed_last_time` should have an upper case name
[INFO] [stdout]    --> src/interface/interface.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 |     static mut chars_printed_last_time: usize = 0;
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `CHARS_PRINTED_LAST_TIME`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `grammar` should have an upper case name
[INFO] [stdout]  --> src/script/cfg.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const grammar: [Rule; 3] = [
[INFO] [stdout]   |       ^^^^^^^ help: convert the identifier to upper case: `GRAMMAR`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `universal-card-engine` (bin "universal-card-engine" test) due to 2 previous errors; 83 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "310dd09a7f5ebc5225bb3a27dfe04d14be78e935dc9bdc5300daaf79c4a32803", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "310dd09a7f5ebc5225bb3a27dfe04d14be78e935dc9bdc5300daaf79c4a32803", kill_on_drop: false }`
[INFO] [stdout] 310dd09a7f5ebc5225bb3a27dfe04d14be78e935dc9bdc5300daaf79c4a32803
