[INFO] cloning repository https://github.com/LordKing-vv/texas_holdem
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/LordKing-vv/texas_holdem" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLordKing-vv%2Ftexas_holdem", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLordKing-vv%2Ftexas_holdem'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8edb91bc17c6e5dcbb9cea004e7c8f7ad79b3eb6
[INFO] checking LordKing-vv/texas_holdem against try#f77b5bc6c7c84df104f86b0dd01d9490e3923fa8 for pr-147834
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLordKing-vv%2Ftexas_holdem" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/LordKing-vv/texas_holdem
[INFO] finished tweaking git repo https://github.com/LordKing-vv/texas_holdem
[INFO] tweaked toml for git repo https://github.com/LordKing-vv/texas_holdem written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/LordKing-vv/texas_holdem on toolchain f77b5bc6c7c84df104f86b0dd01d9490e3923fa8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/LordKing-vv/texas_holdem 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" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "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]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tokio-tungstenite v0.28.0
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.3
[INFO] [stderr]   Downloaded utf8_slice v1.0.0
[INFO] [stderr]   Downloaded tungstenite v0.28.0
[INFO] [stderr]   Downloaded strip-ansi-escapes v0.2.1
[INFO] [stderr]   Downloaded cc v1.2.40
[INFO] [stderr]   Downloaded vte v0.14.1
[INFO] [stderr]   Downloaded crossterm v0.29.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 026f4031d40040c6de3f1539857b411889c2ce3701e735cb1569954fdeef37bf
[INFO] running `Command { std: "docker" "start" "-a" "026f4031d40040c6de3f1539857b411889c2ce3701e735cb1569954fdeef37bf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "026f4031d40040c6de3f1539857b411889c2ce3701e735cb1569954fdeef37bf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "026f4031d40040c6de3f1539857b411889c2ce3701e735cb1569954fdeef37bf", kill_on_drop: false }`
[INFO] [stdout] 026f4031d40040c6de3f1539857b411889c2ce3701e735cb1569954fdeef37bf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] bfb90a9765252336a096e81f745f759ed61be592ba7ec4ffa38f9a244c7ddb8a
[INFO] running `Command { std: "docker" "start" "-a" "bfb90a9765252336a096e81f745f759ed61be592ba7ec4ffa38f9a244c7ddb8a", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling convert_case v0.7.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling litrs v0.4.2
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]     Checking utf-8 v0.7.6
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking vte v0.14.1
[INFO] [stderr]     Checking unicode-width v0.2.1
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]     Checking colored v3.0.0
[INFO] [stderr]     Checking utf8_slice v1.0.0
[INFO] [stderr]     Checking strum v0.27.2
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]     Checking strip-ansi-escapes v0.2.1
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking tungstenite v0.28.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking tokio-tungstenite v0.28.0
[INFO] [stderr]     Checking texas_holdem v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `result`
[INFO] [stdout]   --> src/texas_poker/mod.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::{fmt, result, usize};
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Display`, `Formatter`, and `format`
[INFO] [stdout]   --> src/texas_poker/mod.rs:13:16
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::fmt::{format, Display, Formatter};
[INFO] [stdout]    |                ^^^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::num::ParseIntError`
[INFO] [stdout]   --> src/texas_poker/mod.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::num::ParseIntError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::texas_poker::GameState::Waiting`
[INFO] [stdout]   --> src/texas_poker/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::texas_poker::GameState::Waiting;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/texas_poker/mod.rs:472:24
[INFO] [stdout]     |
[INFO] [stdout] 472 |         let interval = (now - self.thinking_start_time);
[INFO] [stdout]     |                        ^                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 472 -         let interval = (now - self.thinking_start_time);
[INFO] [stdout] 472 +         let interval = now - self.thinking_start_time ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/texas_poker/mod.rs:1067:46
[INFO] [stdout]      |
[INFO] [stdout] 1067 | ...                   anonymious = (usr_id != p.id);
[INFO] [stdout]      |                                    ^              ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1067 -                                 anonymious = (usr_id != p.id);
[INFO] [stdout] 1067 +                                 anonymious = usr_id != p.id ;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `result`
[INFO] [stdout]   --> src/texas_poker/mod.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::{fmt, result, usize};
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Display`, `Formatter`, and `format`
[INFO] [stdout]   --> src/texas_poker/mod.rs:13:16
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::fmt::{format, Display, Formatter};
[INFO] [stdout]    |                ^^^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::num::ParseIntError`
[INFO] [stdout]   --> src/texas_poker/mod.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::num::ParseIntError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::texas_poker::GameState::Waiting`
[INFO] [stdout]   --> src/texas_poker/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::texas_poker::GameState::Waiting;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/texas_poker/mod.rs:472:24
[INFO] [stdout]     |
[INFO] [stdout] 472 |         let interval = (now - self.thinking_start_time);
[INFO] [stdout]     |                        ^                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 472 -         let interval = (now - self.thinking_start_time);
[INFO] [stdout] 472 +         let interval = now - self.thinking_start_time ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/texas_poker/mod.rs:1067:46
[INFO] [stdout]      |
[INFO] [stdout] 1067 | ...                   anonymious = (usr_id != p.id);
[INFO] [stdout]      |                                    ^              ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1067 -                                 anonymious = (usr_id != p.id);
[INFO] [stdout] 1067 +                                 anonymious = usr_id != p.id ;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored`
[INFO] [stdout]   --> src/texas_poker/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use colored::*;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored`
[INFO] [stdout]   --> src/texas_poker/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use colored::*;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]    --> src/texas_poker/rank.rs:202:27
[INFO] [stdout]     |
[INFO] [stdout] 202 |                 .find(|&(&r, &count)| count == 1)
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]    --> src/texas_poker/rank.rs:202:27
[INFO] [stdout]     |
[INFO] [stdout] 202 |                 .find(|&(&r, &count)| count == 1)
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/texas_poker/mod.rs:433:22
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn join_room(name:String) {
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/texas_poker/mod.rs:437:23
[INFO] [stdout]     |
[INFO] [stdout] 437 |     pub fn creat_room(name:String) {
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/texas_poker/mod.rs:441:23
[INFO] [stdout]     |
[INFO] [stdout] 441 |     pub fn leave_room(name:String) {
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/texas_poker/mod.rs:433:22
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn join_room(name:String) {
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/texas_poker/mod.rs:437:23
[INFO] [stdout]     |
[INFO] [stdout] 437 |     pub fn creat_room(name:String) {
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/texas_poker/mod.rs:441:23
[INFO] [stdout]     |
[INFO] [stdout] 441 |     pub fn leave_room(name:String) {
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `mvp` is assigned to, but never used
[INFO] [stdout]    --> src/texas_poker/mod.rs:717:13
[INFO] [stdout]     |
[INFO] [stdout] 717 |         let mut mvp = 0;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_mvp` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `mvp` is never read
[INFO] [stdout]    --> src/texas_poker/mod.rs:738:17
[INFO] [stdout]     |
[INFO] [stdout] 738 |                 mvp = *idx;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `mvp` is assigned to, but never used
[INFO] [stdout]    --> src/texas_poker/mod.rs:717:13
[INFO] [stdout]     |
[INFO] [stdout] 717 |         let mut mvp = 0;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_mvp` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `mvp` is never read
[INFO] [stdout]    --> src/texas_poker/mod.rs:738:17
[INFO] [stdout]     |
[INFO] [stdout] 738 |                 mvp = *idx;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/texas_poker/mod.rs:1139:29
[INFO] [stdout]      |
[INFO] [stdout] 1139 |                         Err(e)=> {
[INFO] [stdout]      |                             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `room_id` and `oper` are never read
[INFO] [stdout]    --> src/texas_poker/mod.rs:399:5
[INFO] [stdout]     |
[INFO] [stdout] 396 | pub struct Player {
[INFO] [stdout]     |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 399 |     room_id: u64,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     oper: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, `first_player_idx`, and `winner_idx` are never read
[INFO] [stdout]    --> src/texas_poker/mod.rs:558:5
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct GameRoom {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 558 |     id: u64,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 559 |     name: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     first_player_idx: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 572 |     bets_base_line: u32,
[INFO] [stdout] 573 |     winner_idx: usize,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameInfo` is never constructed
[INFO] [stdout]    --> src/texas_poker/mod.rs:580:8
[INFO] [stdout]     |
[INFO] [stdout] 580 | struct GameInfo {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `THINK_DURATION` is never used
[INFO] [stdout]    --> src/texas_poker/mod.rs:587:11
[INFO] [stdout]     |
[INFO] [stdout] 585 | impl GameRoom {
[INFO] [stdout]     | ------------- associated constant in this implementation
[INFO] [stdout] 586 |
[INFO] [stdout] 587 |     const THINK_DURATION: i64 = 20;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `flush_lookup` and `unsuited_lookup` are never read
[INFO] [stdout]   --> src/texas_poker/rank.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct FastHandEvaluator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 53 |     prime_lookup: [u32; 53],
[INFO] [stdout] 54 |     flush_lookup: HashMap<u16, u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 55 |     unsuited_lookup: HashMap<u16, u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `height`, `width`, and `buf` are never read
[INFO] [stdout]  --> src/show.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct ConsoleShow {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 2 |     height: usize,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 3 |     width: usize,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 4 |     buf: Vec<String>,
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/texas_poker/mod.rs:1139:29
[INFO] [stdout]      |
[INFO] [stdout] 1139 |                         Err(e)=> {
[INFO] [stdout]      |                             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `room_id` and `oper` are never read
[INFO] [stdout]    --> src/texas_poker/mod.rs:399:5
[INFO] [stdout]     |
[INFO] [stdout] 396 | pub struct Player {
[INFO] [stdout]     |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 399 |     room_id: u64,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     oper: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, `first_player_idx`, and `winner_idx` are never read
[INFO] [stdout]    --> src/texas_poker/mod.rs:558:5
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct GameRoom {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 558 |     id: u64,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 559 |     name: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     first_player_idx: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 572 |     bets_base_line: u32,
[INFO] [stdout] 573 |     winner_idx: usize,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameInfo` is never constructed
[INFO] [stdout]    --> src/texas_poker/mod.rs:580:8
[INFO] [stdout]     |
[INFO] [stdout] 580 | struct GameInfo {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `THINK_DURATION` is never used
[INFO] [stdout]    --> src/texas_poker/mod.rs:587:11
[INFO] [stdout]     |
[INFO] [stdout] 585 | impl GameRoom {
[INFO] [stdout]     | ------------- associated constant in this implementation
[INFO] [stdout] 586 |
[INFO] [stdout] 587 |     const THINK_DURATION: i64 = 20;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `flush_lookup` and `unsuited_lookup` are never read
[INFO] [stdout]   --> src/texas_poker/rank.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct FastHandEvaluator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 53 |     prime_lookup: [u32; 53],
[INFO] [stdout] 54 |     flush_lookup: HashMap<u16, u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 55 |     unsuited_lookup: HashMap<u16, u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `height`, `width`, and `buf` are never read
[INFO] [stdout]  --> src/show.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct ConsoleShow {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 2 |     height: usize,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 3 |     width: usize,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 4 |     buf: Vec<String>,
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:452:17
[INFO] [stdout]     |
[INFO] [stdout] 452 |                 self.bets.give_coins(value);
[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] 452 |                 let _ = self.bets.give_coins(value);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::convert::From::from` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:664:13
[INFO] [stdout]     |
[INFO] [stdout] 664 |             Option::from(self.observer.remove(idx));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 664 |             let _ = Option::from(self.observer.remove(idx));
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `collect` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:748:9
[INFO] [stdout]     |
[INFO] [stdout] 748 |         self.winner_list.iter().map(|(name, hand)|{ println!("{:<30} {}", name, hand) }).collect::<Vec<()>>();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 748 |         let _ = self.winner_list.iter().map(|(name, hand)|{ println!("{:<30} {}", name, hand) }).collect::<Vec<()>>();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:790:17
[INFO] [stdout]     |
[INFO] [stdout] 790 |                 self.total_bets.give_coins(self.bets_base_line);
[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] 790 |                 let _ = self.total_bets.give_coins(self.bets_base_line);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:799:21
[INFO] [stdout]     |
[INFO] [stdout] 799 |                     self.players[winner].cions.give_coins(per_prise + if per_prise_mod != 0 { 1 } else { 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] 799 |                     let _ = self.players[winner].cions.give_coins(per_prise + if per_prise_mod != 0 { 1 } else { 0 } );
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:452:17
[INFO] [stdout]     |
[INFO] [stdout] 452 |                 self.bets.give_coins(value);
[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] 452 |                 let _ = self.bets.give_coins(value);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::convert::From::from` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:664:13
[INFO] [stdout]     |
[INFO] [stdout] 664 |             Option::from(self.observer.remove(idx));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 664 |             let _ = Option::from(self.observer.remove(idx));
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `collect` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:748:9
[INFO] [stdout]     |
[INFO] [stdout] 748 |         self.winner_list.iter().map(|(name, hand)|{ println!("{:<30} {}", name, hand) }).collect::<Vec<()>>();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 748 |         let _ = self.winner_list.iter().map(|(name, hand)|{ println!("{:<30} {}", name, hand) }).collect::<Vec<()>>();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:790:17
[INFO] [stdout]     |
[INFO] [stdout] 790 |                 self.total_bets.give_coins(self.bets_base_line);
[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] 790 |                 let _ = self.total_bets.give_coins(self.bets_base_line);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/texas_poker/mod.rs:799:21
[INFO] [stdout]     |
[INFO] [stdout] 799 |                     self.players[winner].cions.give_coins(per_prise + if per_prise_mod != 0 { 1 } else { 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] 799 |                     let _ = self.players[winner].cions.give_coins(per_prise + if per_prise_mod != 0 { 1 } else { 0 } );
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/bin/client.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{self, Read, Write};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/bin/client.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{self, Read, Write};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `broadcast`
[INFO] [stdout]  --> src/bin/server.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::sync::{broadcast, RwLock};
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client`
[INFO] [stdout]   --> src/bin/server.rs:10:38
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio_tungstenite::tungstenite::{client, Utf8Bytes};
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tungstenite`
[INFO] [stdout]   --> src/bin/server.rs:12:39
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio_tungstenite::{accept_async, tungstenite, WebSocketStream};
[INFO] [stdout]    |                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Player`
[INFO] [stdout]   --> src/bin/server.rs:13:43
[INFO] [stdout]    |
[INFO] [stdout] 13 | use texas_holdem::texas_poker::{GameRoom, Player};
[INFO] [stdout]    |                                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `broadcast`
[INFO] [stdout]  --> src/bin/server.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::sync::{broadcast, RwLock};
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client`
[INFO] [stdout]   --> src/bin/server.rs:10:38
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio_tungstenite::tungstenite::{client, Utf8Bytes};
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tungstenite`
[INFO] [stdout]   --> src/bin/server.rs:12:39
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio_tungstenite::{accept_async, tungstenite, WebSocketStream};
[INFO] [stdout]    |                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Player`
[INFO] [stdout]   --> src/bin/server.rs:13:43
[INFO] [stdout]    |
[INFO] [stdout] 13 | use texas_holdem::texas_poker::{GameRoom, Player};
[INFO] [stdout]    |                                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bin/client.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         for mut line in info {
[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/bin/client.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         for mut line in info {
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> src/bin/client.rs:170:54
[INFO] [stdout]     |
[INFO] [stdout] 170 | ...                   UsrMessage::ReturnCode { code, info } => {
[INFO] [stdout]     |                                                ^^^^ help: try ignoring the field: `code: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> src/bin/client.rs:170:54
[INFO] [stdout]     |
[INFO] [stdout] 170 | ...                   UsrMessage::ReturnCode { code, info } => {
[INFO] [stdout]     |                                                ^^^^ help: try ignoring the field: `code: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/bin/client.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |         term.move_cursor_to(0, 0);
[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] 146 |         let _ = term.move_cursor_to(0, 0);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/bin/client.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |         term.write(output.as_ref());
[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] 147 |         let _ = term.write(output.as_ref());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/bin/client.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             term.move_cursor_to(0, (last_line_num + 1) as usize);
[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] 151 |             let _ = term.move_cursor_to(0, (last_line_num + 1) as usize);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/bin/client.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |         term.move_cursor_to(0, 0);
[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] 146 |         let _ = term.move_cursor_to(0, 0);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/bin/client.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |         term.write(output.as_ref());
[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] 147 |         let _ = term.write(output.as_ref());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/bin/client.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             term.move_cursor_to(0, (last_line_num + 1) as usize);
[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] 151 |             let _ = term.move_cursor_to(0, (last_line_num + 1) as usize);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/bin/client.rs:155:9
[INFO] [stdout]     |
[INFO] [stdout] 155 |         term.flush();
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |         let _ = term.flush();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/bin/client.rs:155:9
[INFO] [stdout]     |
[INFO] [stdout] 155 |         term.flush();
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |         let _ = term.flush();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bin/server.rs:118:18
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let (mut ws_sender, mut ws_receiver) = ws_stream.split();
[INFO] [stdout]     |                  ----^^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `response`
[INFO] [stdout]    --> src/bin/server.rs:136:41
[INFO] [stdout]     |
[INFO] [stdout] 136 | ...                   let response = UsrMessage::Text(format!("已收到你的消息: {}", text));
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `counter` is assigned to, but never used
[INFO] [stdout]   --> src/bin/server.rs:39:13
[INFO] [stdout]    |
[INFO] [stdout] 39 |         let mut counter = 0;
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_counter` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `counter` is never read
[INFO] [stdout]   --> src/bin/server.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |             counter += 1;
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bin/server.rs:118:18
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let (mut ws_sender, mut ws_receiver) = ws_stream.split();
[INFO] [stdout]     |                  ----^^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `response`
[INFO] [stdout]    --> src/bin/server.rs:136:41
[INFO] [stdout]     |
[INFO] [stdout] 136 | ...                   let response = UsrMessage::Text(format!("已收到你的消息: {}", text));
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `counter` is assigned to, but never used
[INFO] [stdout]   --> src/bin/server.rs:39:13
[INFO] [stdout]    |
[INFO] [stdout] 39 |         let mut counter = 0;
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_counter` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `counter` is never read
[INFO] [stdout]   --> src/bin/server.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |             counter += 1;
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/server.rs:76:41
[INFO] [stdout]    |
[INFO] [stdout] 76 | ...                   client_tx.write().await.send(Message::Text(Utf8Bytes::from(json))).await;
[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] 76 |                                         let _ = client_tx.write().await.send(Message::Text(Utf8Bytes::from(json))).await;
[INFO] [stdout]    |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/server.rs:76:41
[INFO] [stdout]    |
[INFO] [stdout] 76 | ...                   client_tx.write().await.send(Message::Text(Utf8Bytes::from(json))).await;
[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] 76 |                                         let _ = client_tx.write().await.send(Message::Text(Utf8Bytes::from(json))).await;
[INFO] [stdout]    |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.64s
[INFO] running `Command { std: "docker" "inspect" "bfb90a9765252336a096e81f745f759ed61be592ba7ec4ffa38f9a244c7ddb8a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bfb90a9765252336a096e81f745f759ed61be592ba7ec4ffa38f9a244c7ddb8a", kill_on_drop: false }`
[INFO] [stdout] bfb90a9765252336a096e81f745f759ed61be592ba7ec4ffa38f9a244c7ddb8a
