[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] testing kyle-mccarthy/blackjack-rs against master#733b47ea4b1b86216f14ef56e49440c33933f230+rustflags=-Copt-level=3 for pr-138759-retry [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyle-mccarthy%2Fblackjack-rs" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-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-5-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/kyle-mccarthy/blackjack-rs on toolchain 733b47ea4b1b86216f14ef56e49440c33933f230 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "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" "+733b47ea4b1b86216f14ef56e49440c33933f230" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5f4b61fd4b89ac15cbeda03b656f307612e36bb3fd23d931793b915fbefd8432 [INFO] running `Command { std: "docker" "start" "-a" "5f4b61fd4b89ac15cbeda03b656f307612e36bb3fd23d931793b915fbefd8432", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5f4b61fd4b89ac15cbeda03b656f307612e36bb3fd23d931793b915fbefd8432", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5f4b61fd4b89ac15cbeda03b656f307612e36bb3fd23d931793b915fbefd8432", kill_on_drop: false }` [INFO] [stdout] 5f4b61fd4b89ac15cbeda03b656f307612e36bb3fd23d931793b915fbefd8432 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 260a767429103d0594a5b61f7b7e0900456a7049808687d9674b4df9c1f22676 [INFO] running `Command { std: "docker" "start" "-a" "260a767429103d0594a5b61f7b7e0900456a7049808687d9674b4df9c1f22676", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.50 [INFO] [stderr] Compiling proc-macro2 v0.4.27 [INFO] [stderr] Compiling autocfg v0.1.2 [INFO] [stderr] Compiling unicode-xid v0.1.0 [INFO] [stderr] Compiling num-traits v0.2.6 [INFO] [stderr] Compiling rand_core v0.4.0 [INFO] [stderr] Compiling cc v1.0.34 [INFO] [stderr] Compiling syn v0.15.30 [INFO] [stderr] Compiling cfg-if v0.1.7 [INFO] [stderr] Compiling num-integer v0.1.39 [INFO] [stderr] Compiling pkg-config v0.3.14 [INFO] [stderr] Compiling serde v1.0.90 [INFO] [stderr] Compiling num-rational v0.2.1 [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 nix v0.11.0 [INFO] [stderr] Compiling failure_derive v0.1.5 [INFO] [stderr] Compiling array-macro v1.0.3 [INFO] [stderr] Compiling rand_core v0.3.1 [INFO] [stderr] Compiling unicode-segmentation v1.2.1 [INFO] [stderr] Compiling lazy_static v1.3.0 [INFO] [stderr] Compiling rand_xorshift v0.1.1 [INFO] [stderr] Compiling rand_isaac v0.1.1 [INFO] [stderr] Compiling crossbeam-utils v0.6.5 [INFO] [stderr] Compiling rand_hc v0.1.0 [INFO] [stderr] Compiling enum-map-internals v0.1.2 [INFO] [stderr] Compiling rand_jitter v0.1.3 [INFO] [stderr] Compiling log v0.4.6 [INFO] [stderr] Compiling smallvec v0.6.9 [INFO] [stderr] Compiling bitflags v1.0.4 [INFO] [stderr] Compiling arc-swap v0.3.9 [INFO] [stderr] Compiling void v1.0.2 [INFO] [stderr] Compiling scopeguard v0.3.3 [INFO] [stderr] Compiling rand_pcg v0.1.2 [INFO] [stderr] Compiling rand_chacha v0.1.1 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Compiling backtrace v0.3.15 [INFO] [stderr] Compiling stable_deref_trait v1.1.1 [INFO] [stderr] Compiling rustc-demangle v0.1.13 [INFO] [stderr] Compiling hashbrown v0.1.8 [INFO] [stderr] Compiling owning_ref v0.4.0 [INFO] [stderr] Compiling heck v0.3.1 [INFO] [stderr] Compiling unicode-width v0.1.5 [INFO] [stderr] Compiling quote v0.6.11 [INFO] [stderr] Compiling xi-unicode v0.1.0 [INFO] [stderr] Compiling maplit v1.0.1 [INFO] [stderr] Compiling strum v0.15.0 [INFO] [stderr] Compiling syn v0.14.9 [INFO] [stderr] Compiling crossbeam-channel v0.3.8 [INFO] [stderr] Compiling rand_os v0.1.3 [INFO] [stderr] Compiling time v0.1.42 [INFO] [stderr] Compiling signal-hook v0.1.8 [INFO] [stderr] Compiling term_size v0.3.1 [INFO] [stderr] Compiling chrono v0.4.6 [INFO] [stderr] Compiling num v0.2.0 [INFO] [stderr] Compiling uuid v0.7.4 [INFO] [stderr] Compiling ncurses v5.99.0 [INFO] [stderr] Compiling backtrace-sys v0.1.28 [INFO] [stderr] Compiling pancurses v0.16.1 [INFO] [stderr] Compiling ctrlc v3.1.1 [INFO] [stderr] Compiling synstructure v0.10.1 [INFO] [stderr] Compiling enum-map-derive v0.4.1 [INFO] [stderr] Compiling toml v0.4.10 [INFO] [stderr] Compiling enum-map v0.5.0 [INFO] [stderr] Compiling enumset_derive v0.3.0 [INFO] [stderr] Compiling strum_macros v0.15.0 [INFO] [stderr] Compiling enumset v0.3.17 [INFO] [stderr] Compiling cursive v0.11.1 (https://github.com/gyscos/Cursive#158bc65c) [INFO] [stderr] Compiling failure v0.1.5 [INFO] [stderr] Compiling 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)]` 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)>, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 17 - size: Option<(XY)>, [INFO] [stdout] 17 + size: Option>, [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)]` 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)]` on by default [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: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: `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: `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: 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: 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)]` 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> = [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: 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)]` 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 { [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) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn add_cards(&mut self, cards: Vec>) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn get_cards(&self) -> &Vec> { [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, [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 { [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 { [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>>, [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>, [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, [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 { [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>, [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>) -> Hand { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn add_card(&mut self, card: Arc) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn get_cards(&self) -> &Vec> { [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>) { [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 { [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>, [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> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn get_cards_in_play(&mut self) -> Option<&[Arc]> { [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: 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: 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: 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 [INFO] [stdout] = note: the `unreachable!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] = note: `#[warn(non_fmt_panics)]` 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)]` 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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 06s [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 2` [INFO] running `Command { std: "docker" "inspect" "260a767429103d0594a5b61f7b7e0900456a7049808687d9674b4df9c1f22676", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "260a767429103d0594a5b61f7b7e0900456a7049808687d9674b4df9c1f22676", kill_on_drop: false }` [INFO] [stdout] 260a767429103d0594a5b61f7b7e0900456a7049808687d9674b4df9c1f22676 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 805176b87e9d3d0b02a977f43762493b2ac5ee7a5fbf08593cd4fe1426765681 [INFO] running `Command { std: "docker" "start" "-a" "805176b87e9d3d0b02a977f43762493b2ac5ee7a5fbf08593cd4fe1426765681", kill_on_drop: false }` [INFO] [stderr] Compiling 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)]` 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)>, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 17 - size: Option<(XY)>, [INFO] [stdout] 17 + size: Option>, [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 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)]` 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)]` on by default [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: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: `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: `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: 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: 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)]` 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> = [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: 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)]` 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: 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: 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, [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 { [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>>, [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>, [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]> { [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: 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::::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)]` 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 [INFO] [stdout] = note: the `unreachable!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] = note: `#[warn(non_fmt_panics)]` 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 `test` profile [unoptimized + debuginfo] target(s) in 2.21s [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 2` [INFO] running `Command { std: "docker" "inspect" "805176b87e9d3d0b02a977f43762493b2ac5ee7a5fbf08593cd4fe1426765681", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "805176b87e9d3d0b02a977f43762493b2ac5ee7a5fbf08593cd4fe1426765681", kill_on_drop: false }` [INFO] [stdout] 805176b87e9d3d0b02a977f43762493b2ac5ee7a5fbf08593cd4fe1426765681 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 37a267ba411f639743ea04364d40178bd95fcb01414a872143dd02da7a178ee1 [INFO] running `Command { std: "docker" "start" "-a" "37a267ba411f639743ea04364d40178bd95fcb01414a872143dd02da7a178ee1", kill_on_drop: false }` [INFO] [stderr] warning: unused imports: `Error` and `format_err` [INFO] [stderr] --> src/blackjack/basic_game.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | use failure::{format_err, Error, Fail}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Hand` [INFO] [stderr] --> src/blackjack/blackjack_hand.rs:211:30 [INFO] [stderr] | [INFO] [stderr] 211 | use crate::cards::{Card, Hand, Rank, Suit}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `format_err` [INFO] [stderr] --> src/blackjack/game.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use failure::{format_err, Error}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/blackjack/game/lifecycle.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::rc::Rc` [INFO] [stderr] --> src/blackjack/game/lifecycle.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::rc::Rc; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Receiver`, `Sender`, and `unbounded` [INFO] [stderr] --> src/blackjack/game/lifecycle.rs:4:25 [INFO] [stderr] | [INFO] [stderr] 4 | use crossbeam_channel::{unbounded, Receiver, Sender}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `core::borrow::Borrow` [INFO] [stderr] --> src/blackjack/game/state.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use core::borrow::Borrow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cursive::view::Selector` [INFO] [stderr] --> src/blackjack/ui/mod.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use cursive::view::Selector; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `PlayerView` [INFO] [stderr] --> src/blackjack/ui/containers/player_container.rs:14:43 [INFO] [stderr] | [INFO] [stderr] 14 | use crate::blackjack::ui::views::{Button, PlayerView}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cursive::view::Selector` [INFO] [stderr] --> src/blackjack/ui/handlers/initialize.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use cursive::view::Selector; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cursive::direction::Direction` [INFO] [stderr] --> src/blackjack/ui/handlers/player_added.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use cursive::direction::Direction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cursive::traits::View` [INFO] [stderr] --> src/blackjack/ui/handlers/player_added.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use cursive::traits::View; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Selector` [INFO] [stderr] --> src/blackjack/ui/handlers/player_added.rs:6:39 [INFO] [stderr] | [INFO] [stderr] 6 | use cursive::view::{Offset, Position, Selector}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cursive::views::IdView` [INFO] [stderr] --> src/blackjack/ui/handlers/player_added.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use cursive::views::IdView; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Arc` and `RwLock` [INFO] [stderr] --> src/blackjack/ui/views/button.rs:1:17 [INFO] [stderr] | [INFO] [stderr] 1 | use std::sync::{Arc, RwLock}; [INFO] [stderr] | ^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Rect` [INFO] [stderr] --> src/blackjack/ui/views/button.rs:9:33 [INFO] [stderr] | [INFO] [stderr] 9 | use cursive::{Cursive, Printer, Rect, Vec2, XY}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around type [INFO] [stderr] --> src/blackjack/ui/views/button.rs:17:18 [INFO] [stderr] | [INFO] [stderr] 17 | size: Option<(XY)>, [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 17 - size: Option<(XY)>, [INFO] [stderr] 17 + size: Option>, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `Identifiable` [INFO] [stderr] --> src/blackjack/ui/views/player_view.rs:2:21 [INFO] [stderr] | [INFO] [stderr] 2 | use cursive::view::{Identifiable, View}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::rc::Rc` [INFO] [stderr] --> src/cards/hand.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::rc::Rc; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashSet` [INFO] [stderr] --> src/cards/shoe.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | use std::collections::HashSet; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `player` [INFO] [stderr] --> src/blackjack/game.rs:112:31 [INFO] [stderr] | [INFO] [stderr] 112 | Action::AddPlayer(player) => {} [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/blackjack/hand_value.rs:67:21 [INFO] [stderr] | [INFO] [stderr] 67 | _ => unreachable!(""), [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/blackjack/hand_value.rs:67:21 [INFO] [stderr] | [INFO] [stderr] 49 | (HandValue::V(acc), CardValue::Single(v)) => { [INFO] [stderr] | ----------------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 52 | (HandValue::V(acc), CardValue::Ace(v1, v2)) => { [INFO] [stderr] | ------------------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 55 | (HandValue::Ace(acc1, acc2), CardValue::Single(v)) => { [INFO] [stderr] | -------------------------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 58 | (HandValue::Ace(acc1, acc2), CardValue::Ace(v1, v2)) => { [INFO] [stderr] | ---------------------------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 67 | _ => unreachable!(""), [INFO] [stderr] | ^ ...and 1 other patterns collectively make this unreachable [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `player_clone2` [INFO] [stderr] --> src/blackjack/ui/containers/player_container.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | let player_clone2 = player.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_clone2` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/blackjack/ui/containers/player_container.rs:63:45 [INFO] [stderr] | [INFO] [stderr] 63 | cb(tx.clone(), move |t, s| { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/blackjack/ui/containers/player_container.rs:75:42 [INFO] [stderr] | [INFO] [stderr] 75 | cb(tx.clone(), move |s, t| { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `t` [INFO] [stderr] --> src/blackjack/ui/containers/player_container.rs:75:45 [INFO] [stderr] | [INFO] [stderr] 75 | cb(tx.clone(), move |s, t| { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tx2` [INFO] [stderr] --> src/blackjack/ui/handlers/initialize.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | let tx2 = tx.clone(); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_tx2` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/blackjack/ui/handlers/initialize.rs:28:54 [INFO] [stderr] | [INFO] [stderr] 28 | .on_submit(cb2(tx1.clone(), |tx, s, name: &str| { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/blackjack/ui/handlers/player_added.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | let mut player_container = [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/blackjack/ui/handlers/player_bankroll.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | let mut view: Option> = [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `printer` [INFO] [stderr] --> src/blackjack/ui/views/player_view.rs:13:20 [INFO] [stderr] | [INFO] [stderr] 13 | fn draw(&self, printer: &Printer) {} [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_printer` [INFO] [stderr] [INFO] [stderr] warning: method `setup` is never used [INFO] [stderr] --> src/blackjack/basic_game.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 23 | impl BasicGame { [INFO] [stderr] | -------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 40 | pub fn setup(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variants `WagerPlaced`, `CardsDealt`, and `HandPlayed` are never constructed [INFO] [stderr] --> src/blackjack/blackjack_hand.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 7 | pub enum HandState { [INFO] [stderr] | --------- variants in this enum [INFO] [stderr] 8 | Default, [INFO] [stderr] 9 | WagerPlaced, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 10 | CardsDealt, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 11 | HandPlayed, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `Natural`, `Pushed`, `Lost`, `Won`, and `Busted` are never constructed [INFO] [stderr] --> src/blackjack/blackjack_hand.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub enum ResultsState { [INFO] [stderr] | ------------ variants in this enum [INFO] [stderr] 15 | Default, [INFO] [stderr] 16 | Natural, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 17 | Pushed, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 18 | Lost, [INFO] [stderr] | ^^^^ [INFO] [stderr] 19 | Won, [INFO] [stderr] | ^^^ [INFO] [stderr] 20 | Busted, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `get_state` and `set_state` are never used [INFO] [stderr] --> src/blackjack/blackjack_hand.rs:57:12 [INFO] [stderr] | [INFO] [stderr] 33 | impl BlackjackHand { [INFO] [stderr] | ------------------ methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 57 | pub fn get_state(&self) -> &HandState { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 61 | pub fn set_state(&mut self, state: HandState) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait `ResultState` is never used [INFO] [stderr] --> src/blackjack/blackjack_hand.rs:145:11 [INFO] [stderr] | [INFO] [stderr] 145 | pub trait ResultState { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `StartPhase` and `EndPhase` are never constructed [INFO] [stderr] --> src/blackjack/game.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 30 | pub enum LifecycleMessage { [INFO] [stderr] | ---------------- variants in this enum [INFO] [stderr] 31 | StartPhase(Phase), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 32 | EndPhase(Phase), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `AddPlayer` is never constructed [INFO] [stderr] --> src/blackjack/game.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 37 | pub enum Action { [INFO] [stderr] | ------ variant in this enum [INFO] [stderr] 38 | AddPlayer(Player), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `lifecycle` is never read [INFO] [stderr] --> src/blackjack/game.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub struct Channels { [INFO] [stderr] | -------- field in this struct [INFO] [stderr] 50 | lifecycle: Channel, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `lifecycle` is never read [INFO] [stderr] --> src/blackjack/game.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 65 | pub struct Game<'s> { [INFO] [stderr] | ---- field in this struct [INFO] [stderr] 66 | lifecycle: Lifecycle, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `setup` and `get_channels` are never used [INFO] [stderr] --> src/blackjack/game.rs:86:12 [INFO] [stderr] | [INFO] [stderr] 81 | impl<'s> Game<'s> { [INFO] [stderr] | ----------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 86 | pub fn setup(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 98 | pub fn get_channels(&self) -> &Channels { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `reset` is never used [INFO] [stderr] --> src/blackjack/game/lifecycle.rs:62:12 [INFO] [stderr] | [INFO] [stderr] 32 | impl LifecyclePhase { [INFO] [stderr] | ------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 62 | pub fn reset(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `next_phase` is never used [INFO] [stderr] --> src/blackjack/game/lifecycle.rs:111:12 [INFO] [stderr] | [INFO] [stderr] 98 | impl Lifecycle { [INFO] [stderr] | -------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 111 | pub fn next_phase(&mut self) -> Option { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `players` is never read [INFO] [stderr] --> src/blackjack/game/state.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 14 | struct Round<'r> { [INFO] [stderr] | ----- field in this struct [INFO] [stderr] 15 | players: Vec<&'r Player>, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `dealer`, `shoe`, `status`, and `round` are never read [INFO] [stderr] --> src/blackjack/game/state.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 18 | pub struct State<'r> { [INFO] [stderr] | ----- fields in this struct [INFO] [stderr] 19 | players: Vec>>, [INFO] [stderr] 20 | dealer: Player, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 21 | shoe: Shoe, [INFO] [stderr] | ^^^^ [INFO] [stderr] 22 | status: Status, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 23 | round: Option>, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `shoe_mut` and `remove_player_by_id` are never used [INFO] [stderr] --> src/blackjack/game/state.rs:43:12 [INFO] [stderr] | [INFO] [stderr] 38 | impl<'r> State<'r> { [INFO] [stderr] | ------------------ methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 43 | pub fn shoe_mut(&mut self) -> &mut Shoe { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 51 | pub fn remove_player_by_id( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `has_ace` and `is_busted` are never used [INFO] [stderr] --> src/blackjack/hand_value.rs:101:8 [INFO] [stderr] | [INFO] [stderr] 18 | pub trait WithHandValue { [INFO] [stderr] | ------------- methods in this trait [INFO] [stderr] ... [INFO] [stderr] 101 | fn has_ace(&self) -> bool { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 109 | fn is_busted(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `player_type` is never read [INFO] [stderr] --> src/blackjack/player.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 16 | pub struct Player { [INFO] [stderr] | ------ field in this struct [INFO] [stderr] ... [INFO] [stderr] 22 | player_type: PlayerType, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `get_player_type` is never used [INFO] [stderr] --> src/blackjack/player.rs:75:12 [INFO] [stderr] | [INFO] [stderr] 25 | impl Player { [INFO] [stderr] | ----------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 75 | pub fn get_player_type(&self) -> &PlayerType { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `PlayerView` is never constructed [INFO] [stderr] --> src/blackjack/ui/views/player_view.rs:6:12 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct PlayerView { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `set_wager`, `get_wager`, and `add_wager` are never used [INFO] [stderr] --> src/blackjack/wager.rs:12:12 [INFO] [stderr] | [INFO] [stderr] 5 | impl Wager { [INFO] [stderr] | ---------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 12 | pub fn set_wager(&mut self, wager: u32) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 16 | pub fn get_wager(&self) -> u32 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 24 | pub fn add_wager(&mut self, wager: u32) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait `WithWager` is never used [INFO] [stderr] --> src/blackjack/wager.rs:29:11 [INFO] [stderr] | [INFO] [stderr] 29 | pub trait WithWager { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new_with_name` is never used [INFO] [stderr] --> src/cards/player.rs:19:12 [INFO] [stderr] | [INFO] [stderr] 14 | impl Player { [INFO] [stderr] | ----------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 19 | pub fn new_with_name(name: String) -> Player { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait `NamedPlayer` is never used [INFO] [stderr] --> src/cards/player.rs:34:11 [INFO] [stderr] | [INFO] [stderr] 34 | pub trait NamedPlayer { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `get_cards_in_play` and `get_percent_undealt_cards` are never used [INFO] [stderr] --> src/cards/shoe.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 30 | impl Shoe { [INFO] [stderr] | --------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 69 | pub fn get_cards_in_play(&mut self) -> Option<&[Arc]> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 77 | pub fn get_percent_undealt_cards(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/blackjack/basic_game.rs:9:17 [INFO] [stderr] | [INFO] [stderr] 9 | #[derive(Debug, Fail)] [INFO] [stderr] | ^--- [INFO] [stderr] | | [INFO] [stderr] | `Fail` is not local [INFO] [stderr] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_DealingError` [INFO] [stderr] 10 | pub enum DealingError { [INFO] [stderr] | ------------ `DealingError` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = 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] [stderr] = 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] [stderr] = 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] [stderr] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stderr] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/blackjack/basic_game.rs:9:17 [INFO] [stderr] | [INFO] [stderr] 9 | #[derive(Debug, Fail)] [INFO] [stderr] | ^--- [INFO] [stderr] | | [INFO] [stderr] | `Display` is not local [INFO] [stderr] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_DealingError` [INFO] [stderr] 10 | pub enum DealingError { [INFO] [stderr] | ------------ `DealingError` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = 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] [stderr] = 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] [stderr] = 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] [stderr] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused return value of `Option::::is_some` that must be used [INFO] [stderr] --> src/blackjack/basic_game.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | game.get_players().iter().find(|p| p.get_id() == expected_id).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you intended to assert that this has a value, consider `.unwrap()` instead [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 130 | let _ = game.get_players().iter().find(|p| p.get_id() == expected_id).is_some(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/blackjack/hand_value.rs:95:22 [INFO] [stderr] | [INFO] [stderr] 95 | unreachable!(format!( [INFO] [stderr] | ______________________^ [INFO] [stderr] 96 | | "Failed to get value from cards 0 >= n >= 3 {:?}", [INFO] [stderr] 97 | | values [INFO] [stderr] 98 | | )); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `unreachable!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: the `unreachable!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stderr] = note: `#[warn(non_fmt_panics)]` on by default [INFO] [stderr] help: remove the `format!(..)` macro call [INFO] [stderr] | [INFO] [stderr] 95 ~ unreachable!( [INFO] [stderr] 96 | "Failed to get value from cards 0 >= n >= 3 {:?}", [INFO] [stderr] 97 | values [INFO] [stderr] 98 ~ ); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/blackjack/player.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | self.bankroll.add_funds(funds); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 80 | let _ = self.bankroll.add_funds(funds); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: `rust` (bin "rust" test) generated 60 warnings (run `cargo fix --bin "rust" --tests` to apply 23 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.14s [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 2` [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rust-bb83aa3fa04895f2) [INFO] [stdout] [INFO] [stdout] running 34 tests [INFO] [stdout] test blackjack::basic_game::tests::it_adds_player ... ok [INFO] [stdout] test blackjack::basic_game::tests::it_does_not_deal_with_no_decks ... ok [INFO] [stdout] test blackjack::basic_game::tests::it_deals_cards ... ok [INFO] [stdout] test blackjack::blackjack_hand::tests::can_double_down ... ok [INFO] [stdout] test blackjack::blackjack_hand::tests::can_hit_dealer ... ok [INFO] [stdout] test blackjack::blackjack_hand::tests::it_can_split ... ok [INFO] [stdout] test blackjack::blackjack_hand::tests::it_does_split ... ok [INFO] [stdout] test blackjack::game::lifecycle::tests::does_get_next_phase ... ok [INFO] [stdout] test blackjack::hand_value::tests::test_card_values_ace_single ... ok [INFO] [stdout] test blackjack::hand_value::tests::test_card_values_single_ace ... ok [INFO] [stdout] test blackjack::hand_value::tests::test_card_values_single_single ... ok [INFO] [stdout] test blackjack::hand_value::tests::test_empty_is_none ... ok [INFO] [stdout] test blackjack::hand_value::tests::test_hand_value_ace_tuple_low_first_high_second ... ok [INFO] [stdout] test blackjack::hand_value::tests::test_reduces_bust_with_ace_to_single_card ... ok [INFO] [stdout] test blackjack::player::tests::it_does_push_cards_to_curr_hand ... ok [INFO] [stdout] test cards::bankroll::tests::should_set_player_bankroll ... ok [INFO] [stdout] test cards::bankroll::tests::should_sub_player_bankroll ... ok [INFO] [stdout] test cards::hand::tests::it_does_reset ... ok [INFO] [stdout] test cards::player::tests::should_set_player_name ... ok [INFO] [stdout] test cards::shoe::tests::can_add_multiple_decks_to_shoe ... ok [INFO] [stdout] test cards::bankroll::tests::should_not_sub_insufficent_funds ... ok [INFO] [stdout] test cards::shoe::tests::can_take_card ... ok [INFO] [stdout] test cards::shoe::tests::create_shoe ... ok [INFO] [stdout] test cards::bankroll::tests::should_add_player_bankroll ... ok [INFO] [stdout] test cards::shoe::tests::does_shuffle_cards ... ok [INFO] [stdout] test cards::shoe::tests::should_get_cards_in_play ... ok [INFO] [stdout] test cards::shoe::tests::shoe_with_decks ... ok [INFO] [stdout] test blackjack::game::lifecycle::tests::does_start_with_initial_phase ... ok [INFO] [stdout] test cards::shoe::tests::should_start_round_at_current_index ... ok [INFO] [stdout] test blackjack::hand_value::tests::test_can_bust ... ok [INFO] [stdout] test cards::shoe::tests::can_start_round ... ok [INFO] [stdout] test blackjack::hand_value::tests::test_card_values_ace_ace ... ok [INFO] [stdout] test cards::shoe::tests::add_deck_to_shoe ... ok [INFO] [stdout] test blackjack::blackjack_hand::tests::can_hit_player ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "37a267ba411f639743ea04364d40178bd95fcb01414a872143dd02da7a178ee1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "37a267ba411f639743ea04364d40178bd95fcb01414a872143dd02da7a178ee1", kill_on_drop: false }` [INFO] [stdout] 37a267ba411f639743ea04364d40178bd95fcb01414a872143dd02da7a178ee1