[INFO] cloning repository https://github.com/Cortantse/rust2048
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Cortantse/rust2048" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCortantse%2Frust2048", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCortantse%2Frust2048'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 16614543432f287a73bef68b10d9b176a3861137
[INFO] checking Cortantse/rust2048 against master#04ff05c9c0cfbca33115c5f1b8bb20a66a54b799 for pr-147834
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCortantse%2Frust2048" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Cortantse/rust2048
[INFO] finished tweaking git repo https://github.com/Cortantse/rust2048
[INFO] tweaked toml for git repo https://github.com/Cortantse/rust2048 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Cortantse/rust2048 on toolchain 04ff05c9c0cfbca33115c5f1b8bb20a66a54b799
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+04ff05c9c0cfbca33115c5f1b8bb20a66a54b799" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Cortantse/rust2048 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" "+04ff05c9c0cfbca33115c5f1b8bb20a66a54b799" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+04ff05c9c0cfbca33115c5f1b8bb20a66a54b799" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7e82b643d1d444e9d0cefabc14ef1fec617f31b0bf58e3d106598ab53ce7b59a
[INFO] running `Command { std: "docker" "start" "-a" "7e82b643d1d444e9d0cefabc14ef1fec617f31b0bf58e3d106598ab53ce7b59a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7e82b643d1d444e9d0cefabc14ef1fec617f31b0bf58e3d106598ab53ce7b59a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7e82b643d1d444e9d0cefabc14ef1fec617f31b0bf58e3d106598ab53ce7b59a", kill_on_drop: false }`
[INFO] [stdout] 7e82b643d1d444e9d0cefabc14ef1fec617f31b0bf58e3d106598ab53ce7b59a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+04ff05c9c0cfbca33115c5f1b8bb20a66a54b799" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 18c2d93e27fd5e50fa591b019a95f186eab15c570c2965dc7a765b134633befc
[INFO] running `Command { std: "docker" "start" "-a" "18c2d93e27fd5e50fa591b019a95f186eab15c570c2965dc7a765b134633befc", kill_on_drop: false }`
[INFO] [stderr]     Checking unicode-width v0.1.13
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking signal-hook v0.3.17
[INFO] [stderr]    Compiling serde_derive v1.0.204
[INFO] [stderr]    Compiling tokio-macros v2.3.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking signal-hook-mio v0.2.3
[INFO] [stderr]     Checking crossterm v0.25.0
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking tokio v1.38.0
[INFO] [stderr]     Checking tui v0.19.0
[INFO] [stderr]     Checking serde v1.0.204
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking serde_json v1.0.120
[INFO] [stderr]     Checking rust2048 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `bincode`
[INFO] [stdout]  --> src/server.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bincode;
[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: `tokio::time::sleep`
[INFO] [stdout]  --> src/server.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::time::sleep;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClearType`, `Event`, `KeyCode`, `execute`, and `read`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     execute,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 3 |     event::{read, Event, KeyCode},
[INFO] [stdout]   |             ^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 4 |     terminal::{enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen, ClearType},
[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: `Constraint`, `Direction as Dire`, `Layout`, `Span`, `Spans`, `Text`, and `terminal`
[INFO] [stdout]  --> src/main.rs:8:63
[INFO] [stdout]   |
[INFO] [stdout] 8 | ...lignment, Constraint, Direction as Dire, Layout, Rect}, style::{Color, Modifier, Style}, terminal, text::{Span, Spans, Text}, widgets:...
[INFO] [stdout]   |              ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^                                          ^^^^^^^^         ^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Stdout` and `borrow::BorrowMut`
[INFO] [stdout]   --> src/main.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::{borrow::BorrowMut, io::{self, Stdout}};
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Grid` and `Move`
[INFO] [stdout]   --> src/main.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | use game::{Grid, Move};
[INFO] [stdout]    |            ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DisableMouseCapture`, `EnableMouseCapture`, `EnterAlternateScreen`, `Event`, `KeyCode`, `LeaveAlternateScreen`, `disable_raw_mode`, `enable_raw_mode`, `execute`, and `self`
[INFO] [stdout]  --> src/game.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 |     event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode},
[INFO] [stdout]   |             ^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 3 |     execute,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 4 |     terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/game.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/game.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, `error::Error`, and `io`
[INFO] [stdout]   --> src/game.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     error::Error,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 14 |     io,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 15 |     time::{Duration, Instant},
[INFO] [stdout]    |            ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Alignment`, `Block`, `BorderType`, `Borders`, `Canvas`, `Cell`, `Color`, `Constraint`, `CrosstermBackend`, `Frame`, `Label`, `Layout`, `LineGauge`, `Line`, `MapResolution`, `Map`, `Margin`, `Modifier`, `Paragraph`, `Rect`, `Rectangle`, `Row`, `Span`, `Spans`, `Style`, `Table`, `Terminal`, `Wrap`, and `symbols`
[INFO] [stdout]   --> src/game.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     layout::{Alignment, Constraint, Layout, Margin, Rect},
[INFO] [stdout]    |              ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^  ^^^^^^  ^^^^
[INFO] [stdout] 20 |     style::{Color, Modifier, Style},
[INFO] [stdout]    |             ^^^^^  ^^^^^^^^  ^^^^^
[INFO] [stdout] 21 |     symbols,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 22 |     text::{Span, Spans},
[INFO] [stdout]    |            ^^^^  ^^^^^
[INFO] [stdout] 23 |     widgets::{
[INFO] [stdout] 24 |         canvas::{Canvas, Label, Line, Map, MapResolution, Rectangle},
[INFO] [stdout]    |                  ^^^^^^  ^^^^^  ^^^^  ^^^  ^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 25 |         Block, BorderType, Borders, Cell, LineGauge, Paragraph, Row, Table, Wrap,
[INFO] [stdout]    |         ^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^  ^^^^^^^^^  ^^^^^^^^^  ^^^  ^^^^^  ^^^^
[INFO] [stdout] 26 |     },
[INFO] [stdout] 27 |     Frame, Terminal,
[INFO] [stdout]    |     ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:412:22
[INFO] [stdout]     |
[INFO] [stdout] 412 |             for j in (0..4) {
[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] 412 -             for j in (0..4) {
[INFO] [stdout] 412 +             for j in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 418 |         for i in (0..4) {
[INFO] [stdout]     |                  ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -         for i in (0..4) {
[INFO] [stdout] 418 +         for i in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MutexGuard`
[INFO] [stdout]  --> src/server.rs:5:22
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::sync::{Arc, MutexGuard};
[INFO] [stdout]   |                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnterAlternateScreen`, `KeyEvent`, `KeyModifiers`, `LeaveAlternateScreen`, `self`, and `self`
[INFO] [stdout]  --> src/io_manager.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 |     event::{self, poll, read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
[INFO] [stdout]   |             ^^^^                              ^^^^^^^^                ^^^^^^^^^^^^
[INFO] [stdout] 4 |     execute,
[INFO] [stdout] 5 |     terminal::{self, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^                    ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game::Tile`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::game::Tile;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/server.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::panic`
[INFO] [stdout]    --> src/bridge.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 174 |     use core::panic;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::bridge`
[INFO] [stdout]    --> src/bridge.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |     use crate::bridge;
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:412:22
[INFO] [stdout]     |
[INFO] [stdout] 412 |             for j in (0..4) {
[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] 412 -             for j in (0..4) {
[INFO] [stdout] 412 +             for j in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClearType`, `Event`, `KeyCode`, `execute`, and `read`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     execute,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 3 |     event::{read, Event, KeyCode},
[INFO] [stdout]   |             ^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 4 |     terminal::{enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen, ClearType},
[INFO] [stdout]   |                                                                             ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 418 |         for i in (0..4) {
[INFO] [stdout]     |                  ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -         for i in (0..4) {
[INFO] [stdout] 418 +         for i in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnterAlternateScreen`, `KeyEvent`, `KeyModifiers`, `LeaveAlternateScreen`, `self`, and `self`
[INFO] [stdout]  --> src/io_manager.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 |     event::{self, poll, read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
[INFO] [stdout]   |             ^^^^                              ^^^^^^^^                ^^^^^^^^^^^^
[INFO] [stdout] 4 |     execute,
[INFO] [stdout] 5 |     terminal::{self, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^                    ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Constraint`, `Direction as Dire`, `Layout`, `Span`, `Spans`, `Text`, and `terminal`
[INFO] [stdout]  --> src/main.rs:8:63
[INFO] [stdout]   |
[INFO] [stdout] 8 | ...lignment, Constraint, Direction as Dire, Layout, Rect}, style::{Color, Modifier, Style}, terminal, text::{Span, Spans, Text}, widgets:...
[INFO] [stdout]   |              ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^                                          ^^^^^^^^         ^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Stdout` and `borrow::BorrowMut`
[INFO] [stdout]   --> src/main.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::{borrow::BorrowMut, io::{self, Stdout}};
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Grid` and `Move`
[INFO] [stdout]   --> src/main.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | use game::{Grid, Move};
[INFO] [stdout]    |            ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DisableMouseCapture`, `EnableMouseCapture`, `EnterAlternateScreen`, `Event`, `KeyCode`, `LeaveAlternateScreen`, `disable_raw_mode`, `enable_raw_mode`, `execute`, and `self`
[INFO] [stdout]  --> src/game.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 |     event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode},
[INFO] [stdout]   |             ^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 3 |     execute,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 4 |     terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/game.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/game.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, `error::Error`, and `io`
[INFO] [stdout]   --> src/game.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     error::Error,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 14 |     io,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 15 |     time::{Duration, Instant},
[INFO] [stdout]    |            ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Alignment`, `Block`, `BorderType`, `Borders`, `Canvas`, `Cell`, `Color`, `Constraint`, `CrosstermBackend`, `Frame`, `Label`, `Layout`, `LineGauge`, `Line`, `MapResolution`, `Map`, `Margin`, `Modifier`, `Paragraph`, `Rect`, `Rectangle`, `Row`, `Span`, `Spans`, `Style`, `Table`, `Terminal`, `Wrap`, and `symbols`
[INFO] [stdout]   --> src/game.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     layout::{Alignment, Constraint, Layout, Margin, Rect},
[INFO] [stdout]    |              ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^  ^^^^^^  ^^^^
[INFO] [stdout] 20 |     style::{Color, Modifier, Style},
[INFO] [stdout]    |             ^^^^^  ^^^^^^^^  ^^^^^
[INFO] [stdout] 21 |     symbols,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 22 |     text::{Span, Spans},
[INFO] [stdout]    |            ^^^^  ^^^^^
[INFO] [stdout] 23 |     widgets::{
[INFO] [stdout] 24 |         canvas::{Canvas, Label, Line, Map, MapResolution, Rectangle},
[INFO] [stdout]    |                  ^^^^^^  ^^^^^  ^^^^  ^^^  ^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 25 |         Block, BorderType, Borders, Cell, LineGauge, Paragraph, Row, Table, Wrap,
[INFO] [stdout]    |         ^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^  ^^^^^^^^^  ^^^^^^^^^  ^^^  ^^^^^  ^^^^
[INFO] [stdout] 26 |     },
[INFO] [stdout] 27 |     Frame, Terminal,
[INFO] [stdout]    |     ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:412:22
[INFO] [stdout]     |
[INFO] [stdout] 412 |             for j in (0..4) {
[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] 412 -             for j in (0..4) {
[INFO] [stdout] 412 +             for j in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 418 |         for i in (0..4) {
[INFO] [stdout]     |                  ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -         for i in (0..4) {
[INFO] [stdout] 418 +         for i in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnterAlternateScreen`, `KeyEvent`, `KeyModifiers`, `LeaveAlternateScreen`, `self`, and `self`
[INFO] [stdout]  --> src/io_manager.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 |     event::{self, poll, read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
[INFO] [stdout]   |             ^^^^                              ^^^^^^^^                ^^^^^^^^^^^^
[INFO] [stdout] 4 |     execute,
[INFO] [stdout] 5 |     terminal::{self, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^                    ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::panic`
[INFO] [stdout]    --> src/bridge.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 174 |     use core::panic;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::bridge`
[INFO] [stdout]    --> src/bridge.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |     use crate::bridge;
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game::Tile`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::game::Tile;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::panic`
[INFO] [stdout]    --> src/bridge.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 174 |     use core::panic;
[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: `crate::bridge`
[INFO] [stdout]    --> src/bridge.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |     use crate::bridge;
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClearType`, `EnterAlternateScreen`, `Event`, `ExecutableCommand`, `KeyCode`, `LeaveAlternateScreen`, `enable_raw_mode`, `execute`, and `read`
[INFO] [stdout]  --> src/dc.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     execute,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 3 |     event::{read, Event, KeyCode},
[INFO] [stdout]   |             ^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 4 |     terminal::{enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen, ClearType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 5 |     ExecutableCommand,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Constraint`, `CrosstermBackend`, `Direction as Dire`, `Layout`, `Span`, `Spans`, `Terminal`, and `Text`
[INFO] [stdout]   --> src/dc.rs:8:24
[INFO] [stdout]    |
[INFO] [stdout]  8 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout]  9 |     layout::{Constraint, Direction as Dire, Layout, Rect, Alignment},
[INFO] [stdout]    |              ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 10 |     style::{Color, Style, Modifier},
[INFO] [stdout] 11 |     text::{Span, Spans, Text},
[INFO] [stdout]    |            ^^^^  ^^^^^  ^^^^
[INFO] [stdout] 12 |     widgets::{Block, Borders, Paragraph},
[INFO] [stdout] 13 |     Frame, Terminal,
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]   --> src/dc.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::io;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:412:22
[INFO] [stdout]     |
[INFO] [stdout] 412 |             for j in (0..4) {
[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] 412 -             for j in (0..4) {
[INFO] [stdout] 412 +             for j in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 418 |         for i in (0..4) {
[INFO] [stdout]     |                  ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -         for i in (0..4) {
[INFO] [stdout] 418 +         for i in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnterAlternateScreen`, `KeyEvent`, `KeyModifiers`, `LeaveAlternateScreen`, `self`, and `self`
[INFO] [stdout]  --> src/io_manager.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 |     event::{self, poll, read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
[INFO] [stdout]   |             ^^^^                              ^^^^^^^^                ^^^^^^^^^^^^
[INFO] [stdout] 4 |     execute,
[INFO] [stdout] 5 |     terminal::{self, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^                    ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::panic`
[INFO] [stdout]    --> src/bridge.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 174 |     use core::panic;
[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: `crate::bridge`
[INFO] [stdout]    --> src/bridge.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |     use crate::bridge;
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DisableMouseCapture`, `EnableMouseCapture`, `EnterAlternateScreen`, `Event`, `KeyCode`, `LeaveAlternateScreen`, `disable_raw_mode`, `enable_raw_mode`, `execute`, and `self`
[INFO] [stdout]  --> src/game.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 |     event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode},
[INFO] [stdout]   |             ^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 3 |     execute,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 4 |     terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/game.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/game.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, `error::Error`, and `io`
[INFO] [stdout]   --> src/game.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     error::Error,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 14 |     io,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 15 |     time::{Duration, Instant},
[INFO] [stdout]    |            ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Alignment`, `Block`, `BorderType`, `Borders`, `Canvas`, `Cell`, `Color`, `Constraint`, `CrosstermBackend`, `Frame`, `Label`, `Layout`, `LineGauge`, `Line`, `MapResolution`, `Map`, `Margin`, `Modifier`, `Paragraph`, `Rect`, `Rectangle`, `Row`, `Span`, `Spans`, `Style`, `Table`, `Terminal`, `Wrap`, and `symbols`
[INFO] [stdout]   --> src/game.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     layout::{Alignment, Constraint, Layout, Margin, Rect},
[INFO] [stdout]    |              ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^  ^^^^^^  ^^^^
[INFO] [stdout] 20 |     style::{Color, Modifier, Style},
[INFO] [stdout]    |             ^^^^^  ^^^^^^^^  ^^^^^
[INFO] [stdout] 21 |     symbols,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 22 |     text::{Span, Spans},
[INFO] [stdout]    |            ^^^^  ^^^^^
[INFO] [stdout] 23 |     widgets::{
[INFO] [stdout] 24 |         canvas::{Canvas, Label, Line, Map, MapResolution, Rectangle},
[INFO] [stdout]    |                  ^^^^^^  ^^^^^  ^^^^  ^^^  ^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 25 |         Block, BorderType, Borders, Cell, LineGauge, Paragraph, Row, Table, Wrap,
[INFO] [stdout]    |         ^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^  ^^^^^^^^^  ^^^^^^^^^  ^^^  ^^^^^  ^^^^
[INFO] [stdout] 26 |     },
[INFO] [stdout] 27 |     Frame, Terminal,
[INFO] [stdout]    |     ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:412:22
[INFO] [stdout]     |
[INFO] [stdout] 412 |             for j in (0..4) {
[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] 412 -             for j in (0..4) {
[INFO] [stdout] 412 +             for j in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 418 |         for i in (0..4) {
[INFO] [stdout]     |                  ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -         for i in (0..4) {
[INFO] [stdout] 418 +         for i in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnterAlternateScreen`, `KeyEvent`, `KeyModifiers`, `LeaveAlternateScreen`, `self`, and `self`
[INFO] [stdout]  --> src/io_manager.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 |     event::{self, poll, read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
[INFO] [stdout]   |             ^^^^                              ^^^^^^^^                ^^^^^^^^^^^^
[INFO] [stdout] 4 |     execute,
[INFO] [stdout] 5 |     terminal::{self, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^                    ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bincode`
[INFO] [stdout]  --> src/server.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bincode;
[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: `tokio::time::sleep`
[INFO] [stdout]  --> src/server.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::time::sleep;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MutexGuard`
[INFO] [stdout]  --> src/server.rs:5:22
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::sync::{Arc, MutexGuard};
[INFO] [stdout]   |                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/server.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:412:22
[INFO] [stdout]     |
[INFO] [stdout] 412 |             for j in (0..4) {
[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] 412 -             for j in (0..4) {
[INFO] [stdout] 412 +             for j in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 418 |         for i in (0..4) {
[INFO] [stdout]     |                  ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -         for i in (0..4) {
[INFO] [stdout] 418 +         for i in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnterAlternateScreen`, `KeyEvent`, `KeyModifiers`, `LeaveAlternateScreen`, `self`, and `self`
[INFO] [stdout]  --> src/io_manager.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 |     event::{self, poll, read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
[INFO] [stdout]   |             ^^^^                              ^^^^^^^^                ^^^^^^^^^^^^
[INFO] [stdout] 4 |     execute,
[INFO] [stdout] 5 |     terminal::{self, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^                    ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClearType`, `EnterAlternateScreen`, `Event`, `ExecutableCommand`, `KeyCode`, `LeaveAlternateScreen`, `enable_raw_mode`, `execute`, and `read`
[INFO] [stdout]  --> src/dc.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     execute,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 3 |     event::{read, Event, KeyCode},
[INFO] [stdout]   |             ^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 4 |     terminal::{enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen, ClearType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 5 |     ExecutableCommand,
[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: `Constraint`, `CrosstermBackend`, `Direction as Dire`, `Layout`, `Span`, `Spans`, `Terminal`, and `Text`
[INFO] [stdout]   --> src/dc.rs:8:24
[INFO] [stdout]    |
[INFO] [stdout]  8 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout]  9 |     layout::{Constraint, Direction as Dire, Layout, Rect, Alignment},
[INFO] [stdout]    |              ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 10 |     style::{Color, Style, Modifier},
[INFO] [stdout] 11 |     text::{Span, Spans, Text},
[INFO] [stdout]    |            ^^^^  ^^^^^  ^^^^
[INFO] [stdout] 12 |     widgets::{Block, Borders, Paragraph},
[INFO] [stdout] 13 |     Frame, Terminal,
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]   --> src/dc.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::io;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:412:22
[INFO] [stdout]     |
[INFO] [stdout] 412 |             for j in (0..4) {
[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] 412 -             for j in (0..4) {
[INFO] [stdout] 412 +             for j in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 418 |         for i in (0..4) {
[INFO] [stdout]     |                  ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -         for i in (0..4) {
[INFO] [stdout] 418 +         for i in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnterAlternateScreen`, `KeyEvent`, `KeyModifiers`, `LeaveAlternateScreen`, `self`, and `self`
[INFO] [stdout]  --> src/io_manager.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 |     event::{self, poll, read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
[INFO] [stdout]   |             ^^^^                              ^^^^^^^^                ^^^^^^^^^^^^
[INFO] [stdout] 4 |     execute,
[INFO] [stdout] 5 |     terminal::{self, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^                    ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:123:105
[INFO] [stdout]     |
[INFO] [stdout] 123 | async fn send_board_status_safe(game_board1: Arc<Mutex<GameBoard>>, game_board2: Arc<Mutex<GameBoard>>, mut socket1: Arc<Mutex<TcpStream>...
[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/server.rs:123:141
[INFO] [stdout]     |
[INFO] [stdout] 123 | ...tex<GameBoard>>, mut socket1: Arc<Mutex<TcpStream>>, mut socket2: Arc<Mutex<TcpStream>>, animated_vector: Option<Vec<u32>>) {
[INFO] [stdout]     |                                                         ----^^^^^^^
[INFO] [stdout]     |                                                         |
[INFO] [stdout]     |                                                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Backend`
[INFO] [stdout]   --> src/game.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/io_manager.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     io::{self, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     mut socket1: TcpStream,
[INFO] [stdout]     |     ----^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:165:5
[INFO] [stdout]     |
[INFO] [stdout] 165 |     mut socket2: TcpStream,
[INFO] [stdout]     |     ----^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DisableMouseCapture`, `EnableMouseCapture`, `EnterAlternateScreen`, `Event`, `KeyCode`, `LeaveAlternateScreen`, `disable_raw_mode`, `enable_raw_mode`, `execute`, and `self`
[INFO] [stdout]  --> src/game.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 |     event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode},
[INFO] [stdout]   |             ^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 3 |     execute,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 4 |     terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
[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: `std::cell::RefCell`
[INFO] [stdout]  --> src/game.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/game.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, `error::Error`, and `io`
[INFO] [stdout]   --> src/game.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     error::Error,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 14 |     io,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 15 |     time::{Duration, Instant},
[INFO] [stdout]    |            ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Alignment`, `Block`, `BorderType`, `Borders`, `Canvas`, `Cell`, `Color`, `Constraint`, `CrosstermBackend`, `Frame`, `Label`, `Layout`, `LineGauge`, `Line`, `MapResolution`, `Map`, `Margin`, `Modifier`, `Paragraph`, `Rect`, `Rectangle`, `Row`, `Span`, `Spans`, `Style`, `Table`, `Terminal`, `Wrap`, and `symbols`
[INFO] [stdout]   --> src/game.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     layout::{Alignment, Constraint, Layout, Margin, Rect},
[INFO] [stdout]    |              ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^  ^^^^^^  ^^^^
[INFO] [stdout] 20 |     style::{Color, Modifier, Style},
[INFO] [stdout]    |             ^^^^^  ^^^^^^^^  ^^^^^
[INFO] [stdout] 21 |     symbols,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 22 |     text::{Span, Spans},
[INFO] [stdout]    |            ^^^^  ^^^^^
[INFO] [stdout] 23 |     widgets::{
[INFO] [stdout] 24 |         canvas::{Canvas, Label, Line, Map, MapResolution, Rectangle},
[INFO] [stdout]    |                  ^^^^^^  ^^^^^  ^^^^  ^^^  ^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 25 |         Block, BorderType, Borders, Cell, LineGauge, Paragraph, Row, Table, Wrap,
[INFO] [stdout]    |         ^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^  ^^^^^^^^^  ^^^^^^^^^  ^^^  ^^^^^  ^^^^
[INFO] [stdout] 26 |     },
[INFO] [stdout] 27 |     Frame, Terminal,
[INFO] [stdout]    |     ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:412:22
[INFO] [stdout]     |
[INFO] [stdout] 412 |             for j in (0..4) {
[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] 412 -             for j in (0..4) {
[INFO] [stdout] 412 +             for j in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/game_board.rs:418:18
[INFO] [stdout]     |
[INFO] [stdout] 418 |         for i in (0..4) {
[INFO] [stdout]     |                  ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -         for i in (0..4) {
[INFO] [stdout] 418 +         for i in 0..4  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnterAlternateScreen`, `KeyEvent`, `KeyModifiers`, `LeaveAlternateScreen`, `self`, and `self`
[INFO] [stdout]  --> src/io_manager.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 |     event::{self, poll, read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
[INFO] [stdout]   |             ^^^^                              ^^^^^^^^                ^^^^^^^^^^^^
[INFO] [stdout] 4 |     execute,
[INFO] [stdout] 5 |     terminal::{self, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]   |                ^^^^                    ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Backend`
[INFO] [stdout]   --> src/game.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/io_manager.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     io::{self, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:123:105
[INFO] [stdout]     |
[INFO] [stdout] 123 | async fn send_board_status_safe(game_board1: Arc<Mutex<GameBoard>>, game_board2: Arc<Mutex<GameBoard>>, mut socket1: Arc<Mutex<TcpStream>...
[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/server.rs:123:141
[INFO] [stdout]     |
[INFO] [stdout] 123 | ...tex<GameBoard>>, mut socket1: Arc<Mutex<TcpStream>>, mut socket2: Arc<Mutex<TcpStream>>, animated_vector: Option<Vec<u32>>) {
[INFO] [stdout]     |                                                         ----^^^^^^^
[INFO] [stdout]     |                                                         |
[INFO] [stdout]     |                                                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]   --> src/game_board.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |         match direction {
[INFO] [stdout]    |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]    |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]   --> src/game_board.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Quit,
[INFO] [stdout]    |     ---- not covered
[INFO] [stdout]    = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 102~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 103~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]    --> src/game_board.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |         match direction {
[INFO] [stdout]     |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]    --> src/game_board.rs:22:10
[INFO] [stdout]     |
[INFO] [stdout]  22 | pub enum Direction {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     Quit,
[INFO] [stdout]     |     ---- not covered
[INFO] [stdout]     = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]     |
[INFO] [stdout] 130 ~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 131 ~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]   --> src/game_board.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |         match direction {
[INFO] [stdout]    |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]    |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]   --> src/game_board.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Quit,
[INFO] [stdout]    |     ---- not covered
[INFO] [stdout]    = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 102~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 103~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]    --> src/game_board.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |         match direction {
[INFO] [stdout]     |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]    --> src/game_board.rs:22:10
[INFO] [stdout]     |
[INFO] [stdout]  22 | pub enum Direction {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     Quit,
[INFO] [stdout]     |     ---- not covered
[INFO] [stdout]     = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]     |
[INFO] [stdout] 130 ~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 131 ~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     mut socket1: TcpStream,
[INFO] [stdout]     |     ----^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:165:5
[INFO] [stdout]     |
[INFO] [stdout] 165 |     mut socket2: TcpStream,
[INFO] [stdout]     |     ----^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 4 arguments but 3 arguments were supplied
[INFO] [stdout]    --> src/client.rs:187:33
[INFO] [stdout]     |
[INFO] [stdout] 187 |   ...                   draw_double_board(
[INFO] [stdout]     |  _______________________^^^^^^^^^^^^^^^^^-
[INFO] [stdout] 188 | | ...                       f,
[INFO] [stdout] 189 | | ...                       game_board.get_tiles(),
[INFO] [stdout] 190 | | ...                       other_board_ref.get_tiles(),
[INFO] [stdout] 191 | | ...                   );
[INFO] [stdout]     | |_______________________- argument #4 of type `&[u8]` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> src/dc.rs:20:8
[INFO] [stdout]     |
[INFO] [stdout]  20 | pub fn draw_double_board<B: Backend>(frame: &mut Frame<B>, board1: &Vec<Vec<u32>>, board2: &Vec<Vec<u32>>, pipe_data: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^                                                                                   ----------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 187 |                                 draw_double_board(
[INFO] [stdout] ...
[INFO] [stdout] 190 |                                     other_board_ref.get_tiles(),
[INFO] [stdout] 191 ~                                     /* &[u8] */,
[INFO] [stdout] 192 ~                                 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]   --> src/io_manager.rs:83:46
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub async fn read_input_async(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn read_input(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn print_info(character: u8) {
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 4 arguments but 3 arguments were supplied
[INFO] [stdout]    --> src/client.rs:233:45
[INFO] [stdout]     |
[INFO] [stdout] 233 | ...                   draw_double_board(f, game_board.get_tiles(), other_board_ref.get_tiles());
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^-------------------------------------------------------- argument #4 of type `&[u8]` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> src/dc.rs:20:8
[INFO] [stdout]     |
[INFO] [stdout]  20 | pub fn draw_double_board<B: Backend>(frame: &mut Frame<B>, board1: &Vec<Vec<u32>>, board2: &Vec<Vec<u32>>, pipe_data: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^                                                                                   ----------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 233 |                                             draw_double_board(f, game_board.get_tiles(), other_board_ref.get_tiles(), /* &[u8] */);
[INFO] [stdout]     |                                                                                                                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board1`
[INFO] [stdout]    --> src/bridge.rs:122:28
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn if_legal(&mut self, board1: &mut GameBoard,  board2: &mut GameBoard, direction: Direction, if_player2: bool) -> bool {
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_board1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/io_manager.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     io::{self, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]   --> src/io_manager.rs:83:46
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub async fn read_input_async(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn read_input(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board1`
[INFO] [stdout]    --> src/bridge.rs:122:28
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn if_legal(&mut self, board1: &mut GameBoard,  board2: &mut GameBoard, direction: Direction, if_player2: bool) -> bool {
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_board1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:204:9
[INFO] [stdout]     |
[INFO] [stdout] 204 |     let mut backend = CrosstermBackend::new(stdout);
[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: `character`
[INFO] [stdout]    --> src/io_manager.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn print_info(character: u8) {
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board1`
[INFO] [stdout]    --> src/bridge.rs:122:28
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn if_legal(&mut self, board1: &mut GameBoard,  board2: &mut GameBoard, direction: Direction, if_player2: bool) -> bool {
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_board1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:204:9
[INFO] [stdout]     |
[INFO] [stdout] 204 |     let mut backend = CrosstermBackend::new(stdout);
[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] For more information about this error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Backend`
[INFO] [stdout]   --> src/game.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/io_manager.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     io::{self, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]   --> src/game_board.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |         match direction {
[INFO] [stdout]    |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]    |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]   --> src/game_board.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Quit,
[INFO] [stdout]    |     ---- not covered
[INFO] [stdout]    = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 102~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 103~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]    --> src/game_board.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |         match direction {
[INFO] [stdout]     |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]    --> src/game_board.rs:22:10
[INFO] [stdout]     |
[INFO] [stdout]  22 | pub enum Direction {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     Quit,
[INFO] [stdout]     |     ---- not covered
[INFO] [stdout]     = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]     |
[INFO] [stdout] 130 ~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 131 ~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board1`
[INFO] [stdout]    --> src/bridge.rs:122:28
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn if_legal(&mut self, board1: &mut GameBoard,  board2: &mut GameBoard, direction: Direction, if_player2: bool) -> bool {
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_board1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust2048` (bin "rust2048") due to 2 previous errors; 21 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `rust2048` (bin "rust2048" test) due to 2 previous errors; 23 warnings emitted
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/io_manager.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     io::{self, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board1`
[INFO] [stdout]    --> src/bridge.rs:122:28
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn if_legal(&mut self, board1: &mut GameBoard,  board2: &mut GameBoard, direction: Direction, if_player2: bool) -> bool {
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_board1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]   --> src/io_manager.rs:83:46
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub async fn read_input_async(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn read_input(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn print_info(character: u8) {
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `Direction::Quit` not covered
[INFO] [stdout]   --> src/game_board.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |         match direction {
[INFO] [stdout]    |               ^^^^^^^^^ pattern `Direction::Quit` not covered
[INFO] [stdout]    |
[INFO] [stdout] note: `Direction` defined here
[INFO] [stdout]   --> src/game_board.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Quit,
[INFO] [stdout]    |     ---- not covered
[INFO] [stdout]    = note: the matched value is of type `Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 102~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 103~             Direction::Quit => todo!(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `Direction::Quit` not covered
[INFO] [stdout]    --> src/game_board.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |         match direction {
[INFO] [stdout]     |               ^^^^^^^^^ pattern `Direction::Quit` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `Direction` defined here
[INFO] [stdout]    --> src/game_board.rs:22:10
[INFO] [stdout]     |
[INFO] [stdout]  22 | pub enum Direction {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     Quit,
[INFO] [stdout]     |     ---- not covered
[INFO] [stdout]     = note: the matched value is of type `Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]     |
[INFO] [stdout] 130 ~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 131 ~             Direction::Quit => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]   --> src/game_board.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |         match direction {
[INFO] [stdout]    |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]    |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]   --> src/game_board.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Quit,
[INFO] [stdout]    |     ---- not covered
[INFO] [stdout]    = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 102~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 103~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]    --> src/game_board.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |         match direction {
[INFO] [stdout]     |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]    --> src/game_board.rs:22:10
[INFO] [stdout]     |
[INFO] [stdout]  22 | pub enum Direction {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     Quit,
[INFO] [stdout]     |     ---- not covered
[INFO] [stdout]     = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]     |
[INFO] [stdout] 130 ~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 131 ~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Backend`
[INFO] [stdout]   --> src/game.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/io_manager.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     io::{self, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board1`
[INFO] [stdout]    --> src/bridge.rs:122:28
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn if_legal(&mut self, board1: &mut GameBoard,  board2: &mut GameBoard, direction: Direction, if_player2: bool) -> bool {
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_board1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]   --> src/io_manager.rs:83:46
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub async fn read_input_async(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]   --> src/io_manager.rs:83:46
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub async fn read_input_async(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn read_input(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn print_info(character: u8) {
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust2048` (bin "sc") due to 2 previous errors; 14 warnings emitted
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn read_input(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn print_info(character: u8) {
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0004, E0061.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/io_manager.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     io::{self, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board1`
[INFO] [stdout]    --> src/bridge.rs:122:28
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn if_legal(&mut self, board1: &mut GameBoard,  board2: &mut GameBoard, direction: Direction, if_player2: bool) -> bool {
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_board1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust2048` (bin "client" test) due to 4 previous errors; 13 warnings emitted
[INFO] [stdout] error[E0061]: this function takes 4 arguments but 3 arguments were supplied
[INFO] [stdout]    --> src/client.rs:187:33
[INFO] [stdout]     |
[INFO] [stdout] 187 |   ...                   draw_double_board(
[INFO] [stdout]     |  _______________________^^^^^^^^^^^^^^^^^-
[INFO] [stdout] 188 | | ...                       f,
[INFO] [stdout] 189 | | ...                       game_board.get_tiles(),
[INFO] [stdout] 190 | | ...                       other_board_ref.get_tiles(),
[INFO] [stdout] 191 | | ...                   );
[INFO] [stdout]     | |_______________________- argument #4 of type `&[u8]` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> src/dc.rs:20:8
[INFO] [stdout]     |
[INFO] [stdout]  20 | pub fn draw_double_board<B: Backend>(frame: &mut Frame<B>, board1: &Vec<Vec<u32>>, board2: &Vec<Vec<u32>>, pipe_data: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^                                                                                   ----------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 187 |                                 draw_double_board(
[INFO] [stdout] ...
[INFO] [stdout] 190 |                                     other_board_ref.get_tiles(),
[INFO] [stdout] 191 ~                                     /* &[u8] */,
[INFO] [stdout] 192 ~                                 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bridge`
[INFO] [stdout]   --> src/server.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     bridge: Arc<Mutex<Bridge>>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_bridge`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 4 arguments but 3 arguments were supplied
[INFO] [stdout]    --> src/client.rs:233:45
[INFO] [stdout]     |
[INFO] [stdout] 233 | ...                   draw_double_board(f, game_board.get_tiles(), other_board_ref.get_tiles());
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^-------------------------------------------------------- argument #4 of type `&[u8]` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> src/dc.rs:20:8
[INFO] [stdout]     |
[INFO] [stdout]  20 | pub fn draw_double_board<B: Backend>(frame: &mut Frame<B>, board1: &Vec<Vec<u32>>, board2: &Vec<Vec<u32>>, pipe_data: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^                                                                                   ----------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 233 |                                             draw_double_board(f, game_board.get_tiles(), other_board_ref.get_tiles(), /* &[u8] */);
[INFO] [stdout]     |                                                                                                                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result1`
[INFO] [stdout]    --> src/server.rs:181:13
[INFO] [stdout]     |
[INFO] [stdout] 181 |             result1 = async {
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result2`
[INFO] [stdout]    --> src/server.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |             result2 = async {
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/io_manager.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     io::{self, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]   --> src/game_board.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |         match direction {
[INFO] [stdout]    |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]    |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]   --> src/game_board.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Quit,
[INFO] [stdout]    |     ---- not covered
[INFO] [stdout]    = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 102~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 103~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]    --> src/game_board.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |         match direction {
[INFO] [stdout]     |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]    --> src/game_board.rs:22:10
[INFO] [stdout]     |
[INFO] [stdout]  22 | pub enum Direction {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     Quit,
[INFO] [stdout]     |     ---- not covered
[INFO] [stdout]     = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]     |
[INFO] [stdout] 130 ~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 131 ~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board1`
[INFO] [stdout]    --> src/bridge.rs:122:28
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn if_legal(&mut self, board1: &mut GameBoard,  board2: &mut GameBoard, direction: Direction, if_player2: bool) -> bool {
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_board1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]   --> src/game_board.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |         match direction {
[INFO] [stdout]    |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]    |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]   --> src/game_board.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Quit,
[INFO] [stdout]    |     ---- not covered
[INFO] [stdout]    = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 102~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 103~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]    --> src/game_board.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |         match direction {
[INFO] [stdout]     |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]    --> src/game_board.rs:22:10
[INFO] [stdout]     |
[INFO] [stdout]  22 | pub enum Direction {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     Quit,
[INFO] [stdout]     |     ---- not covered
[INFO] [stdout]     = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]     |
[INFO] [stdout] 130 ~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 131 ~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:311:14
[INFO] [stdout]     |
[INFO] [stdout] 311 |         let (mut socket, _) = listener.accept().await.unwrap();
[INFO] [stdout]     |              ----^^^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:316:21
[INFO] [stdout]     |
[INFO] [stdout] 316 |         if let Some(mut pending) = pending_socket.take() {
[INFO] [stdout]     |                     ----^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]   --> src/io_manager.rs:83:46
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub async fn read_input_async(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn read_input(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]   --> src/game_board.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |         match direction {
[INFO] [stdout]    |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]    |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]   --> src/game_board.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Quit,
[INFO] [stdout]    |     ---- not covered
[INFO] [stdout]    = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 102~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 103~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `game_board::Direction::Quit` not covered
[INFO] [stdout]    --> src/game_board.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |         match direction {
[INFO] [stdout]     |               ^^^^^^^^^ pattern `game_board::Direction::Quit` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `game_board::Direction` defined here
[INFO] [stdout]    --> src/game_board.rs:22:10
[INFO] [stdout]     |
[INFO] [stdout]  22 | pub enum Direction {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     Quit,
[INFO] [stdout]     |     ---- not covered
[INFO] [stdout]     = note: the matched value is of type `game_board::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
[INFO] [stdout]     |
[INFO] [stdout] 130 ~             Direction::None => panic!("Should not go to move_tiles function with None direction"),
[INFO] [stdout] 131 ~             game_board::Direction::Quit => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn print_info(character: u8) {
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust2048` (bin "server") due to 2 previous errors; 21 warnings emitted
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]   --> src/io_manager.rs:83:46
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub async fn read_input_async(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn read_input(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn print_info(character: u8) {
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]   --> src/io_manager.rs:83:46
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub async fn read_input_async(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn read_input(&mut self, character: u8) -> Option<Direction> {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `character`
[INFO] [stdout]    --> src/io_manager.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn print_info(character: u8) {
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_character`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bridge`
[INFO] [stdout]   --> src/server.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     bridge: Arc<Mutex<Bridge>>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_bridge`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust2048` (bin "sc" test) due to 2 previous errors; 16 warnings emitted
[INFO] [stdout] warning: unused variable: `result1`
[INFO] [stdout]    --> src/server.rs:181:13
[INFO] [stdout]     |
[INFO] [stdout] 181 |             result1 = async {
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result2`
[INFO] [stdout]    --> src/server.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |             result2 = async {
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:311:14
[INFO] [stdout]     |
[INFO] [stdout] 311 |         let (mut socket, _) = listener.accept().await.unwrap();
[INFO] [stdout]     |              ----^^^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:316:21
[INFO] [stdout]     |
[INFO] [stdout] 316 |         if let Some(mut pending) = pending_socket.take() {
[INFO] [stdout]     |                     ----^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0004, E0061.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust2048` (bin "server" test) due to 2 previous errors; 23 warnings emitted
[INFO] [stderr] error: could not compile `rust2048` (bin "client") due to 4 previous errors; 11 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "18c2d93e27fd5e50fa591b019a95f186eab15c570c2965dc7a765b134633befc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "18c2d93e27fd5e50fa591b019a95f186eab15c570c2965dc7a765b134633befc", kill_on_drop: false }`
[INFO] [stdout] 18c2d93e27fd5e50fa591b019a95f186eab15c570c2965dc7a765b134633befc
