[INFO] cloning repository https://github.com/kyle-mccarthy/blackjack-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kyle-mccarthy/blackjack-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyle-mccarthy%2Fblackjack-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyle-mccarthy%2Fblackjack-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c0376d56fda5ff0e43686d79c43a78b9b4e564d0
[INFO] checking kyle-mccarthy/blackjack-rs against try#dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e for pr-153721
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyle-mccarthy%2Fblackjack-rs" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/kyle-mccarthy/blackjack-rs
[INFO] finished tweaking git repo https://github.com/kyle-mccarthy/blackjack-rs
[INFO] tweaked toml for git repo https://github.com/kyle-mccarthy/blackjack-rs written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/kyle-mccarthy/blackjack-rs on toolchain dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/kyle-mccarthy/blackjack-rs 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" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 17287ca043675587c04b4c220e1b4e460079c9498f1cc2377da7631d8fc9ffa5
[INFO] running `Command { std: "docker" "start" "17287ca043675587c04b4c220e1b4e460079c9498f1cc2377da7631d8fc9ffa5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "17287ca043675587c04b4c220e1b4e460079c9498f1cc2377da7631d8fc9ffa5" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "17287ca043675587c04b4c220e1b4e460079c9498f1cc2377da7631d8fc9ffa5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "17287ca043675587c04b4c220e1b4e460079c9498f1cc2377da7631d8fc9ffa5" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.0.34
[INFO] [stderr]    Compiling syn v0.15.30
[INFO] [stderr]    Compiling serde v1.0.90
[INFO] [stderr]    Compiling num-iter v0.1.37
[INFO] [stderr]    Compiling byteorder v1.3.1
[INFO] [stderr]    Compiling num-complex v0.2.1
[INFO] [stderr]    Compiling backtrace v0.3.15
[INFO] [stderr]     Checking array-macro v1.0.3
[INFO] [stderr]     Checking crossbeam-utils v0.6.5
[INFO] [stderr]    Compiling syn v0.14.9
[INFO] [stderr]     Checking num-rational v0.2.1
[INFO] [stderr]     Checking log v0.4.6
[INFO] [stderr]    Compiling unicode-segmentation v1.2.1
[INFO] [stderr]     Checking smallvec v0.6.9
[INFO] [stderr]     Checking arc-swap v0.3.9
[INFO] [stderr]     Checking nix v0.11.0
[INFO] [stderr]     Checking enum-map-internals v0.1.2
[INFO] [stderr]     Checking term_size v0.3.1
[INFO] [stderr]     Checking maplit v1.0.1
[INFO] [stderr]     Checking strum v0.15.0
[INFO] [stderr]     Checking crossbeam-channel v0.3.8
[INFO] [stderr]    Compiling heck v0.3.1
[INFO] [stderr]     Checking signal-hook v0.1.8
[INFO] [stderr]     Checking hashbrown v0.1.8
[INFO] [stderr]     Checking num v0.2.0
[INFO] [stderr]    Compiling backtrace-sys v0.1.28
[INFO] [stderr]    Compiling ncurses v5.99.0
[INFO] [stderr]     Checking pancurses v0.16.1
[INFO] [stderr]    Compiling enum-map-derive v0.4.1
[INFO] [stderr]     Checking enum-map v0.5.0
[INFO] [stderr]     Checking ctrlc v3.1.1
[INFO] [stderr]    Compiling synstructure v0.10.1
[INFO] [stderr]     Checking toml v0.4.10
[INFO] [stderr]    Compiling enumset_derive v0.3.0
[INFO] [stderr]    Compiling strum_macros v0.15.0
[INFO] [stderr]    Compiling failure_derive v0.1.5
[INFO] [stderr]     Checking enumset v0.3.17
[INFO] [stderr]     Checking failure v0.1.5
[INFO] [stderr]     Checking cursive v0.11.1 (https://github.com/gyscos/Cursive#158bc65c)
[INFO] [stderr]     Checking rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Error` and `format_err`
[INFO] [stdout]  --> src/blackjack/basic_game.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use failure::{format_err, Error, Fail};
[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: `Hand`
[INFO] [stdout]    --> src/blackjack/blackjack_hand.rs:211:30
[INFO] [stdout]     |
[INFO] [stdout] 211 |     use crate::cards::{Card, Hand, Rank, Suit};
[INFO] [stdout]     |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `format_err`
[INFO] [stdout]  --> src/blackjack/game.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use failure::{format_err, Error};
[INFO] [stdout]   |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Cow`
[INFO] [stdout]  --> src/blackjack/game/lifecycle.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::Cow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/blackjack/game/lifecycle.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, and `unbounded`
[INFO] [stdout]  --> src/blackjack/game/lifecycle.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crossbeam_channel::{unbounded, Receiver, Sender};
[INFO] [stdout]   |                         ^^^^^^^^^  ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::borrow::Borrow`
[INFO] [stdout]  --> src/blackjack/game/state.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::view::Selector`
[INFO] [stdout]   --> src/blackjack/ui/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use cursive::view::Selector;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlayerView`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:14:43
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::blackjack::ui::views::{Button, PlayerView};
[INFO] [stdout]    |                                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::view::Selector`
[INFO] [stdout]  --> src/blackjack/ui/handlers/initialize.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cursive::view::Selector;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::direction::Direction`
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_added.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use cursive::direction::Direction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::traits::View`
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_added.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use cursive::traits::View;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Selector`
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_added.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cursive::view::{Offset, Position, Selector};
[INFO] [stdout]   |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::views::IdView`
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_added.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cursive::views::IdView;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/blackjack/ui/views/button.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rect`
[INFO] [stdout]  --> src/blackjack/ui/views/button.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use cursive::{Cursive, Printer, Rect, Vec2, XY};
[INFO] [stdout]   |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/blackjack/ui/views/button.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 |     size: Option<(XY<SizeConstraint>)>,
[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] 17 -     size: Option<(XY<SizeConstraint>)>,
[INFO] [stdout] 17 +     size: Option<XY<SizeConstraint> >,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Identifiable`
[INFO] [stdout]  --> src/blackjack/ui/views/player_view.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use cursive::view::{Identifiable, View};
[INFO] [stdout]   |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/cards/hand.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]   --> src/cards/shoe.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |     use std::collections::HashSet;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error` and `format_err`
[INFO] [stdout]  --> src/blackjack/basic_game.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use failure::{format_err, Error, Fail};
[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: `format_err`
[INFO] [stdout]  --> src/blackjack/game.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use failure::{format_err, Error};
[INFO] [stdout]   |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Cow`
[INFO] [stdout]  --> src/blackjack/game/lifecycle.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::Cow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/blackjack/game/lifecycle.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, and `unbounded`
[INFO] [stdout]  --> src/blackjack/game/lifecycle.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crossbeam_channel::{unbounded, Receiver, Sender};
[INFO] [stdout]   |                         ^^^^^^^^^  ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::borrow::Borrow`
[INFO] [stdout]  --> src/blackjack/game/state.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cards::hand::Hand`
[INFO] [stdout]  --> src/blackjack/hand_value.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::cards::hand::Hand;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::view::Selector`
[INFO] [stdout]   --> src/blackjack/ui/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use cursive::view::Selector;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlayerView`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:14:43
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::blackjack::ui::views::{Button, PlayerView};
[INFO] [stdout]    |                                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::view::Selector`
[INFO] [stdout]  --> src/blackjack/ui/handlers/initialize.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cursive::view::Selector;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::direction::Direction`
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_added.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use cursive::direction::Direction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::traits::View`
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_added.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use cursive::traits::View;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Selector`
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_added.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cursive::view::{Offset, Position, Selector};
[INFO] [stdout]   |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cursive::views::IdView`
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_added.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cursive::views::IdView;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/blackjack/ui/views/button.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rect`
[INFO] [stdout]  --> src/blackjack/ui/views/button.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use cursive::{Cursive, Printer, Rect, Vec2, XY};
[INFO] [stdout]   |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/blackjack/ui/views/button.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 |     size: Option<(XY<SizeConstraint>)>,
[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] 17 -     size: Option<(XY<SizeConstraint>)>,
[INFO] [stdout] 17 +     size: Option<XY<SizeConstraint> >,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Identifiable`
[INFO] [stdout]  --> src/blackjack/ui/views/player_view.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use cursive::view::{Identifiable, View};
[INFO] [stdout]   |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/cards/hand.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cards::rank::Rank`
[INFO] [stdout]   --> src/cards.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use crate::cards::rank::Rank;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cards::suit::Suit`
[INFO] [stdout]   --> src/cards.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use crate::cards::suit::Suit;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/blackjack/game.rs:112:31
[INFO] [stdout]     |
[INFO] [stdout] 112 |             Action::AddPlayer(player) => {}
[INFO] [stdout]     |                               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/blackjack/game.rs:112:31
[INFO] [stdout]     |
[INFO] [stdout] 112 |             Action::AddPlayer(player) => {}
[INFO] [stdout]     |                               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/blackjack/hand_value.rs:67:21
[INFO] [stdout]    |
[INFO] [stdout] 67 |                     _ => unreachable!(""),
[INFO] [stdout]    |                     ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/blackjack/hand_value.rs:67:21
[INFO] [stdout]    |
[INFO] [stdout] 49 |                     (HandValue::V(acc), CardValue::Single(v)) => {
[INFO] [stdout]    |                     ----------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 52 |                     (HandValue::V(acc), CardValue::Ace(v1, v2)) => {
[INFO] [stdout]    |                     ------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 55 |                     (HandValue::Ace(acc1, acc2), CardValue::Single(v)) => {
[INFO] [stdout]    |                     -------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 58 |                     (HandValue::Ace(acc1, acc2), CardValue::Ace(v1, v2)) => {
[INFO] [stdout]    |                     ---------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 67 |                     _ => unreachable!(""),
[INFO] [stdout]    |                     ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/blackjack/hand_value.rs:67:21
[INFO] [stdout]    |
[INFO] [stdout] 67 |                     _ => unreachable!(""),
[INFO] [stdout]    |                     ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/blackjack/hand_value.rs:67:21
[INFO] [stdout]    |
[INFO] [stdout] 49 |                     (HandValue::V(acc), CardValue::Single(v)) => {
[INFO] [stdout]    |                     ----------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 52 |                     (HandValue::V(acc), CardValue::Ace(v1, v2)) => {
[INFO] [stdout]    |                     ------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 55 |                     (HandValue::Ace(acc1, acc2), CardValue::Single(v)) => {
[INFO] [stdout]    |                     -------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 58 |                     (HandValue::Ace(acc1, acc2), CardValue::Ace(v1, v2)) => {
[INFO] [stdout]    |                     ---------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 67 |                     _ => unreachable!(""),
[INFO] [stdout]    |                     ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:75:42
[INFO] [stdout]    |
[INFO] [stdout] 75 |                     cb(tx.clone(), move |s, t| {
[INFO] [stdout]    |                                          ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:75:45
[INFO] [stdout]    |
[INFO] [stdout] 75 |                     cb(tx.clone(), move |s, t| {
[INFO] [stdout]    |                                             ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:63:45
[INFO] [stdout]    |
[INFO] [stdout] 63 |                     cb(tx.clone(), move |t, s| {
[INFO] [stdout]    |                                             ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_clone2`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let player_clone2 = player.clone();
[INFO] [stdout]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_clone2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:75:42
[INFO] [stdout]    |
[INFO] [stdout] 75 |                     cb(tx.clone(), move |s, t| {
[INFO] [stdout]    |                                          ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:75:45
[INFO] [stdout]    |
[INFO] [stdout] 75 |                     cb(tx.clone(), move |s, t| {
[INFO] [stdout]    |                                             ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:63:45
[INFO] [stdout]    |
[INFO] [stdout] 63 |                     cb(tx.clone(), move |t, s| {
[INFO] [stdout]    |                                             ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_clone2`
[INFO] [stdout]   --> src/blackjack/ui/containers/player_container.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let player_clone2 = player.clone();
[INFO] [stdout]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_clone2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/blackjack/ui/handlers/initialize.rs:28:54
[INFO] [stdout]    |
[INFO] [stdout] 28 |                     .on_submit(cb2(tx1.clone(), |tx, s, name: &str| {
[INFO] [stdout]    |                                                      ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx2`
[INFO] [stdout]   --> src/blackjack/ui/handlers/initialize.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let tx2 = tx.clone();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_tx2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/blackjack/ui/handlers/player_added.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let mut player_container =
[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: unused variable: `s`
[INFO] [stdout]   --> src/blackjack/ui/handlers/initialize.rs:28:54
[INFO] [stdout]    |
[INFO] [stdout] 28 |                     .on_submit(cb2(tx1.clone(), |tx, s, name: &str| {
[INFO] [stdout]    |                                                      ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx2`
[INFO] [stdout]   --> src/blackjack/ui/handlers/initialize.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let tx2 = tx.clone();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_tx2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_bankroll.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let mut view: Option<ViewRef<TextView>> =
[INFO] [stdout]   |         ----^^^^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/blackjack/ui/handlers/player_added.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let mut player_container =
[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: variable does not need to be mutable
[INFO] [stdout]  --> src/blackjack/ui/handlers/player_bankroll.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let mut view: Option<ViewRef<TextView>> =
[INFO] [stdout]   |         ----^^^^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `printer`
[INFO] [stdout]   --> src/blackjack/ui/views/player_view.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn draw(&self, printer: &Printer) {}
[INFO] [stdout]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_printer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `printer`
[INFO] [stdout]   --> src/blackjack/ui/views/player_view.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn draw(&self, printer: &Printer) {}
[INFO] [stdout]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_printer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DealingError` is never used
[INFO] [stdout]   --> src/blackjack/basic_game.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum DealingError {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BasicGame` is never constructed
[INFO] [stdout]   --> src/blackjack/basic_game.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct BasicGame {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/blackjack/basic_game.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl BasicGame {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 24 |     pub fn new() -> BasicGame {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn with_n_decks(n: u32) -> BasicGame {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn setup(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn add_player(&mut self, player: Player) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn can_add_player(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn get_players(&self) -> &Vec<Player> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn get_dealer(&self) -> &Player {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn deal_cards(&mut self) -> Result<(), DealingError> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn deal_single_card_to_all_players(&mut self) -> Result<(), DealingError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     fn deal_card_to_dealer(&mut self) -> Result<(), DealingError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WagerPlaced`, `CardsDealt`, and `HandPlayed` are never constructed
[INFO] [stdout]   --> src/blackjack/blackjack_hand.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum HandState {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout]  8 |     Default,
[INFO] [stdout]  9 |     WagerPlaced,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 10 |     CardsDealt,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 11 |     HandPlayed,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Natural`, `Pushed`, `Lost`, `Won`, and `Busted` are never constructed
[INFO] [stdout]   --> src/blackjack/blackjack_hand.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum ResultsState {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 15 |     Default,
[INFO] [stdout] 16 |     Natural,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 17 |     Pushed,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 18 |     Lost,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 19 |     Won,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 20 |     Busted,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `hand`, `player_type`, `state`, `result_state`, and `wager` are never read
[INFO] [stdout]   --> src/blackjack/blackjack_hand.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct BlackjackHand {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 26 |     hand: Hand,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 27 |     player_type: PlayerType,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 28 |     state: HandState,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 29 |     result_state: ResultsState,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 30 |     wager: Wager,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/blackjack/blackjack_hand.rs:44:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl BlackjackHand {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub fn with_cards(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn get_state(&self) -> &HandState {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn set_state(&mut self, state: HandState) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn add_card(&mut self, card: Arc<Card>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn add_cards(&mut self, cards: Vec<Arc<Card>>) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn get_cards(&self) -> &Vec<Arc<Card>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn get_card_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn can_split(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn split(&mut self) -> Option<[BlackjackHand; 2]> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn can_double_down(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn can_hit(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn is_dealer(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ResultState` is never used
[INFO] [stdout]    --> src/blackjack/blackjack_hand.rs:145:11
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub trait ResultState {
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `StartPhase` and `EndPhase` are never constructed
[INFO] [stdout]   --> src/blackjack/game.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum LifecycleMessage {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] 31 |     StartPhase(Phase),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 32 |     EndPhase(Phase),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `AddPlayer` is never constructed
[INFO] [stdout]   --> src/blackjack/game.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum Action {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 38 |     AddPlayer(Player),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lifecycle` is never read
[INFO] [stdout]   --> src/blackjack/game.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct Channels {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 50 |     lifecycle: Channel<LifecycleMessage>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lifecycle` is never read
[INFO] [stdout]   --> src/blackjack/game.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct Game<'s> {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 66 |     lifecycle: Lifecycle,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `setup` and `get_channels` are never used
[INFO] [stdout]   --> src/blackjack/game.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | impl<'s> Game<'s> {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn setup(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn get_channels(&self) -> &Channels {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `curr`, `prev`, and `reset` are never used
[INFO] [stdout]   --> src/blackjack/game/lifecycle.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl LifecyclePhase {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn curr(&self) -> &Phase {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn prev(&self) -> &Option<Phase> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `phase` is never read
[INFO] [stdout]   --> src/blackjack/game/lifecycle.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct Lifecycle {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 87 |     phase: LifecyclePhase,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_phase`, `get_phase_mut`, and `next_phase` are never used
[INFO] [stdout]    --> src/blackjack/game/lifecycle.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl Lifecycle {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn get_phase(&self) -> &LifecyclePhase {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn get_phase_mut(&mut self) -> &mut LifecyclePhase {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn next_phase(&mut self) -> Option<Phase> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `players` is never read
[INFO] [stdout]   --> src/blackjack/game/state.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Round<'r> {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 15 |     players: Vec<&'r Player>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dealer`, `shoe`, `status`, and `round` are never read
[INFO] [stdout]   --> src/blackjack/game/state.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct State<'r> {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 19 |     players: Vec<Arc<RwLock<Player>>>,
[INFO] [stdout] 20 |     dealer: Player,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 21 |     shoe: Shoe,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 22 |     status: Status,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 23 |     round: Option<Round<'r>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `shoe_mut` and `remove_player_by_id` are never used
[INFO] [stdout]   --> src/blackjack/game/state.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl<'r> State<'r> {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn shoe_mut(&mut self) -> &mut Shoe {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn remove_player_by_id(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CardValue` is never used
[INFO] [stdout]  --> src/blackjack/hand_value.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum CardValue {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HandValue` is never used
[INFO] [stdout]   --> src/blackjack/hand_value.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum HandValue {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WithHandValue` is never used
[INFO] [stdout]   --> src/blackjack/hand_value.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub trait WithHandValue {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `hands`, `current_hand`, and `player_type` are never read
[INFO] [stdout]   --> src/blackjack/player.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Player {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     hands: Vec<BlackjackHand>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 20 |     current_hand: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 21 |     name: String,
[INFO] [stdout] 22 |     player_type: PlayerType,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_current_hand`, `push_card_to_current_hand`, and `get_player_type` are never used
[INFO] [stdout]   --> src/blackjack/player.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Player {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn get_current_hand(&self) -> Option<&BlackjackHand> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn push_card_to_current_hand(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn get_player_type(&self) -> &PlayerType {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerView` is never constructed
[INFO] [stdout]  --> src/blackjack/ui/views/player_view.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PlayerView {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wager` is never read
[INFO] [stdout]  --> src/blackjack/wager.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Wager {
[INFO] [stdout]   |            ----- field in this struct
[INFO] [stdout] 2 |     wager: u32,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_wager`, `get_wager`, `reset_wager`, and `add_wager` are never used
[INFO] [stdout]   --> src/blackjack/wager.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl Wager {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub fn set_wager(&mut self, wager: u32) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn get_wager(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn reset_wager(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn add_wager(&mut self, wager: u32) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WithWager` is never used
[INFO] [stdout]   --> src/blackjack/wager.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub trait WithWager {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_bankroll` and `sub_funds` are never used
[INFO] [stdout]   --> src/cards/bankroll.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Bankroll {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn set_bankroll(&mut self, bankroll: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn sub_funds(&mut self, value: u32) -> Result<u32, &str> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> src/cards/card.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl Card {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 41 |     pub fn from(suit: Suit, rank: Rank) -> Card {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cards` is never read
[INFO] [stdout]  --> src/cards/hand.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Hand {
[INFO] [stdout]   |            ---- field in this struct
[INFO] [stdout] 8 |     cards: Vec<Arc<Card>>,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Hand` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_cards`, `add_card`, `get_cards`, `reset_cards`, `get_card_count`, and `add_cards` are never used
[INFO] [stdout]   --> src/cards/hand.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Hand {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn with_cards(cards: Vec<Arc<Card>>) -> Hand {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn add_card(&mut self, card: Arc<Card>) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_cards(&self) -> &Vec<Arc<Card>> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn reset_cards(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_card_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn add_cards(&mut self, cards: Vec<Arc<Card>>) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Player` is never constructed
[INFO] [stdout]  --> src/cards/player.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Player {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_with_name`, `get_name`, and `set_name` are never used
[INFO] [stdout]   --> src/cards/player.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Player {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Player {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn new_with_name(name: String) -> Player {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn get_name(&self) -> &Option<String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn set_name(&mut self, name: String) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `NamedPlayer` is never used
[INFO] [stdout]   --> src/cards/player.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub trait NamedPlayer {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `curr_index` and `round_index` are never read
[INFO] [stdout]   --> src/cards/shoe.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Shoe {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout]  9 |     pub cards: Vec<Arc<Card>>,
[INFO] [stdout] 10 |     curr_index: usize,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 11 |     round_index: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Shoe` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_deck`, `start_round`, `take_card`, `get_cards_in_play`, and `get_percent_undealt_cards` are never used
[INFO] [stdout]   --> src/cards/shoe.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl Shoe {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 31 |     pub fn new() -> Shoe {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn add_deck(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn start_round(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn take_card(&mut self) -> Option<Arc<Card>> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn get_cards_in_play(&mut self) -> Option<&[Arc<Card>]> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn get_percent_undealt_cards(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `shuffle` and `shuffle_rounds` are never used
[INFO] [stdout]   --> src/cards/shuffleable.rs:9:8
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait Shuffleable {
[INFO] [stdout]    |           ----------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout]  9 |     fn shuffle(&mut self) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fn shuffle_rounds(&mut self, rounds: i32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `setup` is never used
[INFO] [stdout]   --> src/blackjack/basic_game.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl BasicGame {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn setup(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WagerPlaced`, `CardsDealt`, and `HandPlayed` are never constructed
[INFO] [stdout]   --> src/blackjack/blackjack_hand.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum HandState {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout]  8 |     Default,
[INFO] [stdout]  9 |     WagerPlaced,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 10 |     CardsDealt,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 11 |     HandPlayed,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/blackjack/basic_game.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 | #[derive(Debug, Fail)]
[INFO] [stdout]    |                 ^---
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Fail` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_DealingError`
[INFO] [stdout] 10 | pub enum DealingError {
[INFO] [stdout]    |          ------------ `DealingError` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]    = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Natural`, `Pushed`, `Lost`, `Won`, and `Busted` are never constructed
[INFO] [stdout]   --> src/blackjack/blackjack_hand.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum ResultsState {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 15 |     Default,
[INFO] [stdout] 16 |     Natural,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 17 |     Pushed,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 18 |     Lost,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 19 |     Won,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 20 |     Busted,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_state` and `set_state` are never used
[INFO] [stdout]   --> src/blackjack/blackjack_hand.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl BlackjackHand {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn get_state(&self) -> &HandState {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn set_state(&mut self, state: HandState) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/blackjack/basic_game.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 | #[derive(Debug, Fail)]
[INFO] [stdout]    |                 ^---
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Display` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_DealingError`
[INFO] [stdout] 10 | pub enum DealingError {
[INFO] [stdout]    |          ------------ `DealingError` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ResultState` is never used
[INFO] [stdout]    --> src/blackjack/blackjack_hand.rs:145:11
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub trait ResultState {
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `StartPhase` and `EndPhase` are never constructed
[INFO] [stdout]   --> src/blackjack/game.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum LifecycleMessage {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] 31 |     StartPhase(Phase),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 32 |     EndPhase(Phase),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `AddPlayer` is never constructed
[INFO] [stdout]   --> src/blackjack/game.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum Action {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] 38 |     AddPlayer(Player),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lifecycle` is never read
[INFO] [stdout]   --> src/blackjack/game.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct Channels {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 50 |     lifecycle: Channel<LifecycleMessage>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lifecycle` is never read
[INFO] [stdout]   --> src/blackjack/game.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct Game<'s> {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 66 |     lifecycle: Lifecycle,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `setup` and `get_channels` are never used
[INFO] [stdout]   --> src/blackjack/game.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | impl<'s> Game<'s> {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn setup(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn get_channels(&self) -> &Channels {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]   --> src/blackjack/game/lifecycle.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl LifecyclePhase {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next_phase` is never used
[INFO] [stdout]    --> src/blackjack/game/lifecycle.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl Lifecycle {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn next_phase(&mut self) -> Option<Phase> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `players` is never read
[INFO] [stdout]   --> src/blackjack/game/state.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Round<'r> {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 15 |     players: Vec<&'r Player>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dealer`, `shoe`, `status`, and `round` are never read
[INFO] [stdout]   --> src/blackjack/game/state.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct State<'r> {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 19 |     players: Vec<Arc<RwLock<Player>>>,
[INFO] [stdout] 20 |     dealer: Player,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 21 |     shoe: Shoe,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 22 |     status: Status,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 23 |     round: Option<Round<'r>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `shoe_mut` and `remove_player_by_id` are never used
[INFO] [stdout]   --> src/blackjack/game/state.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl<'r> State<'r> {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn shoe_mut(&mut self) -> &mut Shoe {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn remove_player_by_id(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_ace` and `is_busted` are never used
[INFO] [stdout]    --> src/blackjack/hand_value.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout]  18 | pub trait WithHandValue {
[INFO] [stdout]     |           ------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn has_ace(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn is_busted(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_type` is never read
[INFO] [stdout]   --> src/blackjack/player.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Player {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     player_type: PlayerType,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_player_type` is never used
[INFO] [stdout]   --> src/blackjack/player.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Player {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn get_player_type(&self) -> &PlayerType {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerView` is never constructed
[INFO] [stdout]  --> src/blackjack/ui/views/player_view.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PlayerView {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_wager`, `get_wager`, and `add_wager` are never used
[INFO] [stdout]   --> src/blackjack/wager.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl Wager {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub fn set_wager(&mut self, wager: u32) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn get_wager(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn add_wager(&mut self, wager: u32) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WithWager` is never used
[INFO] [stdout]   --> src/blackjack/wager.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub trait WithWager {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_with_name` is never used
[INFO] [stdout]   --> src/cards/player.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Player {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn new_with_name(name: String) -> Player {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `NamedPlayer` is never used
[INFO] [stdout]   --> src/cards/player.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub trait NamedPlayer {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_cards_in_play` and `get_percent_undealt_cards` are never used
[INFO] [stdout]   --> src/cards/shoe.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl Shoe {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn get_cards_in_play(&mut self) -> Option<&[Arc<Card>]> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn get_percent_undealt_cards(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/blackjack/basic_game.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 | #[derive(Debug, Fail)]
[INFO] [stdout]    |                 ^---
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Fail` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_DealingError`
[INFO] [stdout] 10 | pub enum DealingError {
[INFO] [stdout]    |          ------------ `DealingError` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]    = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/blackjack/hand_value.rs:95:22
[INFO] [stdout]    |
[INFO] [stdout] 95 |           unreachable!(format!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 96 | |             "Failed to get value from cards 0 >= n >= 3 {:?}",
[INFO] [stdout] 97 | |             values
[INFO] [stdout] 98 | |         ));
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `unreachable!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: the `unreachable!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 95 ~         unreachable!(
[INFO] [stdout] 96 |             "Failed to get value from cards 0 >= n >= 3 {:?}",
[INFO] [stdout] 97 |             values
[INFO] [stdout] 98 ~         );
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/blackjack/player.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |         self.bankroll.add_funds(funds);
[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] 80 |         let _ = self.bankroll.add_funds(funds);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/blackjack/basic_game.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 | #[derive(Debug, Fail)]
[INFO] [stdout]    |                 ^---
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Display` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_DealingError`
[INFO] [stdout] 10 | pub enum DealingError {
[INFO] [stdout]    |          ------------ `DealingError` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Option::<T>::is_some` that must be used
[INFO] [stdout]    --> src/blackjack/basic_game.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         game.get_players().iter().find(|p| p.get_id() == expected_id).is_some();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you intended to assert that this has a value, consider `.unwrap()` instead
[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] 130 |         let _ = game.get_players().iter().find(|p| p.get_id() == expected_id).is_some();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/blackjack/hand_value.rs:95:22
[INFO] [stdout]    |
[INFO] [stdout] 95 |           unreachable!(format!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 96 | |             "Failed to get value from cards 0 >= n >= 3 {:?}",
[INFO] [stdout] 97 | |             values
[INFO] [stdout] 98 | |         ));
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `unreachable!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: the `unreachable!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 95 ~         unreachable!(
[INFO] [stdout] 96 |             "Failed to get value from cards 0 >= n >= 3 {:?}",
[INFO] [stdout] 97 |             values
[INFO] [stdout] 98 ~         );
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/blackjack/player.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |         self.bankroll.add_funds(funds);
[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] 80 |         let _ = self.bankroll.add_funds(funds);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.55s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: syn v0.14.9
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 7`
[INFO] running `Command { std: "docker" "inspect" "17287ca043675587c04b4c220e1b4e460079c9498f1cc2377da7631d8fc9ffa5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "17287ca043675587c04b4c220e1b4e460079c9498f1cc2377da7631d8fc9ffa5", kill_on_drop: false }`
[INFO] [stdout] 17287ca043675587c04b4c220e1b4e460079c9498f1cc2377da7631d8fc9ffa5
