[INFO] cloning repository https://github.com/iauu/terra_wsapi
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/iauu/terra_wsapi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiauu%2Fterra_wsapi", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiauu%2Fterra_wsapi'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7fdbf2696ec2ac889f072a8dd6e90e2b19467874
[INFO] checking iauu/terra_wsapi against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiauu%2Fterra_wsapi" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/iauu/terra_wsapi
[INFO] finished tweaking git repo https://github.com/iauu/terra_wsapi
[INFO] tweaked toml for git repo https://github.com/iauu/terra_wsapi written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/iauu/terra_wsapi on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/iauu/terra_wsapi 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" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: version requirement `1.1.6+spec-1.1.0` for dependency `toml` includes semver metadata which will be ignored, removing the metadata is recommended to avoid confusion
[INFO] [stderr] warning: `terra_wsapi` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f
[INFO] running `Command { std: "docker" "start" "d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: version requirement `1.1.6+spec-1.1.0` for dependency `toml` includes semver metadata which will be ignored, removing the metadata is recommended to avoid confusion
[INFO] [stderr] warning: `terra_wsapi` (manifest) generated 1 warning
[INFO] [stderr]    Compiling libc v0.2.190
[INFO] [stderr]     Checking cfg-if v1.0.5
[INFO] [stderr]     Checking log v0.4.34
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling find-msvc-tools v0.1.14
[INFO] [stderr]    Compiling pkg-config v0.3.34
[INFO] [stderr]    Compiling syn v3.0.6
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]     Checking http v1.5.0
[INFO] [stderr]     Checking smallvec v1.16.2
[INFO] [stderr]     Checking zeroize v1.9.0
[INFO] [stderr]    Compiling aws-lc-rs v1.18.1
[INFO] [stderr]    Compiling zerocopy v0.8.59
[INFO] [stderr]     Checking litemap v0.8.3
[INFO] [stderr]     Checking writeable v0.6.4
[INFO] [stderr]    Compiling rustls v0.23.45
[INFO] [stderr]    Compiling icu_properties_data v2.3.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.3.0
[INFO] [stderr]     Checking rustls-pki-types v1.15.1
[INFO] [stderr]     Checking indexmap v2.14.2
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking futures-channel v0.3.34
[INFO] [stderr]     Checking hybrid-array v0.4.15
[INFO] [stderr]     Checking data-encoding v2.11.0
[INFO] [stderr]    Compiling rustversion v1.0.23
[INFO] [stderr]     Checking sha1 v0.10.7
[INFO] [stderr]     Checking cpufeatures v0.3.1
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]     Checking ipnet v2.12.2
[INFO] [stderr]     Checking const-oid v0.10.2
[INFO] [stderr]     Checking memchr v2.8.3
[INFO] [stderr]     Checking rustls-native-certs v0.8.4
[INFO] [stderr]     Checking chacha20 v0.10.2
[INFO] [stderr]     Checking bitflags v2.13.2
[INFO] [stderr]     Checking regex-automata v0.4.18
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking core_detect v1.0.0
[INFO] [stderr]    Compiling multiversion_no_op v1.0.0
[INFO] [stderr]     Checking winnow v1.0.4
[INFO] [stderr]     Checking lazy_static v1.5.1
[INFO] [stderr]     Checking simdutf8 v0.1.5
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking ordered-float v3.9.2
[INFO] [stderr]     Checking rmp v0.8.15
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.10
[INFO] [stderr]     Checking toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling encoding_rs v0.8.42
[INFO] [stderr]     Checking powerfmt v0.2.1
[INFO] [stderr]     Checking either v1.19.0
[INFO] [stderr]     Checking itertools v0.15.0
[INFO] [stderr]     Checking toml_parser v1.1.3+spec-1.1.0
[INFO] [stderr]     Checking http-body v1.1.0
[INFO] [stderr]     Checking headers-core v0.3.0
[INFO] [stderr]     Checking crypto-common v0.2.2
[INFO] [stderr]     Checking block-buffer v0.12.1
[INFO] [stderr]     Checking http-body-util v0.1.5
[INFO] [stderr]     Checking headers v0.4.1
[INFO] [stderr]     Checking digest v0.11.3
[INFO] [stderr]     Checking mio v1.2.4
[INFO] [stderr]     Checking socket2 v0.6.5
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking sha1 v0.11.0
[INFO] [stderr]     Checking rand v0.10.3
[INFO] [stderr]    Compiling jobserver v0.1.35
[INFO] [stderr]    Compiling cc v1.6.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking serde_spanned v1.1.1
[INFO] [stderr]     Checking toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking toml v1.1.6+spec-1.1.0
[INFO] [stderr]    Compiling aws-lc-sys v0.45.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling axum-macros v0.5.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking futures-util v0.3.33
[INFO] [stderr]     Checking time v0.3.55
[INFO] [stderr]    Compiling synstructure v0.14.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking axum-core v0.5.6
[INFO] [stderr]     Checking tower-http v0.7.1
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking rand v0.9.5
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.6
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling zerofrom-derive v0.1.8
[INFO] [stderr]    Compiling yoke-derive v0.8.4
[INFO] [stderr]     Checking tokio v1.53.2
[INFO] [stderr]     Checking thiserror v2.0.21
[INFO] [stderr]     Checking tungstenite v0.29.0
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking zerovec v0.11.8
[INFO] [stderr]     Checking zerotrie v0.2.5
[INFO] [stderr]     Checking tinystr v0.8.4
[INFO] [stderr]     Checking potential_utf v0.1.6
[INFO] [stderr]     Checking icu_collections v2.3.0
[INFO] [stderr]     Checking serde v1.0.229
[INFO] [stderr]     Checking icu_locale_core v2.3.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking rmp-serde v1.3.1
[INFO] [stderr]     Checking serde-hashkey v0.4.5
[INFO] [stderr]     Checking icu_provider v2.3.1
[INFO] [stderr]     Checking icu_normalizer v2.3.0
[INFO] [stderr]     Checking icu_properties v2.3.0
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-tungstenite v0.29.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking h2 v0.4.19
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking hyper v1.11.1
[INFO] [stderr]     Checking hyper-util v0.1.21
[INFO] [stderr]     Checking rustls-webpki v0.103.15
[INFO] [stderr]     Checking axum v0.8.9
[INFO] [stderr]     Checking tokio-rustls v0.26.6
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.1
[INFO] [stderr]     Checking tungstenite v0.30.0
[INFO] [stderr]     Checking hyper-rustls v0.27.10
[INFO] [stderr]     Checking reqwest v0.13.5
[INFO] [stderr]     Checking tokio-tungstenite v0.30.0
[INFO] [stderr]     Checking axum-extra v0.12.6
[INFO] [stderr]     Checking terra_wsapi v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> src/schema.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{HashMap, VecDeque};
[INFO] [stdout]   |                                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/schema.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufRead, Read};
[INFO] [stdout]   |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::string::FromUtf8Error`
[INFO] [stdout]  --> src/schema.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::string::FromUtf8Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thiserror::Error`
[INFO] [stdout]  --> src/schema.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use thiserror::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::schema`
[INFO] [stdout]  --> src/decoder.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::schema;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `from_unum`
[INFO] [stdout]    --> src/decoder.rs:239:14
[INFO] [stdout]     |
[INFO] [stdout] 239 | macro_rules! from_unum {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider annotating the enclosing module with `#[macro_use]`
[INFO] [stdout]    --> src/main.rs:3:1
[INFO] [stdout]     |
[INFO] [stdout]   3 + #[macro_use]
[INFO] [stdout]   4 | mod decoder;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/cursor.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{BufRead, Read};
[INFO] [stdout]   |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DELETE_AND_ADD` should have an upper camel case name
[INFO] [stdout]   --> src/consts.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     DELETE_AND_ADD = 192, // 11100000
[INFO] [stdout]    |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DeleteAndAdd`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DELETE_AND_ADD` should have an upper camel case name
[INFO] [stdout]   --> src/consts.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     DELETE_AND_ADD = 3
[INFO] [stdout]    |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DeleteAndAdd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `chat`, `ws_high`, and `ws`
[INFO] [stdout]  --> src/routes/chat.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::routes::{chat, ws, ws_high};
[INFO] [stdout]   |                     ^^^^  ^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/routes/api/online.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/routes/api/online.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConnectInfo` and `WebSocketUpgrade`
[INFO] [stdout]  --> src/routes/api/online.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use axum::extract::{ConnectInfo, State, WebSocketUpgrade};
[INFO] [stdout]   |                     ^^^^^^^^^^^         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::Json`
[INFO] [stdout]  --> src/routes/api/online.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use axum::Json;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum_extra::TypedHeader`
[INFO] [stdout]   --> src/routes/api/online.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use axum_extra::TypedHeader;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `chat`, `ws_high`, and `ws`
[INFO] [stdout]  --> src/routes/api/mod.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::routes::{chat, ws, ws_high};
[INFO] [stdout]   |                     ^^^^  ^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IntoResponse`, `Json`, `Response`, `body::Bytes`, `extract::ws::WebSocketUpgrade`, and `routing::any`
[INFO] [stdout]   --> src/main.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | use axum::{body::Bytes, extract::ws::WebSocketUpgrade, response::{IntoResponse, Response}, routing::any, Json, Router};
[INFO] [stdout]    |            ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^  ^^^^^^^^   ^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum_extra::TypedHeader`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use axum_extra::TypedHeader;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `indexmap::IndexMap`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use indexmap::IndexMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::body::Body`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use axum::body::Body;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::extract::ws::Utf8Bytes`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use axum::extract::ws::Utf8Bytes;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConnectInfo`, `Query`, and `State`
[INFO] [stdout]   --> src/main.rs:19:21
[INFO] [stdout]    |
[INFO] [stdout] 19 | use axum::extract::{ConnectInfo, Query, State};
[INFO] [stdout]    |                     ^^^^^^^^^^^  ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]   --> src/main.rs:20:26
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/main.rs:25:26
[INFO] [stdout]    |
[INFO] [stdout] 25 | use tokio::sync::{watch, Mutex, RwLock};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use tracing::info;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ahash::RandomState`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use ahash::RandomState;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thread`
[INFO] [stdout]   --> src/main.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::{env, thread};
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use std::fmt::format;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ControlFlow` and `Deref`
[INFO] [stdout]   --> src/main.rs:34:16
[INFO] [stdout]    |
[INFO] [stdout] 34 | use std::ops::{ControlFlow, Deref};
[INFO] [stdout]    |                ^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/main.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cfg_if::cfg_if`
[INFO] [stdout]   --> src/main.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use cfg_if::cfg_if;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reqwest::Url`
[INFO] [stdout]   --> src/main.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | use reqwest::Url;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::log::warn`
[INFO] [stdout]   --> src/main.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | use tracing::log::warn;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> src/schema.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{HashMap, VecDeque};
[INFO] [stdout]   |                                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/schema.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufRead, Read};
[INFO] [stdout]   |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::string::FromUtf8Error`
[INFO] [stdout]  --> src/schema.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::string::FromUtf8Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thiserror::Error`
[INFO] [stdout]  --> src/schema.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use thiserror::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::schema`
[INFO] [stdout]  --> src/decoder.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::schema;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `from_unum`
[INFO] [stdout]    --> src/decoder.rs:239:14
[INFO] [stdout]     |
[INFO] [stdout] 239 | macro_rules! from_unum {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider annotating the enclosing module with `#[macro_use]`
[INFO] [stdout]    --> src/main.rs:3:1
[INFO] [stdout]     |
[INFO] [stdout]   3 + #[macro_use]
[INFO] [stdout]   4 | mod decoder;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/cursor.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{BufRead, Read};
[INFO] [stdout]   |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DELETE_AND_ADD` should have an upper camel case name
[INFO] [stdout]   --> src/consts.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     DELETE_AND_ADD = 192, // 11100000
[INFO] [stdout]    |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DeleteAndAdd`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DELETE_AND_ADD` should have an upper camel case name
[INFO] [stdout]   --> src/consts.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     DELETE_AND_ADD = 3
[INFO] [stdout]    |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DeleteAndAdd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `chat`, `ws_high`, and `ws`
[INFO] [stdout]  --> src/routes/chat.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::routes::{chat, ws, ws_high};
[INFO] [stdout]   |                     ^^^^  ^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/routes/api/online.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/routes/api/online.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConnectInfo` and `WebSocketUpgrade`
[INFO] [stdout]  --> src/routes/api/online.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use axum::extract::{ConnectInfo, State, WebSocketUpgrade};
[INFO] [stdout]   |                     ^^^^^^^^^^^         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::Json`
[INFO] [stdout]  --> src/routes/api/online.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use axum::Json;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum_extra::TypedHeader`
[INFO] [stdout]   --> src/routes/api/online.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use axum_extra::TypedHeader;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `chat`, `ws_high`, and `ws`
[INFO] [stdout]  --> src/routes/api/mod.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::routes::{chat, ws, ws_high};
[INFO] [stdout]   |                     ^^^^  ^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IntoResponse`, `Json`, `Response`, `body::Bytes`, `extract::ws::WebSocketUpgrade`, and `routing::any`
[INFO] [stdout]   --> src/main.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | use axum::{body::Bytes, extract::ws::WebSocketUpgrade, response::{IntoResponse, Response}, routing::any, Json, Router};
[INFO] [stdout]    |            ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^  ^^^^^^^^   ^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum_extra::TypedHeader`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use axum_extra::TypedHeader;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `indexmap::IndexMap`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use indexmap::IndexMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::body::Body`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use axum::body::Body;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::extract::ws::Utf8Bytes`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use axum::extract::ws::Utf8Bytes;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConnectInfo`, `Query`, and `State`
[INFO] [stdout]   --> src/main.rs:19:21
[INFO] [stdout]    |
[INFO] [stdout] 19 | use axum::extract::{ConnectInfo, Query, State};
[INFO] [stdout]    |                     ^^^^^^^^^^^  ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]   --> src/main.rs:20:26
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/main.rs:25:26
[INFO] [stdout]    |
[INFO] [stdout] 25 | use tokio::sync::{watch, Mutex, RwLock};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use tracing::info;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ahash::RandomState`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use ahash::RandomState;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thread`
[INFO] [stdout]   --> src/main.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::{env, thread};
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use std::fmt::format;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ControlFlow` and `Deref`
[INFO] [stdout]   --> src/main.rs:34:16
[INFO] [stdout]    |
[INFO] [stdout] 34 | use std::ops::{ControlFlow, Deref};
[INFO] [stdout]    |                ^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/main.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cfg_if::cfg_if`
[INFO] [stdout]   --> src/main.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use cfg_if::cfg_if;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reqwest::Url`
[INFO] [stdout]   --> src/main.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | use reqwest::Url;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::log::warn`
[INFO] [stdout]   --> src/main.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | use tracing::log::warn;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/routes/player_change.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |     let mut player_state = unwrap_return!(get_player_list(&state).await);
[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/routes/player_change.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut overall_state = to_key_with_ordered_float(&player_state).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/routes/player_change.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |     let mut player_state = unwrap_return!(get_player_list(&state).await);
[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/routes/player_change.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut overall_state = to_key_with_ordered_float(&player_state).unwrap();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `room_id`
[INFO] [stdout]    --> src/schema.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let room_id = consume_len_string(&mut cursor)?;
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_room_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `refence`
[INFO] [stdout]    --> src/decoder.rs:459:39
[INFO] [stdout]     |
[INFO] [stdout] 459 | ...   ColyseusData::Ref(refence) => { return Err(ParseError::InvalidSchema("Invalid data when expecting referencable data (found re...
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_refence`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `room_id`
[INFO] [stdout]    --> src/schema.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let room_id = consume_len_string(&mut cursor)?;
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_room_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/event.rs:38:22
[INFO] [stdout]    |
[INFO] [stdout] 32 |     #[serde(rename = "avatarUrl")]
[INFO] [stdout]    |                      ----------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 38 |     #[serde(rename = "avatarUrl")]
[INFO] [stdout]    |                      ^^^^^^^^^^^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `refence`
[INFO] [stdout]    --> src/decoder.rs:459:39
[INFO] [stdout]     |
[INFO] [stdout] 459 | ...   ColyseusData::Ref(refence) => { return Err(ParseError::InvalidSchema("Invalid data when expecting referencable data (found re...
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_refence`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/event.rs:38:22
[INFO] [stdout]    |
[INFO] [stdout] 32 |     #[serde(rename = "avatarUrl")]
[INFO] [stdout]    |                      ----------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 38 |     #[serde(rename = "avatarUrl")]
[INFO] [stdout]    |                      ^^^^^^^^^^^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_agent`
[INFO] [stdout]   --> src/routes/chat.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     user_agent: Option<TypedHeader<headers::UserAgent>>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_agent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/routes/chat.rs:19:17
[INFO] [stdout]    |
[INFO] [stdout] 19 |     ConnectInfo(addr): ConnectInfo<SocketAddr>,
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]   --> src/routes/api/online.rs:36:84
[INFO] [stdout]    |
[INFO] [stdout] 36 | ...g(&parsed.players.iter().map(|(k, v)| v).sorted_by(|a, b| a.id.cmp(&b.id)).collect::<Vec<_>>()).unwrap()))
[INFO] [stdout]    |                                   ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/routes/player_change.rs:112:23
[INFO] [stdout]     |
[INFO] [stdout] 112 |                     |(k, v)| new_player_state.get(*v).unwrap().clone()
[INFO] [stdout]     |                       ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> src/routes/player_change.rs:109:30
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         |(k, v)| !player_state_map.contains_key(&k)
[INFO] [stdout]     |                              ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_agent`
[INFO] [stdout]   --> src/routes/player_change.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     user_agent: Option<TypedHeader<headers::UserAgent>>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_agent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/routes/player_change.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |     ConnectInfo(addr): ConnectInfo<SocketAddr>,
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_agent`
[INFO] [stdout]   --> src/routes/chat.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     user_agent: Option<TypedHeader<headers::UserAgent>>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_agent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/routes/chat.rs:19:17
[INFO] [stdout]    |
[INFO] [stdout] 19 |     ConnectInfo(addr): ConnectInfo<SocketAddr>,
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]   --> src/routes/api/online.rs:36:84
[INFO] [stdout]    |
[INFO] [stdout] 36 | ...g(&parsed.players.iter().map(|(k, v)| v).sorted_by(|a, b| a.id.cmp(&b.id)).collect::<Vec<_>>()).unwrap()))
[INFO] [stdout]    |                                   ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/routes/player_change.rs:112:23
[INFO] [stdout]     |
[INFO] [stdout] 112 |                     |(k, v)| new_player_state.get(*v).unwrap().clone()
[INFO] [stdout]     |                       ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> src/routes/player_change.rs:109:30
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         |(k, v)| !player_state_map.contains_key(&k)
[INFO] [stdout]     |                              ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_agent`
[INFO] [stdout]   --> src/routes/player_change.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     user_agent: Option<TypedHeader<headers::UserAgent>>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_agent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/routes/player_change.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |     ConnectInfo(addr): ConnectInfo<SocketAddr>,
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `history`
[INFO] [stdout]    --> src/main.rs:213:41
[INFO] [stdout]     |
[INFO] [stdout] 213 | ...                   if let Some(history) = decode_chat_history(&data)? {
[INFO] [stdout]     |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_history`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `history`
[INFO] [stdout]    --> src/main.rs:213:41
[INFO] [stdout]     |
[INFO] [stdout] 213 | ...                   if let Some(history) = decode_chat_history(&data)? {
[INFO] [stdout]     |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_history`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ServerState` is more private than the item `ServerRouter`
[INFO] [stdout]   --> src/main.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub type ServerRouter = Router<Arc<RwLock<ServerState>>>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^ type alias `ServerRouter` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ServerState` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/main.rs:85:1
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct ServerState {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ServerState` is more private than the item `ServerRouter`
[INFO] [stdout]   --> src/main.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub type ServerRouter = Router<Arc<RwLock<ServerState>>>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^ type alias `ServerRouter` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ServerState` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/main.rs:85:1
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct ServerState {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> src/main.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct MatchMakeResp {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] 104 |     name: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_n` is never used
[INFO] [stdout]   --> src/cursor.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub trait ReadOne: BufRead {
[INFO] [stdout]    |           ------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn read_n(&mut self, len: usize) -> Result<&[u8], ParseError> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SWITCH_TO_STRUCTURE` is never used
[INFO] [stdout]  --> src/consts.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const SWITCH_TO_STRUCTURE: u8 = 255u8; // (decoding collides with DELETE_AND_ADD + fieldIndex = 63)
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TYPE_ID` is never used
[INFO] [stdout]  --> src/consts.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const TYPE_ID: u8 = 213u8;
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rtt` is never read
[INFO] [stdout]  --> src/event.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PingCheck {
[INFO] [stdout]   |            --------- field in this struct
[INFO] [stdout] 7 |     pub(crate) id: u64,
[INFO] [stdout] 8 |     pub rtt: f64,
[INFO] [stdout]   |         ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `PingCheck` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChatHistory` is never constructed
[INFO] [stdout]   --> src/event.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct ChatHistory {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestGroup` is never constructed
[INFO] [stdout]  --> src/request.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RequestGroup<T> {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `push_request`, `wait_for`, and `reset_lock` are never used
[INFO] [stdout]   --> src/request.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl<T> RequestGroup<T> {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub async fn push_request(&mut self, sender: oneshot::Sender<T>) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub async fn wait_for(&self) -> () {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub async fn reset_lock(&mut self) -> () {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> src/main.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct MatchMakeResp {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] 104 |     name: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_n` is never used
[INFO] [stdout]   --> src/cursor.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub trait ReadOne: BufRead {
[INFO] [stdout]    |           ------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn read_n(&mut self, len: usize) -> Result<&[u8], ParseError> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SWITCH_TO_STRUCTURE` is never used
[INFO] [stdout]  --> src/consts.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const SWITCH_TO_STRUCTURE: u8 = 255u8; // (decoding collides with DELETE_AND_ADD + fieldIndex = 63)
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TYPE_ID` is never used
[INFO] [stdout]  --> src/consts.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const TYPE_ID: u8 = 213u8;
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rtt` is never read
[INFO] [stdout]  --> src/event.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PingCheck {
[INFO] [stdout]   |            --------- field in this struct
[INFO] [stdout] 7 |     pub(crate) id: u64,
[INFO] [stdout] 8 |     pub rtt: f64,
[INFO] [stdout]   |         ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `PingCheck` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChatHistory` is never constructed
[INFO] [stdout]   --> src/event.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct ChatHistory {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestGroup` is never constructed
[INFO] [stdout]  --> src/request.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RequestGroup<T> {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `push_request`, `wait_for`, and `reset_lock` are never used
[INFO] [stdout]   --> src/request.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl<T> RequestGroup<T> {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub async fn push_request(&mut self, sender: oneshot::Sender<T>) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub async fn wait_for(&self) -> () {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub async fn reset_lock(&mut self) -> () {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Vec<u8>`
[INFO] [stdout]    --> src/decoder.rs:163:31
[INFO] [stdout]     |
[INFO] [stdout] 163 |             String::from_utf8(buf.into())?
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 163 -             String::from_utf8(buf.into())?
[INFO] [stdout] 163 +             String::from_utf8(buf)?
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 163 -             String::from_utf8(buf.into())?
[INFO] [stdout] 163 +             String::from_utf8(<Vec<u8> as Into<_>>::into(buf))?
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Vec<u8>`
[INFO] [stdout]    --> src/decoder.rs:168:31
[INFO] [stdout]     |
[INFO] [stdout] 168 |             String::from_utf8(buf.into())?
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 168 -             String::from_utf8(buf.into())?
[INFO] [stdout] 168 +             String::from_utf8(buf)?
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 168 -             String::from_utf8(buf.into())?
[INFO] [stdout] 168 +             String::from_utf8(<Vec<u8> as Into<_>>::into(buf))?
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Vec<u8>`
[INFO] [stdout]    --> src/decoder.rs:173:31
[INFO] [stdout]     |
[INFO] [stdout] 173 |             String::from_utf8(buf.into())?
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 173 -             String::from_utf8(buf.into())?
[INFO] [stdout] 173 +             String::from_utf8(buf)?
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 173 -             String::from_utf8(buf.into())?
[INFO] [stdout] 173 +             String::from_utf8(<Vec<u8> as Into<_>>::into(buf))?
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Vec<u8>`
[INFO] [stdout]    --> src/decoder.rs:178:31
[INFO] [stdout]     |
[INFO] [stdout] 178 |             String::from_utf8(buf.into())?
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 178 -             String::from_utf8(buf.into())?
[INFO] [stdout] 178 +             String::from_utf8(buf)?
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 178 -             String::from_utf8(buf.into())?
[INFO] [stdout] 178 +             String::from_utf8(<Vec<u8> as Into<_>>::into(buf))?
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Vec<u8>`
[INFO] [stdout]    --> src/decoder.rs:163:31
[INFO] [stdout]     |
[INFO] [stdout] 163 |             String::from_utf8(buf.into())?
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 163 -             String::from_utf8(buf.into())?
[INFO] [stdout] 163 +             String::from_utf8(buf)?
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 163 -             String::from_utf8(buf.into())?
[INFO] [stdout] 163 +             String::from_utf8(<Vec<u8> as Into<_>>::into(buf))?
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Vec<u8>`
[INFO] [stdout]    --> src/decoder.rs:168:31
[INFO] [stdout]     |
[INFO] [stdout] 168 |             String::from_utf8(buf.into())?
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 168 -             String::from_utf8(buf.into())?
[INFO] [stdout] 168 +             String::from_utf8(buf)?
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 168 -             String::from_utf8(buf.into())?
[INFO] [stdout] 168 +             String::from_utf8(<Vec<u8> as Into<_>>::into(buf))?
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Vec<u8>`
[INFO] [stdout]    --> src/decoder.rs:173:31
[INFO] [stdout]     |
[INFO] [stdout] 173 |             String::from_utf8(buf.into())?
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 173 -             String::from_utf8(buf.into())?
[INFO] [stdout] 173 +             String::from_utf8(buf)?
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 173 -             String::from_utf8(buf.into())?
[INFO] [stdout] 173 +             String::from_utf8(<Vec<u8> as Into<_>>::into(buf))?
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Vec<u8>`
[INFO] [stdout]    --> src/decoder.rs:178:31
[INFO] [stdout]     |
[INFO] [stdout] 178 |             String::from_utf8(buf.into())?
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 178 -             String::from_utf8(buf.into())?
[INFO] [stdout] 178 +             String::from_utf8(buf)?
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 178 -             String::from_utf8(buf.into())?
[INFO] [stdout] 178 +             String::from_utf8(<Vec<u8> as Into<_>>::into(buf))?
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `tokio_tungstenite::tungstenite::Message`
[INFO] [stdout]    --> src/main.rs:228:23
[INFO] [stdout]     |
[INFO] [stdout] 228 |                 .send(Message::Pong(payload).into())
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 228 -                 .send(Message::Pong(payload).into())
[INFO] [stdout] 228 +                 .send(Message::Pong(payload))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 228 -                 .send(Message::Pong(payload).into())
[INFO] [stdout] 228 +                 .send(<tokio_tungstenite::tungstenite::Message as Into<_>>::into(Message::Pong(payload)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `tokio_tungstenite::tungstenite::Message`
[INFO] [stdout]    --> src/main.rs:228:23
[INFO] [stdout]     |
[INFO] [stdout] 228 |                 .send(Message::Pong(payload).into())
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 228 -                 .send(Message::Pong(payload).into())
[INFO] [stdout] 228 +                 .send(Message::Pong(payload))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 228 -                 .send(Message::Pong(payload).into())
[INFO] [stdout] 228 +                 .send(<tokio_tungstenite::tungstenite::Message as Into<_>>::into(Message::Pong(payload)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `sessionId` should have a snake case name
[INFO] [stdout]    --> src/main.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 105 |     sessionId: String,
[INFO] [stdout]     |     ^^^^^^^^^ help: convert the identifier to snake case: `session_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `sessionId` should have a snake case name
[INFO] [stdout]    --> src/main.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 105 |     sessionId: String,
[INFO] [stdout]     |     ^^^^^^^^^ help: convert the identifier to snake case: `session_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `roomId` should have a snake case name
[INFO] [stdout]    --> src/main.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     roomId: String,
[INFO] [stdout]     |     ^^^^^^ help: convert the identifier to snake case: `room_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `roomId` should have a snake case name
[INFO] [stdout]    --> src/main.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     roomId: String,
[INFO] [stdout]     |     ^^^^^^ help: convert the identifier to snake case: `room_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `processId` should have a snake case name
[INFO] [stdout]    --> src/main.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     processId: String,
[INFO] [stdout]     |     ^^^^^^^^^ help: convert the identifier to snake case: `process_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `processId` should have a snake case name
[INFO] [stdout]    --> src/main.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     processId: String,
[INFO] [stdout]     |     ^^^^^^^^^ help: convert the identifier to snake case: `process_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `farmItems` should have a snake case name
[INFO] [stdout]   --> src/models/mod.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub farmItems: serde_json::Value,
[INFO] [stdout]    |         ^^^^^^^^^ help: convert the identifier to snake case: `farm_items`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `levelId` should have a snake case name
[INFO] [stdout]   --> src/models/mod.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub levelId: String,
[INFO] [stdout]    |         ^^^^^^^ help: convert the identifier to snake case: `level_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `serverTime` should have a snake case name
[INFO] [stdout]   --> src/models/mod.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub serverTime: u64
[INFO] [stdout]    |         ^^^^^^^^^^ help: convert the identifier to snake case: `server_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `farmItems` should have a snake case name
[INFO] [stdout]   --> src/models/mod.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub farmItems: serde_json::Value,
[INFO] [stdout]    |         ^^^^^^^^^ help: convert the identifier to snake case: `farm_items`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `levelId` should have a snake case name
[INFO] [stdout]   --> src/models/mod.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub levelId: String,
[INFO] [stdout]    |         ^^^^^^^ help: convert the identifier to snake case: `level_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `serverTime` should have a snake case name
[INFO] [stdout]   --> src/models/mod.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub serverTime: u64
[INFO] [stdout]    |         ^^^^^^^^^^ help: convert the identifier to snake case: `server_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `terra_wsapi` (bin "terra_wsapi" test) due to 5 previous errors; 63 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `terra_wsapi` (bin "terra_wsapi") due to 5 previous errors; 63 warnings emitted
[INFO] [stderr] warning: unused dependency `toml`
[INFO] [stderr]   --> Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | toml = "1.1.6+spec-1.1.0"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `toml`
[INFO] [stderr] warning: `terra_wsapi` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "inspect" "d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f", kill_on_drop: false }`
[INFO] [stdout] d94c76badb9f149fa05551030416736caa12430ee71b17300add2fa35f0e293f
