[INFO] cloning repository https://github.com/ChooChooShoe/rust-cardgame
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ChooChooShoe/rust-cardgame" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChooChooShoe%2Frust-cardgame", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChooChooShoe%2Frust-cardgame'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e76a10bb18229163d96982021969892db0d97add
[INFO] checking ChooChooShoe/rust-cardgame against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChooChooShoe%2Frust-cardgame" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ChooChooShoe/rust-cardgame
[INFO] finished tweaking git repo https://github.com/ChooChooShoe/rust-cardgame
[INFO] tweaked toml for git repo https://github.com/ChooChooShoe/rust-cardgame written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ChooChooShoe/rust-cardgame on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ChooChooShoe/rust-cardgame 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fake-simd v0.1.2
[INFO] [stderr]   Downloaded sha-1 v0.8.2
[INFO] [stderr]   Downloaded generic-array v0.12.4
[INFO] [stderr]   Downloaded opaque-debug v0.2.3
[INFO] [stderr]   Downloaded byte-tools v0.3.1
[INFO] [stderr]   Downloaded ws v0.9.2
[INFO] [stderr]   Downloaded digest v0.8.1
[INFO] [stderr]   Downloaded net2 v0.2.38
[INFO] [stderr]   Downloaded serde_derive v1.0.157
[INFO] [stderr]   Downloaded unicode-bidi v0.3.12
[INFO] [stderr]   Downloaded block-padding v0.1.5
[INFO] [stderr]   Downloaded proc-macro2 v1.0.52
[INFO] [stderr]   Downloaded block-buffer v0.7.3
[INFO] [stderr]   Downloaded syn v2.0.0
[INFO] [stderr]   Downloaded serde v1.0.157
[INFO] [stderr]   Downloaded libc v0.2.140
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] cd456d2d38806471f52c179dbeebabd3d6ff425e2b0a153f9812612cff57953e
[INFO] running `Command { std: "docker" "start" "-a" "cd456d2d38806471f52c179dbeebabd3d6ff425e2b0a153f9812612cff57953e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cd456d2d38806471f52c179dbeebabd3d6ff425e2b0a153f9812612cff57953e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cd456d2d38806471f52c179dbeebabd3d6ff425e2b0a153f9812612cff57953e", kill_on_drop: false }`
[INFO] [stdout] cd456d2d38806471f52c179dbeebabd3d6ff425e2b0a153f9812612cff57953e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 162f3daca41c5dd24fd0638efb3301b0a316385b5e7c3b57be970eced3d3f3aa
[INFO] running `Command { std: "docker" "start" "-a" "162f3daca41c5dd24fd0638efb3301b0a316385b5e7c3b57be970eced3d3f3aa", kill_on_drop: false }`
[INFO] [stderr] warning: cardgame v0.1.0 (/opt/rustwide/workdir) ignoring invalid dependency `chat-commands` which is missing a lib target
[INFO] [stderr]    Compiling libc v0.2.140
[INFO] [stderr]    Compiling serde v1.0.157
[INFO] [stderr]    Compiling typenum v1.16.0
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]    Compiling log v0.4.17
[INFO] [stderr]     Checking tinyvec_macros v0.1.1
[INFO] [stderr]    Compiling proc-macro2 v1.0.52
[INFO] [stderr]    Compiling quote v1.0.26
[INFO] [stderr]     Checking byteorder v1.4.3
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]     Checking byte-tools v0.3.1
[INFO] [stderr]     Checking percent-encoding v2.2.0
[INFO] [stderr]    Compiling slab v0.4.8
[INFO] [stderr]    Compiling httparse v1.8.0
[INFO] [stderr]     Checking unicode-bidi v0.3.12
[INFO] [stderr]     Checking lazycell v1.3.0
[INFO] [stderr]    Compiling serde_derive v1.0.157
[INFO] [stderr]     Checking tinyvec v1.6.0
[INFO] [stderr]     Checking block-padding v0.1.5
[INFO] [stderr]     Checking form_urlencoded v1.1.0
[INFO] [stderr]     Checking opaque-debug v0.2.3
[INFO] [stderr]     Checking fake-simd v0.1.2
[INFO] [stderr]    Compiling serde_json v1.0.94
[INFO] [stderr]     Checking ryu v1.0.13
[INFO] [stderr]     Checking itoa v1.0.6
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]     Checking net2 v0.2.38
[INFO] [stderr]     Checking unicode-normalization v0.1.22
[INFO] [stderr]     Checking getrandom v0.2.8
[INFO] [stderr]     Checking bytes v0.4.12
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]    Compiling syn v2.0.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking generic-array v0.12.4
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking idna v0.3.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking digest v0.8.1
[INFO] [stderr]     Checking block-buffer v0.7.3
[INFO] [stderr]     Checking sha-1 v0.8.2
[INFO] [stderr]     Checking url v2.3.1
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking mio v0.6.23
[INFO] [stderr]     Checking mio-extras v2.0.6
[INFO] [stderr]     Checking ws v0.9.2
[INFO] [stderr]     Checking cardgame v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/script.rs:36:32
[INFO] [stdout]    |
[INFO] [stdout] 36 |     fn box_clone(&self) -> Box<GameScript>;
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 36 |     fn box_clone(&self) -> Box<dyn GameScript>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/action_result.rs:80:32
[INFO] [stdout]    |
[INFO] [stdout] 80 |     fn cause(&self) -> Option<&StdError> {
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 80 |     fn cause(&self) -> Option<&dyn StdError> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/script.rs:49:32
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn box_clone(&self) -> Box<GameScript> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn box_clone(&self) -> Box<dyn GameScript> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/script.rs:57:32
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn box_clone(&self) -> Box<GameScript> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn box_clone(&self) -> Box<dyn GameScript> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/script.rs:68:32
[INFO] [stdout]    |
[INFO] [stdout] 68 |     fn box_clone(&self) -> Box<GameScript> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 68 |     fn box_clone(&self) -> Box<dyn GameScript> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/net/connection.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn cause(&self) -> Option<&StdError> {
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn cause(&self) -> Option<&dyn StdError> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/game/zones.rs:145:55
[INFO] [stdout]     |
[INFO] [stdout] 145 |     pub fn get_mut(&mut self, zone: ZoneName) -> &mut Zone<CardKey> {
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 145 |     pub fn get_mut(&mut self, zone: ZoneName) -> &mut dyn Zone<CardKey> {
[INFO] [stdout]     |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/game/zones.rs:155:43
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub fn get(&self, zone: ZoneName) -> &Zone<CardKey> {
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub fn get(&self, zone: ZoneName) -> &dyn Zone<CardKey> {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/script.rs:36:32
[INFO] [stdout]    |
[INFO] [stdout] 36 |     fn box_clone(&self) -> Box<GameScript>;
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 36 |     fn box_clone(&self) -> Box<dyn GameScript>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::cause`: replaced by Error::source, which can support downcasting
[INFO] [stdout]   --> src/game/action_result.rs:60:35
[INFO] [stdout]    |
[INFO] [stdout] 60 |         if let Some(cause) = self.cause() {
[INFO] [stdout]    |                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/game/action_result.rs:61:38
[INFO] [stdout]    |
[INFO] [stdout] 61 |             write!(f, "{}: {}", self.description(), cause.description())
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/game/action_result.rs:61:59
[INFO] [stdout]    |
[INFO] [stdout] 61 |             write!(f, "{}: {}", self.description(), cause.description())
[INFO] [stdout]    |                                                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/game/action_result.rs:63:34
[INFO] [stdout]    |
[INFO] [stdout] 63 |             write!(f, "{}", self.description())
[INFO] [stdout]    |                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/action_result.rs:80:32
[INFO] [stdout]    |
[INFO] [stdout] 80 |     fn cause(&self) -> Option<&StdError> {
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 80 |     fn cause(&self) -> Option<&dyn StdError> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/script.rs:49:32
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn box_clone(&self) -> Box<GameScript> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn box_clone(&self) -> Box<dyn GameScript> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/script.rs:57:32
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn box_clone(&self) -> Box<GameScript> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn box_clone(&self) -> Box<dyn GameScript> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/game/script.rs:68:32
[INFO] [stdout]    |
[INFO] [stdout] 68 |     fn box_clone(&self) -> Box<GameScript> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 68 |     fn box_clone(&self) -> Box<dyn GameScript> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/net/connection.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn cause(&self) -> Option<&StdError> {
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn cause(&self) -> Option<&dyn StdError> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/game/zones.rs:145:55
[INFO] [stdout]     |
[INFO] [stdout] 145 |     pub fn get_mut(&mut self, zone: ZoneName) -> &mut Zone<CardKey> {
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 145 |     pub fn get_mut(&mut self, zone: ZoneName) -> &mut dyn Zone<CardKey> {
[INFO] [stdout]     |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/game/zones.rs:155:43
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub fn get(&self, zone: ZoneName) -> &Zone<CardKey> {
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub fn get(&self, zone: ZoneName) -> &dyn Zone<CardKey> {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::cause`: replaced by Error::source, which can support downcasting
[INFO] [stdout]   --> src/net/connection.rs:22:35
[INFO] [stdout]    |
[INFO] [stdout] 22 |         if let Some(cause) = self.cause() {
[INFO] [stdout]    |                                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/net/connection.rs:23:38
[INFO] [stdout]    |
[INFO] [stdout] 23 |             write!(f, "{}: {}", self.description(), cause.description())
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/net/connection.rs:23:59
[INFO] [stdout]    |
[INFO] [stdout] 23 |             write!(f, "{}: {}", self.description(), cause.description())
[INFO] [stdout]    |                                                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/net/connection.rs:25:34
[INFO] [stdout]    |
[INFO] [stdout] 25 |             write!(f, "{}", self.description())
[INFO] [stdout]    |                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:105:15
[INFO] [stdout]     |
[INFO] [stdout] 105 |             e.description()
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> src/entity/card.rs:45:22
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn from_pool(key: CardKey, data: &PooledCardData) -> Card {
[INFO] [stdout]    |                      ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::cause`: replaced by Error::source, which can support downcasting
[INFO] [stdout]   --> src/game/action_result.rs:60:35
[INFO] [stdout]    |
[INFO] [stdout] 60 |         if let Some(cause) = self.cause() {
[INFO] [stdout]    |                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/game/action_result.rs:61:38
[INFO] [stdout]    |
[INFO] [stdout] 61 |             write!(f, "{}: {}", self.description(), cause.description())
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/game/action_result.rs:61:59
[INFO] [stdout]    |
[INFO] [stdout] 61 |             write!(f, "{}: {}", self.description(), cause.description())
[INFO] [stdout]    |                                                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/game/action_result.rs:63:34
[INFO] [stdout]    |
[INFO] [stdout] 63 |             write!(f, "{}", self.description())
[INFO] [stdout]    |                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_id`
[INFO] [stdout]    --> src/game/game_state.rs:119:36
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub fn queue_action(&mut self, player_id: PlayerId, action: Action) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `action`
[INFO] [stdout]    --> src/game/game_state.rs:119:57
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub fn queue_action(&mut self, player_id: PlayerId, action: Action) {
[INFO] [stdout]     |                                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/game_state.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut rng = thread_rng();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/game_state.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |             let mut deck = p.zones.deck.as_mut_slice();
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/game/game_state.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut rng = thread_rng();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deck`
[INFO] [stdout]    --> src/game/game_state.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |             let mut deck = p.zones.deck.as_mut_slice();
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deck`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/game/action.rs:19:25
[INFO] [stdout]    |
[INFO] [stdout] 19 |             Actor::Card(id) => panic!(),
[INFO] [stdout]    |                         ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game`
[INFO] [stdout]   --> src/game/action.rs:94:29
[INFO] [stdout]    |
[INFO] [stdout] 94 |     fn common_perform(self, game: &mut Game, sender: &Actor) -> Result {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_game`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pid`
[INFO] [stdout]    --> src/game/action.rs:117:34
[INFO] [stdout]     |
[INFO] [stdout] 117 |             Action::DrawCardAnon(pid, amount) => {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_pid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amount`
[INFO] [stdout]    --> src/game/action.rs:117:39
[INFO] [stdout]     |
[INFO] [stdout] 117 |             Action::DrawCardAnon(pid, amount) => {
[INFO] [stdout]     |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_amount`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::cause`: replaced by Error::source, which can support downcasting
[INFO] [stdout]   --> src/net/connection.rs:22:35
[INFO] [stdout]    |
[INFO] [stdout] 22 |         if let Some(cause) = self.cause() {
[INFO] [stdout]    |                                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/net/connection.rs:23:38
[INFO] [stdout]    |
[INFO] [stdout] 23 |             write!(f, "{}: {}", self.description(), cause.description())
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/net/connection.rs:23:59
[INFO] [stdout]    |
[INFO] [stdout] 23 |             write!(f, "{}: {}", self.description(), cause.description())
[INFO] [stdout]    |                                                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/net/connection.rs:25:34
[INFO] [stdout]    |
[INFO] [stdout] 25 |             write!(f, "{}", self.description())
[INFO] [stdout]    |                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]   --> src/game/player.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let zone = self.zones.get_mut(ZoneName::Deck);
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/player.rs:63:22
[INFO] [stdout]    |
[INFO] [stdout] 63 |                 Some(mut card) => {
[INFO] [stdout]    |                      ----^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `actor`
[INFO] [stdout]    --> src/game/stage.rs:140:35
[INFO] [stdout]     |
[INFO] [stdout] 140 |     fn validate_action(&mut self, actor: &mut Actor, action: &mut Action) -> Result<(), ()> {
[INFO] [stdout]     |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_actor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `action`
[INFO] [stdout]    --> src/game/stage.rs:140:54
[INFO] [stdout]     |
[INFO] [stdout] 140 |     fn validate_action(&mut self, actor: &mut Actor, action: &mut Action) -> Result<(), ()> {
[INFO] [stdout]     |                                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:105:15
[INFO] [stdout]     |
[INFO] [stdout] 105 |             e.description()
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> src/entity/card.rs:45:22
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn from_pool(key: CardKey, data: &PooledCardData) -> Card {
[INFO] [stdout]    |                      ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]   --> src/utils/input.rs:28:30
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn handle_user_input(sender: usize, game: &mut Game, args: Vec<&str>) -> bool {
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut max_players = 2;
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_id`
[INFO] [stdout]    --> src/game/game_state.rs:119:36
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub fn queue_action(&mut self, player_id: PlayerId, action: Action) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `action`
[INFO] [stdout]    --> src/game/game_state.rs:119:57
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub fn queue_action(&mut self, player_id: PlayerId, action: Action) {
[INFO] [stdout]     |                                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/game_state.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut rng = thread_rng();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/game_state.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |             let mut deck = p.zones.deck.as_mut_slice();
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/game/game_state.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut rng = thread_rng();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deck`
[INFO] [stdout]    --> src/game/game_state.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |             let mut deck = p.zones.deck.as_mut_slice();
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deck`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/game/action.rs:19:25
[INFO] [stdout]    |
[INFO] [stdout] 19 |             Actor::Card(id) => panic!(),
[INFO] [stdout]    |                         ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/game/stage.rs:243:21
[INFO] [stdout]     |
[INFO] [stdout] 243 |                     game.send_all_action(&Action::GameStart());
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 243 |                     let _ = game.send_all_action(&Action::GameStart());
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/game/stage.rs:251:21
[INFO] [stdout]     |
[INFO] [stdout] 251 |                     game.send_all_action(&Action::BeginGameSetup());
[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] 251 |                     let _ = game.send_all_action(&Action::BeginGameSetup());
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> src/utils/input.rs:34:21
[INFO] [stdout]    |
[INFO] [stdout] 34 |                     game.send_action(0, &Action::DrawCardAnon(2, 3));
[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] 34 |                     let _ = game.send_action(0, &Action::DrawCardAnon(2, 3));
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> src/utils/input.rs:38:21
[INFO] [stdout]    |
[INFO] [stdout] 38 |                     game.send_action(0, &Action::EndTurn(0));
[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] 38 |                     let _ = game.send_action(0, &Action::EndTurn(0));
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game`
[INFO] [stdout]   --> src/game/action.rs:94:29
[INFO] [stdout]    |
[INFO] [stdout] 94 |     fn common_perform(self, game: &mut Game, sender: &Actor) -> Result {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_game`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pid`
[INFO] [stdout]    --> src/game/action.rs:117:34
[INFO] [stdout]     |
[INFO] [stdout] 117 |             Action::DrawCardAnon(pid, amount) => {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_pid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amount`
[INFO] [stdout]    --> src/game/action.rs:117:39
[INFO] [stdout]     |
[INFO] [stdout] 117 |             Action::DrawCardAnon(pid, amount) => {
[INFO] [stdout]     |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_amount`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]   --> src/game/player.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let zone = self.zones.get_mut(ZoneName::Deck);
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/player.rs:63:22
[INFO] [stdout]    |
[INFO] [stdout] 63 |                 Some(mut card) => {
[INFO] [stdout]    |                      ----^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `actor`
[INFO] [stdout]    --> src/game/stage.rs:140:35
[INFO] [stdout]     |
[INFO] [stdout] 140 |     fn validate_action(&mut self, actor: &mut Actor, action: &mut Action) -> Result<(), ()> {
[INFO] [stdout]     |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_actor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `action`
[INFO] [stdout]    --> src/game/stage.rs:140:54
[INFO] [stdout]     |
[INFO] [stdout] 140 |     fn validate_action(&mut self, actor: &mut Actor, action: &mut Action) -> Result<(), ()> {
[INFO] [stdout]     |                                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]   --> src/utils/input.rs:28:30
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn handle_user_input(sender: usize, game: &mut Game, args: Vec<&str>) -> bool {
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut max_players = 2;
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/game/stage.rs:243:21
[INFO] [stdout]     |
[INFO] [stdout] 243 |                     game.send_all_action(&Action::GameStart());
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 243 |                     let _ = game.send_all_action(&Action::GameStart());
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/game/stage.rs:251:21
[INFO] [stdout]     |
[INFO] [stdout] 251 |                     game.send_all_action(&Action::BeginGameSetup());
[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] 251 |                     let _ = game.send_all_action(&Action::BeginGameSetup());
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> src/utils/input.rs:34:21
[INFO] [stdout]    |
[INFO] [stdout] 34 |                     game.send_action(0, &Action::DrawCardAnon(2, 3));
[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] 34 |                     let _ = game.send_action(0, &Action::DrawCardAnon(2, 3));
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> src/utils/input.rs:38:21
[INFO] [stdout]    |
[INFO] [stdout] 38 |                     game.send_action(0, &Action::EndTurn(0));
[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] 38 |                     let _ = game.send_action(0, &Action::EndTurn(0));
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.57s
[INFO] running `Command { std: "docker" "inspect" "162f3daca41c5dd24fd0638efb3301b0a316385b5e7c3b57be970eced3d3f3aa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "162f3daca41c5dd24fd0638efb3301b0a316385b5e7c3b57be970eced3d3f3aa", kill_on_drop: false }`
[INFO] [stdout] 162f3daca41c5dd24fd0638efb3301b0a316385b5e7c3b57be970eced3d3f3aa
