[INFO] cloning repository https://github.com/eikrt/gut-champion
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/eikrt/gut-champion" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feikrt%2Fgut-champion", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feikrt%2Fgut-champion'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d872644e49fc994618edaa59b83afd084654e0a3
[INFO] checking eikrt/gut-champion against master#03c609abb6638f9d7f49f34326d4137d07f5cd61 for pr-155945
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feikrt%2Fgut-champion" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-7-tc1/source/.cargo/config
[INFO] started tweaking git repo https://github.com/eikrt/gut-champion
[INFO] finished tweaking git repo https://github.com/eikrt/gut-champion
[INFO] tweaked toml for git repo https://github.com/eikrt/gut-champion written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/eikrt/gut-champion on toolchain 03c609abb6638f9d7f49f34326d4137d07f5cd61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/eikrt/gut-champion 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" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded unicode-ident v1.0.3
[INFO] [stderr]   Downloaded serde_derive v1.0.144
[INFO] [stderr]   Downloaded itoa v1.0.3
[INFO] [stderr]   Downloaded version-compare v0.1.0
[INFO] [stderr]   Downloaded lerp v0.4.0
[INFO] [stderr]   Downloaded ryu v1.0.11
[INFO] [stderr]   Downloaded serde v1.0.144
[INFO] [stderr]   Downloaded serde_json v1.0.85
[INFO] [stderr]   Downloaded syn v1.0.99
[INFO] [stderr]   Downloaded sdl2 v0.35.2
[INFO] [stderr]   Downloaded sdl2-sys v0.35.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 67e3ea1f122b00d658eac95c253f25e5b205463a82d54629035be47dec0e9512
[INFO] running `Command { std: "docker" "start" "-a" "67e3ea1f122b00d658eac95c253f25e5b205463a82d54629035be47dec0e9512", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "67e3ea1f122b00d658eac95c253f25e5b205463a82d54629035be47dec0e9512", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "67e3ea1f122b00d658eac95c253f25e5b205463a82d54629035be47dec0e9512", kill_on_drop: false }`
[INFO] [stdout] 67e3ea1f122b00d658eac95c253f25e5b205463a82d54629035be47dec0e9512
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d95fe5e0abbe50e2957dd40a60f4c0766af4c2be8095884137c62a8bd5ad30ca
[INFO] running `Command { std: "docker" "start" "-a" "d95fe5e0abbe50e2957dd40a60f4c0766af4c2be8095884137c62a8bd5ad30ca", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.132
[INFO] [stderr]    Compiling proc-macro2 v1.0.43
[INFO] [stderr]    Compiling quote v1.0.21
[INFO] [stderr]    Compiling unicode-ident v1.0.3
[INFO] [stderr]    Compiling syn v1.0.99
[INFO] [stderr]    Compiling serde_derive v1.0.144
[INFO] [stderr]    Compiling cfg-if v1.0.0
[INFO] [stderr]    Compiling version-compare v0.1.0
[INFO] [stderr]    Compiling autocfg v1.1.0
[INFO] [stderr]    Compiling serde v1.0.144
[INFO] [stderr]    Compiling sdl2-sys v0.35.2
[INFO] [stderr]    Compiling serde_json v1.0.85
[INFO] [stderr]    Compiling sdl2 v0.35.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.16
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking ryu v1.0.11
[INFO] [stderr]     Checking itoa v1.0.3
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]     Checking getrandom v0.2.7
[INFO] [stderr]     Checking rand_core v0.6.3
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking lerp v0.4.0
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking gut_champion v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `get_animations`
[INFO] [stdout]  --> src/client.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::graphics::{get_animations, Sprite};
[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: `bincode`
[INFO] [stdout]  --> src/client.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use bincode;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mpsc::TryRecvError`
[INFO] [stdout]   --> src/client.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use mpsc::TryRecvError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::mouse::MouseButton`
[INFO] [stdout]   --> src/client.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use sdl2::mouse::MouseButton;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::render::Texture`
[INFO] [stdout]   --> src/client.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use sdl2::render::Texture;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TextureCreator` and `WindowCanvas`
[INFO] [stdout]   --> src/client.rs:19:20
[INFO] [stdout]    |
[INFO] [stdout] 19 | use sdl2::render::{TextureCreator, WindowCanvas};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::surface::Surface`
[INFO] [stdout]   --> src/client.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use sdl2::surface::Surface;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::ttf::Font`
[INFO] [stdout]   --> src/client.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use sdl2::ttf::Font;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]   --> src/client.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::io::{Read, Write};
[INFO] [stdout]    |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]   --> src/client.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::net::TcpStream;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::from_utf8`
[INFO] [stdout]   --> src/client.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use std::str::from_utf8;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `UNIX_EPOCH`
[INFO] [stdout]   --> src/client.rs:27:17
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]    |                 ^^^^^^^^              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorKind`, `process::exit`, and `self`
[INFO] [stdout]   --> src/client.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 |     io::{self, ErrorKind},
[INFO] [stdout]    |          ^^^^  ^^^^^^^^^
[INFO] [stdout] 31 |     process::exit,
[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] 
[INFO] [stdout] warning: unused import: `time::Duration`
[INFO] [stdout]  --> src/server.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     time::Duration,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event`
[INFO] [stdout]  --> src/graphics.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::event::Event;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InitFlag`, `LoadTexture`, and `self`
[INFO] [stdout]  --> src/graphics.rs:4:19
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sdl2::image::{self, InitFlag, LoadTexture};
[INFO] [stdout]   |                   ^^^^  ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode`
[INFO] [stdout]  --> src/graphics.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::keyboard::Keycode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::mouse::MouseButton`
[INFO] [stdout]  --> src/graphics.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::mouse::MouseButton;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/graphics.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_animations`
[INFO] [stdout]  --> src/button.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::graphics::{get_animations, Sprite};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lerp::Lerp`
[INFO] [stdout]  --> src/client_threads.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use lerp::Lerp;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/client_threads.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event`
[INFO] [stdout]  --> src/client_threads.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use sdl2::event::Event;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InitFlag`, `LoadTexture`, and `self`
[INFO] [stdout]  --> src/client_threads.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sdl2::image::{self, InitFlag, LoadTexture};
[INFO] [stdout]   |                   ^^^^  ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode`
[INFO] [stdout]  --> src/client_threads.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use sdl2::keyboard::Keycode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::mouse::MouseButton`
[INFO] [stdout]   --> src/client_threads.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use sdl2::mouse::MouseButton;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::pixels::Color`
[INFO] [stdout]   --> src/client_threads.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use sdl2::pixels::Color;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Point` and `Rect`
[INFO] [stdout]   --> src/client_threads.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 | use sdl2::rect::{Point, Rect};
[INFO] [stdout]    |                  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::render::Texture`
[INFO] [stdout]   --> src/client_threads.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use sdl2::render::Texture;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TextureCreator` and `WindowCanvas`
[INFO] [stdout]   --> src/client_threads.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | use sdl2::render::{TextureCreator, WindowCanvas};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::surface::Surface`
[INFO] [stdout]   --> src/client_threads.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use sdl2::surface::Surface;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::ttf::Font`
[INFO] [stdout]   --> src/client_threads.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use sdl2::ttf::Font;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::from_utf8`
[INFO] [stdout]   --> src/client_threads.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::str::from_utf8;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `UNIX_EPOCH`
[INFO] [stdout]   --> src/client_threads.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]    |                 ^^^^^^^^              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `env`, `fs`, `process::exit`, and `self`
[INFO] [stdout]   --> src/client_threads.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     env, fs,
[INFO] [stdout]    |     ^^^  ^^
[INFO] [stdout] 25 |     io::{self, ErrorKind},
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 26 |     process::exit,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_animations`
[INFO] [stdout]  --> src/client.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::graphics::{get_animations, Sprite};
[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: `bincode`
[INFO] [stdout]  --> src/client.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use bincode;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mpsc::TryRecvError`
[INFO] [stdout]   --> src/client.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use mpsc::TryRecvError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::mouse::MouseButton`
[INFO] [stdout]   --> src/client.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use sdl2::mouse::MouseButton;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::render::Texture`
[INFO] [stdout]   --> src/client.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use sdl2::render::Texture;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TextureCreator` and `WindowCanvas`
[INFO] [stdout]   --> src/client.rs:19:20
[INFO] [stdout]    |
[INFO] [stdout] 19 | use sdl2::render::{TextureCreator, WindowCanvas};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::surface::Surface`
[INFO] [stdout]   --> src/client.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use sdl2::surface::Surface;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::ttf::Font`
[INFO] [stdout]   --> src/client.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use sdl2::ttf::Font;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]   --> src/client.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::io::{Read, Write};
[INFO] [stdout]    |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]   --> src/client.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::net::TcpStream;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::from_utf8`
[INFO] [stdout]   --> src/client.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use std::str::from_utf8;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `UNIX_EPOCH`
[INFO] [stdout]   --> src/client.rs:27:17
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]    |                 ^^^^^^^^              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorKind`, `process::exit`, and `self`
[INFO] [stdout]   --> src/client.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 |     io::{self, ErrorKind},
[INFO] [stdout]    |          ^^^^  ^^^^^^^^^
[INFO] [stdout] 31 |     process::exit,
[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] 
[INFO] [stdout] warning: unused import: `time::Duration`
[INFO] [stdout]  --> src/server.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     time::Duration,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event`
[INFO] [stdout]  --> src/graphics.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::event::Event;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InitFlag`, `LoadTexture`, and `self`
[INFO] [stdout]  --> src/graphics.rs:4:19
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sdl2::image::{self, InitFlag, LoadTexture};
[INFO] [stdout]   |                   ^^^^  ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode`
[INFO] [stdout]  --> src/graphics.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::keyboard::Keycode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::mouse::MouseButton`
[INFO] [stdout]  --> src/graphics.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::mouse::MouseButton;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/graphics.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_animations`
[INFO] [stdout]  --> src/button.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::graphics::{get_animations, Sprite};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lerp::Lerp`
[INFO] [stdout]  --> src/client_threads.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use lerp::Lerp;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/client_threads.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event`
[INFO] [stdout]  --> src/client_threads.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use sdl2::event::Event;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InitFlag`, `LoadTexture`, and `self`
[INFO] [stdout]  --> src/client_threads.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sdl2::image::{self, InitFlag, LoadTexture};
[INFO] [stdout]   |                   ^^^^  ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode`
[INFO] [stdout]  --> src/client_threads.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use sdl2::keyboard::Keycode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::mouse::MouseButton`
[INFO] [stdout]   --> src/client_threads.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use sdl2::mouse::MouseButton;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::pixels::Color`
[INFO] [stdout]   --> src/client_threads.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use sdl2::pixels::Color;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Point` and `Rect`
[INFO] [stdout]   --> src/client_threads.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 | use sdl2::rect::{Point, Rect};
[INFO] [stdout]    |                  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::render::Texture`
[INFO] [stdout]   --> src/client_threads.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use sdl2::render::Texture;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TextureCreator` and `WindowCanvas`
[INFO] [stdout]   --> src/client_threads.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | use sdl2::render::{TextureCreator, WindowCanvas};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::surface::Surface`
[INFO] [stdout]   --> src/client_threads.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use sdl2::surface::Surface;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::ttf::Font`
[INFO] [stdout]   --> src/client_threads.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use sdl2::ttf::Font;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::from_utf8`
[INFO] [stdout]   --> src/client_threads.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::str::from_utf8;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `UNIX_EPOCH`
[INFO] [stdout]   --> src/client_threads.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]    |                 ^^^^^^^^              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `env`, `fs`, `process::exit`, and `self`
[INFO] [stdout]   --> src/client_threads.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     env, fs,
[INFO] [stdout]    |     ^^^  ^^
[INFO] [stdout] 25 |     io::{self, ErrorKind},
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 26 |     process::exit,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/client.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |     let mut status_font = ttf_context.load_font("fonts/PixelOperator.ttf", STATUS_FONT_SIZE)?;
[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/client.rs:443:9
[INFO] [stdout]     |
[INFO] [stdout] 443 |     let mut tilt_change = 0;
[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/client.rs:444:9
[INFO] [stdout]     |
[INFO] [stdout] 444 |     let mut tilt_time = 186;
[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/client.rs:445:9
[INFO] [stdout]     |
[INFO] [stdout] 445 |     let mut entities: Arc<Mutex<HashMap<u64, Entity>>> = Arc::new(Mutex::new(HashMap::new()));
[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/client.rs:460:9
[INFO] [stdout]     |
[INFO] [stdout] 460 |     let mut time_from_last_packet: Arc<Mutex<u128>> = Arc::new(Mutex::new(0));
[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/client.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 |     let mut time_from_last_packet_main: Arc<Mutex<u128>> = time_from_last_packet.clone();
[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/client.rs:462:9
[INFO] [stdout]     |
[INFO] [stdout] 462 |     let mut time_from_last_packet_compare = SystemTime::now();
[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/client.rs:463:9
[INFO] [stdout]     |
[INFO] [stdout] 463 |     let mut network_entities: Arc<Mutex<HashMap<u64, NetworkEntity>>> =
[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/client.rs:465:9
[INFO] [stdout]     |
[INFO] [stdout] 465 |     let mut network_entities_thread = network_entities.clone();
[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/client.rs:466:9
[INFO] [stdout]     |
[INFO] [stdout] 466 |     let mut entities_send = entities.clone();
[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/client.rs:468:9
[INFO] [stdout]     |
[INFO] [stdout] 468 |     let mut entities_thread = entities.clone();
[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/client.rs:470:9
[INFO] [stdout]     |
[INFO] [stdout] 470 |     let mut entities_client: HashMap<u64, Entity> = HashMap::new();
[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/client.rs:473:9
[INFO] [stdout]     |
[INFO] [stdout] 473 |     let mut smash_change = 0;
[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/client.rs:482:9
[INFO] [stdout]     |
[INFO] [stdout] 482 |     let mut auto_walk_time = 500;
[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/client.rs:1014:21
[INFO] [stdout]      |
[INFO] [stdout] 1014 |                 let mut entities_network_clone = network_entities.lock().unwrap().clone();
[INFO] [stdout]      |                     ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_name`
[INFO] [stdout]   --> src/client.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let player_name = "Player".to_string();
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_name`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_sprite`
[INFO] [stdout]   --> src/client.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let player_sprite = match player_class {
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_sprite`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tile_color`
[INFO] [stdout]    --> src/client.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout] 107 |     let tile_color = Color::RGB(128, 64, 55);
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tile_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `floor_color`
[INFO] [stdout]    --> src/client.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 108 |     let floor_color = Color::RGB(64, 32, 30);
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_floor_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_color`
[INFO] [stdout]    --> src/client.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let player_color = Color::RGB(128, 128, 0);
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tilt_change`
[INFO] [stdout]    --> src/client.rs:443:9
[INFO] [stdout]     |
[INFO] [stdout] 443 |     let mut tilt_change = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tilt_change`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tilt_time`
[INFO] [stdout]    --> src/client.rs:444:9
[INFO] [stdout]     |
[INFO] [stdout] 444 |     let mut tilt_time = 186;
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tilt_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_from_last_packet_main`
[INFO] [stdout]    --> src/client.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 |     let mut time_from_last_packet_main: Arc<Mutex<u128>> = time_from_last_packet.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_from_last_packet_main`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_from_last_packet_compare`
[INFO] [stdout]    --> src/client.rs:462:9
[INFO] [stdout]     |
[INFO] [stdout] 462 |     let mut time_from_last_packet_compare = SystemTime::now();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_from_last_packet_compare`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `entities_thread`
[INFO] [stdout]    --> src/client.rs:468:9
[INFO] [stdout]     |
[INFO] [stdout] 468 |     let mut entities_thread = entities.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entities_thread`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `entities_client`
[INFO] [stdout]    --> src/client.rs:470:9
[INFO] [stdout]     |
[INFO] [stdout] 470 |     let mut entities_client: HashMap<u64, Entity> = HashMap::new();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entities_client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `smash_change`
[INFO] [stdout]    --> src/client.rs:473:9
[INFO] [stdout]     |
[INFO] [stdout] 473 |     let mut smash_change = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_smash_change`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o_id`
[INFO] [stdout]     --> src/client.rs:1020:26
[INFO] [stdout]      |
[INFO] [stdout] 1020 |                     for (o_id, o_e) in entities_network_clone.iter() {
[INFO] [stdout]      |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_o_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]     --> src/client.rs:1030:22
[INFO] [stdout]      |
[INFO] [stdout] 1030 |                 for (id, e) in entities.lock().unwrap().iter_mut() {
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]     --> src/client.rs:1047:22
[INFO] [stdout]      |
[INFO] [stdout] 1047 |                 for (id, e) in entities.lock().unwrap().iter_mut() {
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]     --> src/client.rs:1072:22
[INFO] [stdout]      |
[INFO] [stdout] 1072 |                 for (id, e) in entities.lock().unwrap().iter_mut() {
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]     --> src/client.rs:1136:22
[INFO] [stdout]      |
[INFO] [stdout] 1136 |                 for (id, e) in network_entities.lock().unwrap().iter_mut() {
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/entity.rs:357:17
[INFO] [stdout]     |
[INFO] [stdout] 357 |             let mut h_y = self.y + self.current_action.y;
[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/entity.rs:498:21
[INFO] [stdout]     |
[INFO] [stdout] 498 |                 let mut hit_type = ActionType::Jab;
[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/entity.rs:541:21
[INFO] [stdout]     |
[INFO] [stdout] 541 |                 let mut hit_type = ActionType::Uair;
[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/entity.rs:555:21
[INFO] [stdout]     |
[INFO] [stdout] 555 |                 let mut hit_type = ActionType::Dair;
[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/entity.rs:575:17
[INFO] [stdout]     |
[INFO] [stdout] 575 |             let mut hit_type = ActionType::Dodge;
[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/entity.rs:587:17
[INFO] [stdout]     |
[INFO] [stdout] 587 |             let mut hit_type = ActionType::Grab;
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit_type`
[INFO] [stdout]    --> src/entity.rs:541:21
[INFO] [stdout]     |
[INFO] [stdout] 541 |                 let mut hit_type = ActionType::Uair;
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hit_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `hit_type` is never read
[INFO] [stdout]    --> src/entity.rs:470:36
[INFO] [stdout]     |
[INFO] [stdout] 470 |                 let mut hit_type = ActionType::UpSmash;
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] 471 |                 hit_type = ActionType::UpSmash;
[INFO] [stdout]     |                 ------------------------------ `hit_type` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/entity.rs:634:13
[INFO] [stdout]     |
[INFO] [stdout] 634 |         let mut h_y = self.y + action.y;
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]    --> src/entity.rs:628:38
[INFO] [stdout]     |
[INFO] [stdout] 628 |     pub fn execute_action(&mut self, delta: u128, action: Action) {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]    --> src/entity.rs:732:45
[INFO] [stdout]     |
[INFO] [stdout] 732 |     pub fn collide_with_obstacle(&mut self, delta: u128, other: &Obstacle) {
[INFO] [stdout]     |                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]   --> src/network.rs:41:28
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn tick(&mut self, delta: u128) {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sprite` is never read
[INFO] [stdout]   --> src/environment.rs:28:30
[INFO] [stdout]    |
[INFO] [stdout] 28 |             let mut sprite = Sprite::Ground;
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 35 |                 sprite = Sprite::Ground;
[INFO] [stdout]    |                 ----------------------- `sprite` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `obstacle_type` is never read
[INFO] [stdout]   --> src/environment.rs:29:37
[INFO] [stdout]    |
[INFO] [stdout] 29 |             let mut obstacle_type = ObstacleType::Stage;
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 36 |                 obstacle_type = ObstacleType::Stage;
[INFO] [stdout]    |                 ----------------------------------- `obstacle_type` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/graphics.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |             _ => Sprite::Commodore,
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/graphics.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |             StatusType::Freeze => Sprite::CommodoreFreeze,
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 91 |             StatusType::Stun => Sprite::CommodoreStun,
[INFO] [stdout]    |             ---------------- matches some of the same values
[INFO] [stdout] 92 |             StatusType::Shield => Sprite::CommodoreShield,
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 93 |             StatusType::One => Sprite::Commodore,
[INFO] [stdout]    |             --------------- matches some of the same values
[INFO] [stdout] 94 |             StatusType::Two => Sprite::Commodore2,
[INFO] [stdout] 95 |             _ => Sprite::Commodore,
[INFO] [stdout]    |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/graphics.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             _ => Sprite::Alchemist,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/graphics.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout]  98 |             StatusType::Freeze => Sprite::AlchemistFreeze,
[INFO] [stdout]     |             ------------------ matches some of the same values
[INFO] [stdout]  99 |             StatusType::Stun => Sprite::AlchemistStun,
[INFO] [stdout]     |             ---------------- matches some of the same values
[INFO] [stdout] 100 |             StatusType::Shield => Sprite::AlchemistShield,
[INFO] [stdout]     |             ------------------ matches some of the same values
[INFO] [stdout] 101 |             StatusType::One => Sprite::Alchemist,
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 102 |             StatusType::Two => Sprite::Alchemist2,
[INFO] [stdout] 103 |             _ => Sprite::Alchemist,
[INFO] [stdout]     |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/client_threads.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |     let mut time_from_last_packet_compare = SystemTime::now();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx_state`
[INFO] [stdout]   --> src/client_threads.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let (tx_state, rx_state) = mpsc::channel::<SendState>();
[INFO] [stdout]    |          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tx_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx_state`
[INFO] [stdout]   --> src/client_threads.rs:42:20
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let (tx_state, rx_state) = mpsc::channel::<SendState>();
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESOLUTION_X` is never used
[INFO] [stdout]   --> src/client.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const RESOLUTION_X: u32 = 256;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESOLUTION_Y` is never used
[INFO] [stdout]   --> src/client.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const RESOLUTION_Y: u32 = 144;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/client.rs:1091:29
[INFO] [stdout]      |
[INFO] [stdout] 1091 | / ...                   canvas.draw_rect(Rect::new(
[INFO] [stdout] 1092 | | ...                       ((-camera.x + hitbox.x) * SCALE) as i32,
[INFO] [stdout] 1093 | | ...                       ((-camera.y + hitbox.y) * SCALE) as i32,
[INFO] [stdout] 1094 | | ...                       (hitbox.w * SCALE) as u32,
[INFO] [stdout] 1095 | | ...                       (hitbox.h * SCALE) as u32,
[INFO] [stdout] 1096 | | ...                   ));
[INFO] [stdout]      | |________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1091 |                             let _ = canvas.draw_rect(Rect::new(
[INFO] [stdout]      |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/client.rs:1129:21
[INFO] [stdout]      |
[INFO] [stdout] 1129 | /                     canvas.draw_rect(Rect::new(
[INFO] [stdout] 1130 | |                         ((-camera.x + player_entity.x + player_entity.h_x) as f32 * SCALE) as i32,
[INFO] [stdout] 1131 | |                         ((-camera.y + player_entity.y + player_entity.h_y) as f32 * SCALE) as i32,
[INFO] [stdout] 1132 | |                         (player_entity.h_w as f32 * SCALE) as u32,
[INFO] [stdout] 1133 | |                         (player_entity.h_h as f32 * SCALE) as u32,
[INFO] [stdout] 1134 | |                     ));
[INFO] [stdout]      | |______________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1129 |                     let _ = canvas.draw_rect(Rect::new(
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/client.rs:1159:29
[INFO] [stdout]      |
[INFO] [stdout] 1159 | / ...                   canvas.draw_rect(Rect::new(
[INFO] [stdout] 1160 | | ...                       (-camera.x + hitbox.x as f32 * SCALE) as i32,
[INFO] [stdout] 1161 | | ...                       (-camera.y + hitbox.y as f32 * SCALE) as i32,
[INFO] [stdout] 1162 | | ...                       (hitbox.w as f32 * SCALE) as u32,
[INFO] [stdout] 1163 | | ...                       (hitbox.h as f32 * SCALE) as u32,
[INFO] [stdout] 1164 | | ...                   ));
[INFO] [stdout]      | |________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1159 |                             let _ = canvas.draw_rect(Rect::new(
[INFO] [stdout]      |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/client.rs:1363:5
[INFO] [stdout]      |
[INFO] [stdout] 1363 |     main_loop();
[INFO] [stdout]      |     ^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1363 |     let _ = main_loop();
[INFO] [stdout]      |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/graphics.rs:189:5
[INFO] [stdout]     |
[INFO] [stdout] 189 |     canvas.copy(texture, None, screen_rect);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let _ = canvas.copy(texture, None, screen_rect);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/client_threads.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     client.set_nonblocking(true);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let _ = client.set_nonblocking(true);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/client.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |     let mut status_font = ttf_context.load_font("fonts/PixelOperator.ttf", STATUS_FONT_SIZE)?;
[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/client.rs:443:9
[INFO] [stdout]     |
[INFO] [stdout] 443 |     let mut tilt_change = 0;
[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/client.rs:444:9
[INFO] [stdout]     |
[INFO] [stdout] 444 |     let mut tilt_time = 186;
[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/client.rs:445:9
[INFO] [stdout]     |
[INFO] [stdout] 445 |     let mut entities: Arc<Mutex<HashMap<u64, Entity>>> = Arc::new(Mutex::new(HashMap::new()));
[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/client.rs:460:9
[INFO] [stdout]     |
[INFO] [stdout] 460 |     let mut time_from_last_packet: Arc<Mutex<u128>> = Arc::new(Mutex::new(0));
[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/client.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 |     let mut time_from_last_packet_main: Arc<Mutex<u128>> = time_from_last_packet.clone();
[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/client.rs:462:9
[INFO] [stdout]     |
[INFO] [stdout] 462 |     let mut time_from_last_packet_compare = SystemTime::now();
[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/client.rs:463:9
[INFO] [stdout]     |
[INFO] [stdout] 463 |     let mut network_entities: Arc<Mutex<HashMap<u64, NetworkEntity>>> =
[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/client.rs:465:9
[INFO] [stdout]     |
[INFO] [stdout] 465 |     let mut network_entities_thread = network_entities.clone();
[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/client.rs:466:9
[INFO] [stdout]     |
[INFO] [stdout] 466 |     let mut entities_send = entities.clone();
[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/client.rs:468:9
[INFO] [stdout]     |
[INFO] [stdout] 468 |     let mut entities_thread = entities.clone();
[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/client.rs:470:9
[INFO] [stdout]     |
[INFO] [stdout] 470 |     let mut entities_client: HashMap<u64, Entity> = HashMap::new();
[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/client.rs:473:9
[INFO] [stdout]     |
[INFO] [stdout] 473 |     let mut smash_change = 0;
[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/client.rs:482:9
[INFO] [stdout]     |
[INFO] [stdout] 482 |     let mut auto_walk_time = 500;
[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/client.rs:1014:21
[INFO] [stdout]      |
[INFO] [stdout] 1014 |                 let mut entities_network_clone = network_entities.lock().unwrap().clone();
[INFO] [stdout]      |                     ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_name`
[INFO] [stdout]   --> src/client.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let player_name = "Player".to_string();
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_name`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_sprite`
[INFO] [stdout]   --> src/client.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let player_sprite = match player_class {
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_sprite`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tile_color`
[INFO] [stdout]    --> src/client.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout] 107 |     let tile_color = Color::RGB(128, 64, 55);
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tile_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `floor_color`
[INFO] [stdout]    --> src/client.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 108 |     let floor_color = Color::RGB(64, 32, 30);
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_floor_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_color`
[INFO] [stdout]    --> src/client.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let player_color = Color::RGB(128, 128, 0);
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tilt_change`
[INFO] [stdout]    --> src/client.rs:443:9
[INFO] [stdout]     |
[INFO] [stdout] 443 |     let mut tilt_change = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tilt_change`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tilt_time`
[INFO] [stdout]    --> src/client.rs:444:9
[INFO] [stdout]     |
[INFO] [stdout] 444 |     let mut tilt_time = 186;
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tilt_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_from_last_packet_main`
[INFO] [stdout]    --> src/client.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 |     let mut time_from_last_packet_main: Arc<Mutex<u128>> = time_from_last_packet.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_from_last_packet_main`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_from_last_packet_compare`
[INFO] [stdout]    --> src/client.rs:462:9
[INFO] [stdout]     |
[INFO] [stdout] 462 |     let mut time_from_last_packet_compare = SystemTime::now();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_from_last_packet_compare`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `entities_thread`
[INFO] [stdout]    --> src/client.rs:468:9
[INFO] [stdout]     |
[INFO] [stdout] 468 |     let mut entities_thread = entities.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entities_thread`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `entities_client`
[INFO] [stdout]    --> src/client.rs:470:9
[INFO] [stdout]     |
[INFO] [stdout] 470 |     let mut entities_client: HashMap<u64, Entity> = HashMap::new();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entities_client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `smash_change`
[INFO] [stdout]    --> src/client.rs:473:9
[INFO] [stdout]     |
[INFO] [stdout] 473 |     let mut smash_change = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_smash_change`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o_id`
[INFO] [stdout]     --> src/client.rs:1020:26
[INFO] [stdout]      |
[INFO] [stdout] 1020 |                     for (o_id, o_e) in entities_network_clone.iter() {
[INFO] [stdout]      |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_o_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]     --> src/client.rs:1030:22
[INFO] [stdout]      |
[INFO] [stdout] 1030 |                 for (id, e) in entities.lock().unwrap().iter_mut() {
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]     --> src/client.rs:1047:22
[INFO] [stdout]      |
[INFO] [stdout] 1047 |                 for (id, e) in entities.lock().unwrap().iter_mut() {
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]     --> src/client.rs:1072:22
[INFO] [stdout]      |
[INFO] [stdout] 1072 |                 for (id, e) in entities.lock().unwrap().iter_mut() {
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]     --> src/client.rs:1136:22
[INFO] [stdout]      |
[INFO] [stdout] 1136 |                 for (id, e) in network_entities.lock().unwrap().iter_mut() {
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/entity.rs:357:17
[INFO] [stdout]     |
[INFO] [stdout] 357 |             let mut h_y = self.y + self.current_action.y;
[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/entity.rs:498:21
[INFO] [stdout]     |
[INFO] [stdout] 498 |                 let mut hit_type = ActionType::Jab;
[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/entity.rs:541:21
[INFO] [stdout]     |
[INFO] [stdout] 541 |                 let mut hit_type = ActionType::Uair;
[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/entity.rs:555:21
[INFO] [stdout]     |
[INFO] [stdout] 555 |                 let mut hit_type = ActionType::Dair;
[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/entity.rs:575:17
[INFO] [stdout]     |
[INFO] [stdout] 575 |             let mut hit_type = ActionType::Dodge;
[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/entity.rs:587:17
[INFO] [stdout]     |
[INFO] [stdout] 587 |             let mut hit_type = ActionType::Grab;
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit_type`
[INFO] [stdout]    --> src/entity.rs:541:21
[INFO] [stdout]     |
[INFO] [stdout] 541 |                 let mut hit_type = ActionType::Uair;
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hit_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `hit_type` is never read
[INFO] [stdout]    --> src/entity.rs:470:36
[INFO] [stdout]     |
[INFO] [stdout] 470 |                 let mut hit_type = ActionType::UpSmash;
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] 471 |                 hit_type = ActionType::UpSmash;
[INFO] [stdout]     |                 ------------------------------ `hit_type` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/entity.rs:634:13
[INFO] [stdout]     |
[INFO] [stdout] 634 |         let mut h_y = self.y + action.y;
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]    --> src/entity.rs:628:38
[INFO] [stdout]     |
[INFO] [stdout] 628 |     pub fn execute_action(&mut self, delta: u128, action: Action) {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]    --> src/entity.rs:732:45
[INFO] [stdout]     |
[INFO] [stdout] 732 |     pub fn collide_with_obstacle(&mut self, delta: u128, other: &Obstacle) {
[INFO] [stdout]     |                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]   --> src/network.rs:41:28
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn tick(&mut self, delta: u128) {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sprite` is never read
[INFO] [stdout]   --> src/environment.rs:28:30
[INFO] [stdout]    |
[INFO] [stdout] 28 |             let mut sprite = Sprite::Ground;
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 35 |                 sprite = Sprite::Ground;
[INFO] [stdout]    |                 ----------------------- `sprite` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `obstacle_type` is never read
[INFO] [stdout]   --> src/environment.rs:29:37
[INFO] [stdout]    |
[INFO] [stdout] 29 |             let mut obstacle_type = ObstacleType::Stage;
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 36 |                 obstacle_type = ObstacleType::Stage;
[INFO] [stdout]    |                 ----------------------------------- `obstacle_type` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/graphics.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |             _ => Sprite::Commodore,
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/graphics.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |             StatusType::Freeze => Sprite::CommodoreFreeze,
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 91 |             StatusType::Stun => Sprite::CommodoreStun,
[INFO] [stdout]    |             ---------------- matches some of the same values
[INFO] [stdout] 92 |             StatusType::Shield => Sprite::CommodoreShield,
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 93 |             StatusType::One => Sprite::Commodore,
[INFO] [stdout]    |             --------------- matches some of the same values
[INFO] [stdout] 94 |             StatusType::Two => Sprite::Commodore2,
[INFO] [stdout] 95 |             _ => Sprite::Commodore,
[INFO] [stdout]    |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/graphics.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             _ => Sprite::Alchemist,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/graphics.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout]  98 |             StatusType::Freeze => Sprite::AlchemistFreeze,
[INFO] [stdout]     |             ------------------ matches some of the same values
[INFO] [stdout]  99 |             StatusType::Stun => Sprite::AlchemistStun,
[INFO] [stdout]     |             ---------------- matches some of the same values
[INFO] [stdout] 100 |             StatusType::Shield => Sprite::AlchemistShield,
[INFO] [stdout]     |             ------------------ matches some of the same values
[INFO] [stdout] 101 |             StatusType::One => Sprite::Alchemist,
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 102 |             StatusType::Two => Sprite::Alchemist2,
[INFO] [stdout] 103 |             _ => Sprite::Alchemist,
[INFO] [stdout]     |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/client_threads.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |     let mut time_from_last_packet_compare = SystemTime::now();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx_state`
[INFO] [stdout]   --> src/client_threads.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let (tx_state, rx_state) = mpsc::channel::<SendState>();
[INFO] [stdout]    |          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tx_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx_state`
[INFO] [stdout]   --> src/client_threads.rs:42:20
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let (tx_state, rx_state) = mpsc::channel::<SendState>();
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESOLUTION_X` is never used
[INFO] [stdout]   --> src/client.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const RESOLUTION_X: u32 = 256;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESOLUTION_Y` is never used
[INFO] [stdout]   --> src/client.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const RESOLUTION_Y: u32 = 144;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/client.rs:1091:29
[INFO] [stdout]      |
[INFO] [stdout] 1091 | / ...                   canvas.draw_rect(Rect::new(
[INFO] [stdout] 1092 | | ...                       ((-camera.x + hitbox.x) * SCALE) as i32,
[INFO] [stdout] 1093 | | ...                       ((-camera.y + hitbox.y) * SCALE) as i32,
[INFO] [stdout] 1094 | | ...                       (hitbox.w * SCALE) as u32,
[INFO] [stdout] 1095 | | ...                       (hitbox.h * SCALE) as u32,
[INFO] [stdout] 1096 | | ...                   ));
[INFO] [stdout]      | |________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1091 |                             let _ = canvas.draw_rect(Rect::new(
[INFO] [stdout]      |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/client.rs:1129:21
[INFO] [stdout]      |
[INFO] [stdout] 1129 | /                     canvas.draw_rect(Rect::new(
[INFO] [stdout] 1130 | |                         ((-camera.x + player_entity.x + player_entity.h_x) as f32 * SCALE) as i32,
[INFO] [stdout] 1131 | |                         ((-camera.y + player_entity.y + player_entity.h_y) as f32 * SCALE) as i32,
[INFO] [stdout] 1132 | |                         (player_entity.h_w as f32 * SCALE) as u32,
[INFO] [stdout] 1133 | |                         (player_entity.h_h as f32 * SCALE) as u32,
[INFO] [stdout] 1134 | |                     ));
[INFO] [stdout]      | |______________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1129 |                     let _ = canvas.draw_rect(Rect::new(
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/client.rs:1159:29
[INFO] [stdout]      |
[INFO] [stdout] 1159 | / ...                   canvas.draw_rect(Rect::new(
[INFO] [stdout] 1160 | | ...                       (-camera.x + hitbox.x as f32 * SCALE) as i32,
[INFO] [stdout] 1161 | | ...                       (-camera.y + hitbox.y as f32 * SCALE) as i32,
[INFO] [stdout] 1162 | | ...                       (hitbox.w as f32 * SCALE) as u32,
[INFO] [stdout] 1163 | | ...                       (hitbox.h as f32 * SCALE) as u32,
[INFO] [stdout] 1164 | | ...                   ));
[INFO] [stdout]      | |________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1159 |                             let _ = canvas.draw_rect(Rect::new(
[INFO] [stdout]      |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/client.rs:1363:5
[INFO] [stdout]      |
[INFO] [stdout] 1363 |     main_loop();
[INFO] [stdout]      |     ^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1363 |     let _ = main_loop();
[INFO] [stdout]      |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/graphics.rs:189:5
[INFO] [stdout]     |
[INFO] [stdout] 189 |     canvas.copy(texture, None, screen_rect);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let _ = canvas.copy(texture, None, screen_rect);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/client_threads.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     client.set_nonblocking(true);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let _ = client.set_nonblocking(true);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.94s
[INFO] running `Command { std: "docker" "inspect" "d95fe5e0abbe50e2957dd40a60f4c0766af4c2be8095884137c62a8bd5ad30ca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d95fe5e0abbe50e2957dd40a60f4c0766af4c2be8095884137c62a8bd5ad30ca", kill_on_drop: false }`
[INFO] [stdout] d95fe5e0abbe50e2957dd40a60f4c0766af4c2be8095884137c62a8bd5ad30ca
