[INFO] cloning repository https://github.com/kyle-mccarthy/blackjack-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kyle-mccarthy/blackjack-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyle-mccarthy%2Fblackjack-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyle-mccarthy%2Fblackjack-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c0376d56fda5ff0e43686d79c43a78b9b4e564d0 [INFO] checking kyle-mccarthy/blackjack-rs against master#4e1f5d90bca45207605a88e39b1f76abcdb85d2f for pr-123962 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyle-mccarthy%2Fblackjack-rs" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/kyle-mccarthy/blackjack-rs on toolchain 4e1f5d90bca45207605a88e39b1f76abcdb85d2f [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4e1f5d90bca45207605a88e39b1f76abcdb85d2f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [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-6-tc1/source/Cargo.toml [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" "+4e1f5d90bca45207605a88e39b1f76abcdb85d2f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [ERROR] this task or one of its parent failed! [ERROR] no output for 300 seconds [ERROR] note: run with `RUST_BACKTRACE=1` to display a backtrace. [INFO] checking kyle-mccarthy/blackjack-rs against try#035f40fb95ac1c79b50f07e65650460f3d11e207 for pr-123962 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyle-mccarthy%2Fblackjack-rs" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/kyle-mccarthy/blackjack-rs on toolchain 035f40fb95ac1c79b50f07e65650460f3d11e207 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+035f40fb95ac1c79b50f07e65650460f3d11e207" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [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-6-tc2/source/Cargo.toml [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" "+035f40fb95ac1c79b50f07e65650460f3d11e207" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Updating git repository `https://github.com/gyscos/Cursive` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded quote v0.6.11 [INFO] [stderr] Downloaded unicode-width v0.1.5 [INFO] [stderr] Downloaded rand_jitter v0.1.3 [INFO] [stderr] Downloaded array-macro v1.0.3 [INFO] [stderr] Downloaded enum-map-internals v0.1.2 [INFO] [stderr] Downloaded stable_deref_trait v1.1.1 [INFO] [stderr] Downloaded enum-map v0.5.0 [INFO] [stderr] Downloaded failure_derive v0.1.5 [INFO] [stderr] Downloaded ctrlc v3.1.1 [INFO] [stderr] Downloaded redox_syscall v0.1.53 [INFO] [stderr] Downloaded pdcurses-sys v0.7.1 [INFO] [stderr] Downloaded syn v0.14.9 [INFO] [stderr] Downloaded byteorder v1.3.1 [INFO] [stderr] Downloaded maplit v1.0.1 [INFO] [stderr] Downloaded num-iter v0.1.37 [INFO] [stderr] Downloaded num-rational v0.2.1 [INFO] [stderr] Downloaded num v0.2.0 [INFO] [stderr] Downloaded owning_ref v0.4.0 [INFO] [stderr] Downloaded signal-hook v0.1.8 [INFO] [stderr] Downloaded term_size v0.3.1 [INFO] [stderr] Downloaded serde v1.0.90 [INFO] [stderr] Downloaded toml v0.4.10 [INFO] [stderr] Downloaded rustc-demangle v0.1.13 [INFO] [stderr] Downloaded failure v0.1.5 [INFO] [stderr] Downloaded ncurses v5.99.0 [INFO] [stderr] Downloaded cc v1.0.34 [INFO] [stderr] Downloaded winreg v0.5.1 [INFO] [stderr] Downloaded pancurses v0.16.1 [INFO] [stderr] Downloaded heck v0.3.1 [INFO] [stderr] Downloaded proc-macro2 v0.4.27 [INFO] [stderr] Downloaded libc v0.2.50 [INFO] [stderr] Downloaded syn v0.15.30 [INFO] [stderr] Downloaded nix v0.11.0 [INFO] [stderr] Downloaded enum-map-derive v0.4.1 [INFO] [stderr] Downloaded backtrace-sys v0.1.28 [INFO] [stderr] Downloaded enumset_derive v0.3.0 [INFO] [stderr] Downloaded enumset v0.3.17 [INFO] [stderr] Downloaded hashbrown v0.1.8 [INFO] [stderr] Downloaded num-complex v0.2.1 [INFO] [stderr] Downloaded xi-unicode v0.1.0 [INFO] [stderr] Downloaded backtrace v0.3.15 [INFO] [stderr] Downloaded arc-swap v0.3.9 [INFO] [stderr] Downloaded synstructure v0.10.1 [INFO] [stderr] Downloaded unicode-segmentation v1.2.1 [INFO] [stderr] Downloaded strum_macros v0.15.0 [INFO] [stderr] Downloaded rand_core v0.4.0 [INFO] [stderr] Downloaded uuid v0.7.4 [INFO] [stderr] Downloaded strum v0.15.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:99613afd962a8cfa530ec1899472a458bd015a1ab0af876cf7eb06f6006d81ea" "/opt/rustwide/cargo-home/bin/cargo" "+035f40fb95ac1c79b50f07e65650460f3d11e207" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 131e1db3021e364c134ab9de08bef1573d9260280f3fe042a98d818121e4ef5b [INFO] running `Command { std: "docker" "start" "-a" "131e1db3021e364c134ab9de08bef1573d9260280f3fe042a98d818121e4ef5b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "131e1db3021e364c134ab9de08bef1573d9260280f3fe042a98d818121e4ef5b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "131e1db3021e364c134ab9de08bef1573d9260280f3fe042a98d818121e4ef5b", kill_on_drop: false }` [INFO] [stdout] 131e1db3021e364c134ab9de08bef1573d9260280f3fe042a98d818121e4ef5b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:99613afd962a8cfa530ec1899472a458bd015a1ab0af876cf7eb06f6006d81ea" "/opt/rustwide/cargo-home/bin/cargo" "+035f40fb95ac1c79b50f07e65650460f3d11e207" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] aa2e561dcb401b870f0c3a0cef73663ed3658e4a765dfa2fcd42fc4f5cb69bee [INFO] running `Command { std: "docker" "start" "-a" "aa2e561dcb401b870f0c3a0cef73663ed3658e4a765dfa2fcd42fc4f5cb69bee", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.50 [INFO] [stderr] Compiling proc-macro2 v0.4.27 [INFO] [stderr] Compiling unicode-xid v0.1.0 [INFO] [stderr] Checking rand_core v0.4.0 [INFO] [stderr] Compiling cc v1.0.34 [INFO] [stderr] Compiling syn v0.15.30 [INFO] [stderr] Compiling serde v1.0.90 [INFO] [stderr] Compiling num-iter v0.1.37 [INFO] [stderr] Compiling num-complex v0.2.1 [INFO] [stderr] Compiling num-rational v0.2.1 [INFO] [stderr] Compiling byteorder v1.3.1 [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 failure_derive v0.1.5 [INFO] [stderr] Checking array-macro v1.0.3 [INFO] [stderr] Checking rand_core v0.3.1 [INFO] [stderr] Compiling nix v0.11.0 [INFO] [stderr] Checking rand_xorshift v0.1.1 [INFO] [stderr] Checking rand_hc v0.1.0 [INFO] [stderr] Checking rand_isaac v0.1.1 [INFO] [stderr] Checking enum-map-internals v0.1.2 [INFO] [stderr] Checking rand_jitter v0.1.3 [INFO] [stderr] Checking stable_deref_trait v1.1.1 [INFO] [stderr] Checking rustc-demangle v0.1.13 [INFO] [stderr] Checking void v1.0.2 [INFO] [stderr] Checking arc-swap v0.3.9 [INFO] [stderr] Compiling unicode-segmentation v1.2.1 [INFO] [stderr] Checking owning_ref v0.4.0 [INFO] [stderr] Checking unicode-width v0.1.5 [INFO] [stderr] Checking xi-unicode v0.1.0 [INFO] [stderr] Checking maplit v1.0.1 [INFO] [stderr] Checking strum v0.15.0 [INFO] [stderr] Compiling quote v0.6.11 [INFO] [stderr] Compiling heck v0.3.1 [INFO] [stderr] Compiling backtrace-sys v0.1.28 [INFO] [stderr] Compiling ncurses v5.99.0 [INFO] [stderr] Checking num v0.2.0 [INFO] [stderr] Compiling syn v0.14.9 [INFO] [stderr] Checking hashbrown v0.1.8 [INFO] [stderr] Checking time v0.1.42 [INFO] [stderr] Checking rand_os v0.1.3 [INFO] [stderr] Checking term_size v0.3.1 [INFO] [stderr] Checking signal-hook v0.1.8 [INFO] [stderr] Checking chrono v0.4.6 [INFO] [stderr] Checking uuid v0.7.4 [INFO] [stderr] Checking pancurses v0.16.1 [INFO] [stderr] Compiling enum-map-derive v0.4.1 [INFO] [stderr] Compiling synstructure v0.10.1 [INFO] [stderr] Checking ctrlc v3.1.1 [INFO] [stderr] Checking enum-map v0.5.0 [INFO] [stderr] Compiling enumset_derive v0.3.0 [INFO] [stderr] Compiling strum_macros v0.15.0 [INFO] [stderr] Checking toml v0.4.10 [INFO] [stderr] Checking enumset v0.3.17 [INFO] [stderr] Checking failure v0.1.5 [INFO] [stderr] Checking cursive v0.11.1 (https://github.com/gyscos/Cursive#158bc65c) [INFO] [stderr] Checking rust v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `Error`, `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`, `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`, `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 imports: `Error`, `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`, `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`, `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] | ^ [INFO] [stdout] | [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: variants `TakingCardFromShoe` and `PushCardToPlayer` are never constructed [INFO] [stdout] --> src/blackjack/basic_game.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum DealingError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 11 | #[fail(display = "Failed to take card from shoe")] [INFO] [stdout] 12 | TakingCardFromShoe, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | #[fail(display = "Failed to push card to player's current hand")] [INFO] [stdout] 14 | PushCardToPlayer, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DealingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [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 `CardsDealt` and `HandPlayed` are never constructed [INFO] [stdout] --> src/blackjack/blackjack_hand.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum HandState { [INFO] [stdout] | --------- variants in this enum [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: field `player_type` is never read [INFO] [stdout] --> src/blackjack/blackjack_hand.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct BlackjackHand { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 26 | hand: Hand, [INFO] [stdout] 27 | player_type: PlayerType, [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] 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: multiple methods are never used [INFO] [stdout] --> src/blackjack/blackjack_hand.rs:146:8 [INFO] [stdout] | [INFO] [stdout] 145 | pub trait ResultState { [INFO] [stdout] | ----------- methods in this trait [INFO] [stdout] 146 | fn set_result_state(&mut self, state: ResultsState); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 147 | fn get_result_state(&self) -> &ResultsState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 148 | [INFO] [stdout] 149 | fn set_natural(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | fn set_busted(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | fn set_lost(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | fn set_won(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | fn set_pushed(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | fn did_win(&self) -> bool { [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: variants `V`, `Ace`, and `Bust` are never constructed [INFO] [stdout] --> src/blackjack/hand_value.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum HandValue { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 13 | V(u8), [INFO] [stdout] | ^ [INFO] [stdout] 14 | Ace(u8, u8), [INFO] [stdout] | ^^^ [INFO] [stdout] 15 | Bust(u8), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HandValue` 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 `get_cards`, `rank_value`, `get_value`, `derive_value`, `has_ace`, and `is_busted` are never used [INFO] [stdout] --> src/blackjack/hand_value.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait WithHandValue { [INFO] [stdout] | ------------- associated items in this trait [INFO] [stdout] 19 | fn get_cards(&self) -> &Vec>; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 20 | [INFO] [stdout] 21 | fn rank_value(rank: Rank) -> CardValue { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | fn get_value(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | fn derive_value(&self, mut values: Vec) -> HandValue { [INFO] [stdout] | ^^^^^^^^^^^^ [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: 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: field `player` is never read [INFO] [stdout] --> src/blackjack/ui/views/player_view.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct PlayerView { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 7 | player: Arc>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_wager`, `reset_wager`, and `add_wager` are never used [INFO] [stdout] --> src/blackjack/wager.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 5 | impl Wager { [INFO] [stdout] | ---------- methods in this implementation [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: methods `get_mut_wager`, `get_wager`, `set_wagered_value`, `get_wagered_value`, `reset_wagered_value`, and `add_wager_to_wagered_value` are never used [INFO] [stdout] --> src/blackjack/wager.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub trait WithWager { [INFO] [stdout] | --------- methods in this trait [INFO] [stdout] 30 | fn get_mut_wager(&mut self) -> &mut Wager; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 31 | fn get_wager(&self) -> &Wager; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 32 | [INFO] [stdout] 33 | fn set_wagered_value(&mut self, wager: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | fn get_wagered_value(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn reset_wagered_value(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | fn add_wager_to_wagered_value(&mut self, wager: u32) { [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: associated items `with_cards`, `add_card`, `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] 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: field `name` is never read [INFO] [stdout] --> src/cards/player.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub struct Player { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 3 | name: Option, [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, they should be avoided as they go against expectation [INFO] [stdout] --> src/blackjack/basic_game.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | #[derive(Debug, Fail)] [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: move this `impl` block outside the of the current constant `_DERIVE_failure_Fail_FOR_DealingError` [INFO] [stdout] = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [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: `#[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, they should be avoided as they go against expectation [INFO] [stdout] --> src/blackjack/basic_game.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | #[derive(Debug, Fail)] [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: move this `impl` block outside the of the current constant `_DERIVE_failure_core_fmt_Display_FOR_DealingError` [INFO] [stdout] = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [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: 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] [stdout] warning: 72 warnings emitted [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] | ^ [INFO] [stdout] | [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 `CardsDealt` and `HandPlayed` are never constructed [INFO] [stdout] --> src/blackjack/blackjack_hand.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum HandState { [INFO] [stdout] | --------- variants in this enum [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: method `get_state` is never used [INFO] [stdout] --> src/blackjack/blackjack_hand.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl BlackjackHand { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn get_state(&self) -> &HandState { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/blackjack/blackjack_hand.rs:146:8 [INFO] [stdout] | [INFO] [stdout] 145 | pub trait ResultState { [INFO] [stdout] | ----------- methods in this trait [INFO] [stdout] 146 | fn set_result_state(&mut self, state: ResultsState); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 147 | fn get_result_state(&self) -> &ResultsState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 148 | [INFO] [stdout] 149 | fn set_natural(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | fn set_busted(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | fn set_lost(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | fn set_won(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | fn set_pushed(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | fn did_win(&self) -> bool { [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: field `player` is never read [INFO] [stdout] --> src/blackjack/ui/views/player_view.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct PlayerView { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 7 | player: Arc>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_wager` and `add_wager` are never used [INFO] [stdout] --> src/blackjack/wager.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 5 | impl Wager { [INFO] [stdout] | ---------- methods in this implementation [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: methods `get_mut_wager`, `get_wager`, `set_wagered_value`, `get_wagered_value`, `reset_wagered_value`, and `add_wager_to_wagered_value` are never used [INFO] [stdout] --> src/blackjack/wager.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub trait WithWager { [INFO] [stdout] | --------- methods in this trait [INFO] [stdout] 30 | fn get_mut_wager(&mut self) -> &mut Wager; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 31 | fn get_wager(&self) -> &Wager; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 32 | [INFO] [stdout] 33 | fn set_wagered_value(&mut self, wager: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | fn get_wagered_value(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn reset_wagered_value(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | fn add_wager_to_wagered_value(&mut self, wager: u32) { [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, they should be avoided as they go against expectation [INFO] [stdout] --> src/blackjack/basic_game.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | #[derive(Debug, Fail)] [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: move this `impl` block outside the of the current constant `_DERIVE_failure_Fail_FOR_DealingError` [INFO] [stdout] = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [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: `#[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, they should be avoided as they go against expectation [INFO] [stdout] --> src/blackjack/basic_game.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | #[derive(Debug, Fail)] [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: move this `impl` block outside the of the current constant `_DERIVE_failure_core_fmt_Display_FOR_DealingError` [INFO] [stdout] = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [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: 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] [stdout] warning: 60 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.04s [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 1` [INFO] running `Command { std: "docker" "inspect" "aa2e561dcb401b870f0c3a0cef73663ed3658e4a765dfa2fcd42fc4f5cb69bee", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa2e561dcb401b870f0c3a0cef73663ed3658e4a765dfa2fcd42fc4f5cb69bee", kill_on_drop: false }` [INFO] [stdout] aa2e561dcb401b870f0c3a0cef73663ed3658e4a765dfa2fcd42fc4f5cb69bee