[INFO] cloning repository https://github.com/eda3/ecs_wasm_game3
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/eda3/ecs_wasm_game3" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feda3%2Fecs_wasm_game3", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feda3%2Fecs_wasm_game3'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 077eebb08ef971c670bceb8936f55d9672cc191a
[INFO] checking eda3/ecs_wasm_game3 against try#b28cc4eb48a6415b914e8ad0308be255ff8d73ed for pr-156508
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feda3%2Fecs_wasm_game3" "/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/eda3/ecs_wasm_game3
[INFO] finished tweaking git repo https://github.com/eda3/ecs_wasm_game3
[INFO] tweaked toml for git repo https://github.com/eda3/ecs_wasm_game3 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/eda3/ecs_wasm_game3 on toolchain b28cc4eb48a6415b914e8ad0308be255ff8d73ed
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b28cc4eb48a6415b914e8ad0308be255ff8d73ed" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/eda3/ecs_wasm_game3 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" "+b28cc4eb48a6415b914e8ad0308be255ff8d73ed" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-test v0.3.50
[INFO] [stderr]   Downloaded wasm-bindgen-test-macro v0.3.50
[INFO] [stderr]   Downloaded wasm-logger v0.2.0
[INFO] [stderr]   Downloaded minicov v0.3.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b28cc4eb48a6415b914e8ad0308be255ff8d73ed" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5a676ea683e4010b11725f357612f832fac35a1668a6c06e3bb4949b30dcc108
[INFO] running `Command { std: "docker" "start" "-a" "5a676ea683e4010b11725f357612f832fac35a1668a6c06e3bb4949b30dcc108", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5a676ea683e4010b11725f357612f832fac35a1668a6c06e3bb4949b30dcc108", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5a676ea683e4010b11725f357612f832fac35a1668a6c06e3bb4949b30dcc108", kill_on_drop: false }`
[INFO] [stdout] 5a676ea683e4010b11725f357612f832fac35a1668a6c06e3bb4949b30dcc108
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b28cc4eb48a6415b914e8ad0308be255ff8d73ed" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a4f64148a47404e0b112906dd63f9495aa48b989cfa66243e3124fc99d26f86e
[INFO] running `Command { std: "docker" "start" "-a" "a4f64148a47404e0b112906dd63f9495aa48b989cfa66243e3124fc99d26f86e", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.94
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.100
[INFO] [stderr]    Compiling bumpalo v3.17.0
[INFO] [stderr]    Compiling wasm-bindgen v0.2.100
[INFO] [stderr]    Compiling libc v0.2.171
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]    Compiling zerocopy v0.8.24
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking uuid v1.16.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling wasm-bindgen-backend v0.2.100
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling wasm-bindgen-test-macro v0.3.50
[INFO] [stderr]    Compiling ecs_derive v0.1.0 (/opt/rustwide/workdir/ecs_derive)
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.100
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.100
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking js-sys v0.3.77
[INFO] [stderr]     Checking console_error_panic_hook v0.1.7
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking wasm-bindgen-futures v0.4.50
[INFO] [stderr]     Checking web-sys v0.3.77
[INFO] [stderr]     Checking wasm-bindgen-test v0.3.50
[INFO] [stderr]     Checking wasm-logger v0.2.0
[INFO] [stderr]     Checking ecs_wasm_game3 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:857:12
[INFO] [stdout]     |
[INFO] [stdout] 857 |         if (_y >= play_button_y - 20.0 && _y <= play_button_y + 20.0) {
[INFO] [stdout]     |            ^                                                        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 857 -         if (_y >= play_button_y - 20.0 && _y <= play_button_y + 20.0) {
[INFO] [stdout] 857 +         if _y >= play_button_y - 20.0 && _y <= play_button_y + 20.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:882:12
[INFO] [stdout]     |
[INFO] [stdout] 882 |         if (_y >= hand_cards_y && _y <= hand_cards_y + 100.0) {
[INFO] [stdout]     |            ^                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 882 -         if (_y >= hand_cards_y && _y <= hand_cards_y + 100.0) {
[INFO] [stdout] 882 +         if _y >= hand_cards_y && _y <= hand_cards_y + 100.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:911:12
[INFO] [stdout]     |
[INFO] [stdout] 911 |         if (_y >= resume_button_y - 20.0 && _y <= resume_button_y + 20.0) {
[INFO] [stdout]     |            ^                                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 911 -         if (_y >= resume_button_y - 20.0 && _y <= resume_button_y + 20.0) {
[INFO] [stdout] 911 +         if _y >= resume_button_y - 20.0 && _y <= resume_button_y + 20.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:935:12
[INFO] [stdout]     |
[INFO] [stdout] 935 |         if (_x >= retry_button_x - 90.0 && _x <= retry_button_x + 90.0 &&
[INFO] [stdout]     |            ^
[INFO] [stdout] 936 |             _y >= retry_button_y - 25.0 && _y <= retry_button_y + 25.0) {
[INFO] [stdout]     |                                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 935 ~         if _x >= retry_button_x - 90.0 && _x <= retry_button_x + 90.0 &&
[INFO] [stdout] 936 ~             _y >= retry_button_y - 25.0 && _y <= retry_button_y + 25.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:948:12
[INFO] [stdout]     |
[INFO] [stdout] 948 |         if (_x >= menu_button_x - 90.0 && _x <= menu_button_x + 90.0 &&
[INFO] [stdout]     |            ^
[INFO] [stdout] 949 |             _y >= menu_button_y - 25.0 && _y <= menu_button_y + 25.0) {
[INFO] [stdout]     |                                                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 948 ~         if _x >= menu_button_x - 90.0 && _x <= menu_button_x + 90.0 &&
[INFO] [stdout] 949 ~             _y >= menu_button_y - 25.0 && _y <= menu_button_y + 25.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wasm_bindgen::prelude::*`
[INFO] [stdout]  --> src/game/cursor/component.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use wasm_bindgen::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rendering::Renderer`
[INFO] [stdout]  --> src/game/cursor/rendering.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::rendering::Renderer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HtmlCanvasElement` and `window`
[INFO] [stdout]   --> src/input/mod.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use web_sys::{HtmlCanvasElement, window};
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]   --> src/input/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::fmt;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]   --> src/network/client.rs:10:33
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::{HashMap, VecDeque};
[INFO] [stdout]    |                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Cell`
[INFO] [stdout]   --> src/network/client.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::cell::{RefCell, Cell};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, `info`, `trace`, and `warn`
[INFO] [stdout]   --> src/network/client.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | use log::{debug, error, info, warn, trace};
[INFO] [stdout]    |           ^^^^^  ^^^^^  ^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::LocalKey`
[INFO] [stdout]   --> src/network/client.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::thread::LocalKey;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EntitySnapshot` and `PlayerData`
[INFO] [stdout]   --> src/network/client.rs:18:34
[INFO] [stdout]    |
[INFO] [stdout] 18 | use super::messages::{InputData, PlayerData, EntitySnapshot};
[INFO] [stdout]    |                                  ^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeSyncData`
[INFO] [stdout]   --> src/network/server.rs:11:80
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{ConnectionState, ConnectionStateType, NetworkError, NetworkConfig, TimeSyncData};
[INFO] [stdout]    |                                                                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/ecs/macros.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:857:12
[INFO] [stdout]     |
[INFO] [stdout] 857 |         if (_y >= play_button_y - 20.0 && _y <= play_button_y + 20.0) {
[INFO] [stdout]     |            ^                                                        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 857 -         if (_y >= play_button_y - 20.0 && _y <= play_button_y + 20.0) {
[INFO] [stdout] 857 +         if _y >= play_button_y - 20.0 && _y <= play_button_y + 20.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:882:12
[INFO] [stdout]     |
[INFO] [stdout] 882 |         if (_y >= hand_cards_y && _y <= hand_cards_y + 100.0) {
[INFO] [stdout]     |            ^                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 882 -         if (_y >= hand_cards_y && _y <= hand_cards_y + 100.0) {
[INFO] [stdout] 882 +         if _y >= hand_cards_y && _y <= hand_cards_y + 100.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:911:12
[INFO] [stdout]     |
[INFO] [stdout] 911 |         if (_y >= resume_button_y - 20.0 && _y <= resume_button_y + 20.0) {
[INFO] [stdout]     |            ^                                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 911 -         if (_y >= resume_button_y - 20.0 && _y <= resume_button_y + 20.0) {
[INFO] [stdout] 911 +         if _y >= resume_button_y - 20.0 && _y <= resume_button_y + 20.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:935:12
[INFO] [stdout]     |
[INFO] [stdout] 935 |         if (_x >= retry_button_x - 90.0 && _x <= retry_button_x + 90.0 &&
[INFO] [stdout]     |            ^
[INFO] [stdout] 936 |             _y >= retry_button_y - 25.0 && _y <= retry_button_y + 25.0) {
[INFO] [stdout]     |                                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 935 ~         if _x >= retry_button_x - 90.0 && _x <= retry_button_x + 90.0 &&
[INFO] [stdout] 936 ~             _y >= retry_button_y - 25.0 && _y <= retry_button_y + 25.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game/state.rs:948:12
[INFO] [stdout]     |
[INFO] [stdout] 948 |         if (_x >= menu_button_x - 90.0 && _x <= menu_button_x + 90.0 &&
[INFO] [stdout]     |            ^
[INFO] [stdout] 949 |             _y >= menu_button_y - 25.0 && _y <= menu_button_y + 25.0) {
[INFO] [stdout]     |                                                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 948 ~         if _x >= menu_button_x - 90.0 && _x <= menu_button_x + 90.0 &&
[INFO] [stdout] 949 ~             _y >= menu_button_y - 25.0 && _y <= menu_button_y + 25.0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/game/state.rs:965:9
[INFO] [stdout]     |
[INFO] [stdout] 965 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wasm_bindgen::prelude::*`
[INFO] [stdout]  --> src/game/cursor/component.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use wasm_bindgen::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rendering::Renderer`
[INFO] [stdout]  --> src/game/cursor/rendering.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::rendering::Renderer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wasm_bindgen::JsValue`
[INFO] [stdout]    --> src/rendering/sprite.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     use wasm_bindgen::JsValue;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/rendering/camera.rs:98:9
[INFO] [stdout]    |
[INFO] [stdout] 98 |     use std::time::Duration;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HtmlCanvasElement` and `window`
[INFO] [stdout]   --> src/input/mod.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use web_sys::{HtmlCanvasElement, window};
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]   --> src/input/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::fmt;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]   --> src/network/client.rs:10:33
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::{HashMap, VecDeque};
[INFO] [stdout]    |                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Cell`
[INFO] [stdout]   --> src/network/client.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::cell::{RefCell, Cell};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, `info`, `trace`, and `warn`
[INFO] [stdout]   --> src/network/client.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | use log::{debug, error, info, warn, trace};
[INFO] [stdout]    |           ^^^^^  ^^^^^  ^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::LocalKey`
[INFO] [stdout]   --> src/network/client.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::thread::LocalKey;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EntitySnapshot` and `PlayerData`
[INFO] [stdout]   --> src/network/client.rs:18:34
[INFO] [stdout]    |
[INFO] [stdout] 18 | use super::messages::{InputData, PlayerData, EntitySnapshot};
[INFO] [stdout]    |                                  ^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeSyncData`
[INFO] [stdout]   --> src/network/server.rs:11:80
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{ConnectionState, ConnectionStateType, NetworkError, NetworkConfig, TimeSyncData};
[INFO] [stdout]    |                                                                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/rendering/mod.rs:49:19
[INFO] [stdout]      |
[INFO] [stdout]   49 | impl Resource for Renderer {
[INFO] [stdout]      |                   ^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `rendering::Renderer`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `CanvasRenderingContext2d`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_CanvasRenderingContext2d.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type CanvasRenderingContext2d;
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `rendering::Renderer`
[INFO] [stdout]     --> src/rendering/mod.rs:39:12
[INFO] [stdout]      |
[INFO] [stdout]   39 | pub struct Renderer {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::Resource`
[INFO] [stdout]     --> src/ecs/resource.rs:10:38
[INFO] [stdout]      |
[INFO] [stdout]   10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]      |                                      ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/rendering/mod.rs:49:19
[INFO] [stdout]      |
[INFO] [stdout]   49 | impl Resource for Renderer {
[INFO] [stdout]      |                   ^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `rendering::Renderer`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `CanvasRenderingContext2d`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_CanvasRenderingContext2d.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type CanvasRenderingContext2d;
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `rendering::Renderer`
[INFO] [stdout]     --> src/rendering/mod.rs:39:12
[INFO] [stdout]      |
[INFO] [stdout]   39 | pub struct Renderer {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::Resource`
[INFO] [stdout]     --> src/ecs/resource.rs:10:31
[INFO] [stdout]      |
[INFO] [stdout]   10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]      |                               ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]   --> src/network/client.rs:90:19
[INFO] [stdout]    |
[INFO] [stdout] 90 | impl Resource for NetworkClient {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]   --> src/network/client.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NetworkClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::Resource`
[INFO] [stdout]   --> src/ecs/resource.rs:10:38
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]    |                                      ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]   --> src/network/client.rs:90:19
[INFO] [stdout]    |
[INFO] [stdout] 90 | impl Resource for NetworkClient {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]   --> src/network/client.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NetworkClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::Resource`
[INFO] [stdout]   --> src/ecs/resource.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]    |                               ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/network/client.rs:90:19
[INFO] [stdout]      |
[INFO] [stdout]   90 | impl Resource for NetworkClient {
[INFO] [stdout]      |                   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::Resource`
[INFO] [stdout]     --> src/ecs/resource.rs:10:38
[INFO] [stdout]      |
[INFO] [stdout]   10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]      |                                      ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/network/client.rs:90:19
[INFO] [stdout]      |
[INFO] [stdout]   90 | impl Resource for NetworkClient {
[INFO] [stdout]      |                   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::Resource`
[INFO] [stdout]     --> src/ecs/resource.rs:10:31
[INFO] [stdout]      |
[INFO] [stdout]   10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]      |                               ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/rendering/mod.rs:49:19
[INFO] [stdout]      |
[INFO] [stdout]   49 | impl Resource for Renderer {
[INFO] [stdout]      |                   ^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `Renderer`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `CanvasRenderingContext2d`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_CanvasRenderingContext2d.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type CanvasRenderingContext2d;
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Renderer`
[INFO] [stdout]     --> src/rendering/mod.rs:39:12
[INFO] [stdout]      |
[INFO] [stdout]   39 | pub struct Renderer {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `Resource`
[INFO] [stdout]     --> src/ecs/resource.rs:10:38
[INFO] [stdout]      |
[INFO] [stdout]   10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]      |                                      ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/rendering/mod.rs:49:19
[INFO] [stdout]      |
[INFO] [stdout]   49 | impl Resource for Renderer {
[INFO] [stdout]      |                   ^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `Renderer`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `CanvasRenderingContext2d`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_CanvasRenderingContext2d.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type CanvasRenderingContext2d;
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Renderer`
[INFO] [stdout]     --> src/rendering/mod.rs:39:12
[INFO] [stdout]      |
[INFO] [stdout]   39 | pub struct Renderer {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `Resource`
[INFO] [stdout]     --> src/ecs/resource.rs:10:31
[INFO] [stdout]      |
[INFO] [stdout]   10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]      |                               ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]   --> src/network/client.rs:90:19
[INFO] [stdout]    |
[INFO] [stdout] 90 | impl Resource for NetworkClient {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]   --> src/network/client.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NetworkClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Resource`
[INFO] [stdout]   --> src/ecs/resource.rs:10:38
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]    |                                      ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]   --> src/network/client.rs:90:19
[INFO] [stdout]    |
[INFO] [stdout] 90 | impl Resource for NetworkClient {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]   --> src/network/client.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NetworkClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Resource`
[INFO] [stdout]   --> src/ecs/resource.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]    |                               ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/network/client.rs:90:19
[INFO] [stdout]      |
[INFO] [stdout]   90 | impl Resource for NetworkClient {
[INFO] [stdout]      |                   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Resource`
[INFO] [stdout]     --> src/ecs/resource.rs:10:38
[INFO] [stdout]      |
[INFO] [stdout]   10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]      |                                      ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/network/client.rs:90:19
[INFO] [stdout]      |
[INFO] [stdout]   90 | impl Resource for NetworkClient {
[INFO] [stdout]      |                   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Resource`
[INFO] [stdout]     --> src/ecs/resource.rs:10:31
[INFO] [stdout]      |
[INFO] [stdout]   10 | pub trait Resource: 'static + Send + Sync + Any {
[INFO] [stdout]      |                               ^^^^ required by this bound in `Resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]   --> src/game/cursor/system.rs:87:59
[INFO] [stdout]    |
[INFO] [stdout] 87 |             if let Some(network_client) = resources.get::<NetworkClient>() {
[INFO] [stdout]    |                                                     ---   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    |                                                     |
[INFO] [stdout]    |                                                     required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]   --> src/network/client.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NetworkClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get`
[INFO] [stdout]   --> src/ecs/resource.rs:90:29
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn get<T: 'static + Send + Sync + Resource>(&self) -> Option<&T> {
[INFO] [stdout]    |                             ^^^^ required by this bound in `ResourceManager::get`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]   --> src/game/cursor/system.rs:87:59
[INFO] [stdout]    |
[INFO] [stdout] 87 |             if let Some(network_client) = resources.get::<NetworkClient>() {
[INFO] [stdout]    |                                                     ---   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    |                                                     |
[INFO] [stdout]    |                                                     required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]   --> src/network/client.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NetworkClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get`
[INFO] [stdout]   --> src/ecs/resource.rs:90:36
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn get<T: 'static + Send + Sync + Resource>(&self) -> Option<&T> {
[INFO] [stdout]    |                                    ^^^^ required by this bound in `ResourceManager::get`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:87:59
[INFO] [stdout]      |
[INFO] [stdout]   87 |             if let Some(network_client) = resources.get::<NetworkClient>() {
[INFO] [stdout]      |                                                     ---   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get`
[INFO] [stdout]     --> src/ecs/resource.rs:90:29
[INFO] [stdout]      |
[INFO] [stdout]   90 |     pub fn get<T: 'static + Send + Sync + Resource>(&self) -> Option<&T> {
[INFO] [stdout]      |                             ^^^^ required by this bound in `ResourceManager::get`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:87:59
[INFO] [stdout]      |
[INFO] [stdout]   87 |             if let Some(network_client) = resources.get::<NetworkClient>() {
[INFO] [stdout]      |                                                     ---   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get`
[INFO] [stdout]     --> src/ecs/resource.rs:90:36
[INFO] [stdout]      |
[INFO] [stdout]   90 |     pub fn get<T: 'static + Send + Sync + Resource>(&self) -> Option<&T> {
[INFO] [stdout]      |                                    ^^^^ required by this bound in `ResourceManager::get`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    --> src/game/cursor/system.rs:124:83
[INFO] [stdout]     |
[INFO] [stdout] 124 | ...                   if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]     |                                                               -------   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]     |                                                               |
[INFO] [stdout]     |                                                               required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get_mut`
[INFO] [stdout]    --> src/ecs/resource.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                 ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    --> src/game/cursor/system.rs:124:83
[INFO] [stdout]     |
[INFO] [stdout] 124 | ...                   if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]     |                                                               -------   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]     |                                                               |
[INFO] [stdout]     |                                                               required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get_mut`
[INFO] [stdout]    --> src/ecs/resource.rs:104:40
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                        ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:124:83
[INFO] [stdout]      |
[INFO] [stdout]  124 | ...                   if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]      |                                                               -------   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get_mut`
[INFO] [stdout]     --> src/ecs/resource.rs:104:33
[INFO] [stdout]      |
[INFO] [stdout]  104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                 ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:124:83
[INFO] [stdout]      |
[INFO] [stdout]  124 | ...                   if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]      |                                                               -------   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get_mut`
[INFO] [stdout]     --> src/ecs/resource.rs:104:40
[INFO] [stdout]      |
[INFO] [stdout]  104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                        ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    --> src/game/cursor/system.rs:142:63
[INFO] [stdout]     |
[INFO] [stdout] 142 |             if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]     |                                                     -------   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get_mut`
[INFO] [stdout]    --> src/ecs/resource.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                 ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    --> src/game/cursor/system.rs:142:63
[INFO] [stdout]     |
[INFO] [stdout] 142 |             if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]     |                                                     -------   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get_mut`
[INFO] [stdout]    --> src/ecs/resource.rs:104:40
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                        ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:142:63
[INFO] [stdout]      |
[INFO] [stdout]  142 |             if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]      |                                                     -------   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get_mut`
[INFO] [stdout]     --> src/ecs/resource.rs:104:33
[INFO] [stdout]      |
[INFO] [stdout]  104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                 ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:142:63
[INFO] [stdout]      |
[INFO] [stdout]  142 |             if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]      |                                                     -------   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ResourceManager::get_mut`
[INFO] [stdout]     --> src/ecs/resource.rs:104:40
[INFO] [stdout]      |
[INFO] [stdout]  104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                        ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `web_sys::CanvasRenderingContext2d::set_fill_style`
[INFO] [stdout]   --> src/game/cursor/rendering.rs:47:49
[INFO] [stdout]    |
[INFO] [stdout] 47 | ...                   context.set_fill_style(&JsValue::from_str(&color_str));
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `web_sys::CanvasRenderingContext2d::set_fill_style`
[INFO] [stdout]   --> src/game/cursor/rendering.rs:62:49
[INFO] [stdout]    |
[INFO] [stdout] 62 | ...                   context.set_fill_style(&JsValue::from_str("white"));
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    --> src/game/cursor/mod.rs:29:64
[INFO] [stdout]     |
[INFO] [stdout]  29 |     if let Some(mut network_client) = world.get_resource_mut::<NetworkClient>() {
[INFO] [stdout]     |                                             ----------------   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `World::get_resource_mut`
[INFO] [stdout]    --> src/ecs/mod.rs:390:42
[INFO] [stdout]     |
[INFO] [stdout] 390 |     pub fn get_resource_mut<T: 'static + Send + Sync + resource::Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                          ^^^^ required by this bound in `World::get_resource_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    --> src/game/cursor/mod.rs:29:64
[INFO] [stdout]     |
[INFO] [stdout]  29 |     if let Some(mut network_client) = world.get_resource_mut::<NetworkClient>() {
[INFO] [stdout]     |                                             ----------------   ^^^^^^^^^^^^^ `Rc<RefCell<ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `World::get_resource_mut`
[INFO] [stdout]    --> src/ecs/mod.rs:390:49
[INFO] [stdout]     |
[INFO] [stdout] 390 |     pub fn get_resource_mut<T: 'static + Send + Sync + resource::Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                                 ^^^^ required by this bound in `World::get_resource_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/game/cursor/mod.rs:29:64
[INFO] [stdout]      |
[INFO] [stdout]   29 |     if let Some(mut network_client) = world.get_resource_mut::<NetworkClient>() {
[INFO] [stdout]      |                                             ----------------   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |                                             |
[INFO] [stdout]      |                                             required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `World::get_resource_mut`
[INFO] [stdout]     --> src/ecs/mod.rs:390:42
[INFO] [stdout]      |
[INFO] [stdout]  390 |     pub fn get_resource_mut<T: 'static + Send + Sync + resource::Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                          ^^^^ required by this bound in `World::get_resource_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/game/cursor/mod.rs:29:64
[INFO] [stdout]      |
[INFO] [stdout]   29 |     if let Some(mut network_client) = world.get_resource_mut::<NetworkClient>() {
[INFO] [stdout]      |                                             ----------------   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |                                             |
[INFO] [stdout]      |                                             required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `World::get_resource_mut`
[INFO] [stdout]     --> src/ecs/mod.rs:390:49
[INFO] [stdout]      |
[INFO] [stdout]  390 |     pub fn get_resource_mut<T: 'static + Send + Sync + resource::Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                                 ^^^^ required by this bound in `World::get_resource_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/rendering/mod.rs:28:27
[INFO] [stdout]      |
[INFO] [stdout]   28 |     world.insert_resource(renderer);
[INFO] [stdout]      |           --------------- ^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |           |
[INFO] [stdout]      |           required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `Renderer`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `CanvasRenderingContext2d`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_CanvasRenderingContext2d.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type CanvasRenderingContext2d;
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Renderer`
[INFO] [stdout]     --> src/rendering/mod.rs:39:12
[INFO] [stdout]      |
[INFO] [stdout]   39 | pub struct Renderer {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `World::insert_resource`
[INFO] [stdout]     --> src/ecs/mod.rs:323:41
[INFO] [stdout]      |
[INFO] [stdout]  323 |     pub fn insert_resource<T: 'static + Send + Sync + resource::Resource>(&mut self, resource: T) {
[INFO] [stdout]      |                                         ^^^^ required by this bound in `World::insert_resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/rendering/mod.rs:28:27
[INFO] [stdout]      |
[INFO] [stdout]   28 |     world.insert_resource(renderer);
[INFO] [stdout]      |           --------------- ^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |           |
[INFO] [stdout]      |           required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `Renderer`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `CanvasRenderingContext2d`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_CanvasRenderingContext2d.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type CanvasRenderingContext2d;
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Renderer`
[INFO] [stdout]     --> src/rendering/mod.rs:39:12
[INFO] [stdout]      |
[INFO] [stdout]   39 | pub struct Renderer {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `World::insert_resource`
[INFO] [stdout]     --> src/ecs/mod.rs:323:48
[INFO] [stdout]      |
[INFO] [stdout]  323 |     pub fn insert_resource<T: 'static + Send + Sync + resource::Resource>(&mut self, resource: T) {
[INFO] [stdout]      |                                                ^^^^ required by this bound in `World::insert_resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_alive` found for struct `ecs::World` in the current scope
[INFO] [stdout]   --> src/game/entities.rs:99:23
[INFO] [stdout]    |
[INFO] [stdout] 99 |         assert!(world.is_alive(player));
[INFO] [stdout]    |                       ^^^^^^^^ method not found in `ecs::World`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ecs/mod.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct World {
[INFO] [stdout]    | ---------------- method `is_alive` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_alive` found for struct `ecs::World` in the current scope
[INFO] [stdout]    --> src/game/entities.rs:103:23
[INFO] [stdout]     |
[INFO] [stdout] 103 |         assert!(world.is_alive(enemy));
[INFO] [stdout]     |                       ^^^^^^^^ method not found in `ecs::World`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/ecs/mod.rs:44:1
[INFO] [stdout]     |
[INFO] [stdout]  44 | pub struct World {
[INFO] [stdout]     | ---------------- method `is_alive` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_alive` found for struct `ecs::World` in the current scope
[INFO] [stdout]    --> src/game/entities.rs:107:23
[INFO] [stdout]     |
[INFO] [stdout] 107 |         assert!(world.is_alive(item));
[INFO] [stdout]     |                       ^^^^^^^^ method not found in `ecs::World`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/ecs/mod.rs:44:1
[INFO] [stdout]     |
[INFO] [stdout]  44 | pub struct World {
[INFO] [stdout]     | ---------------- method `is_alive` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_alive` found for struct `ecs::World` in the current scope
[INFO] [stdout]    --> src/game/entities.rs:111:23
[INFO] [stdout]     |
[INFO] [stdout] 111 |         assert!(world.is_alive(effect));
[INFO] [stdout]     |                       ^^^^^^^^ method not found in `ecs::World`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/ecs/mod.rs:44:1
[INFO] [stdout]     |
[INFO] [stdout]  44 | pub struct World {
[INFO] [stdout]     | ---------------- method `is_alive` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_alive` found for struct `ecs::World` in the current scope
[INFO] [stdout]    --> src/game/entities.rs:115:23
[INFO] [stdout]     |
[INFO] [stdout] 115 |         assert!(world.is_alive(background));
[INFO] [stdout]     |                       ^^^^^^^^ method not found in `ecs::World`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/ecs/mod.rs:44:1
[INFO] [stdout]     |
[INFO] [stdout]  44 | pub struct World {
[INFO] [stdout]     | ---------------- method `is_alive` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]   --> src/game/cursor/system.rs:87:59
[INFO] [stdout]    |
[INFO] [stdout] 87 |             if let Some(network_client) = resources.get::<NetworkClient>() {
[INFO] [stdout]    |                                                     ---   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    |                                                     |
[INFO] [stdout]    |                                                     required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]   --> src/network/client.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NetworkClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get`
[INFO] [stdout]   --> src/ecs/resource.rs:90:29
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn get<T: 'static + Send + Sync + Resource>(&self) -> Option<&T> {
[INFO] [stdout]    |                             ^^^^ required by this bound in `ResourceManager::get`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]   --> src/game/cursor/system.rs:87:59
[INFO] [stdout]    |
[INFO] [stdout] 87 |             if let Some(network_client) = resources.get::<NetworkClient>() {
[INFO] [stdout]    |                                                     ---   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    |                                                     |
[INFO] [stdout]    |                                                     required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]   --> src/network/client.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct NetworkClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get`
[INFO] [stdout]   --> src/ecs/resource.rs:90:36
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn get<T: 'static + Send + Sync + Resource>(&self) -> Option<&T> {
[INFO] [stdout]    |                                    ^^^^ required by this bound in `ResourceManager::get`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:87:59
[INFO] [stdout]      |
[INFO] [stdout]   87 |             if let Some(network_client) = resources.get::<NetworkClient>() {
[INFO] [stdout]      |                                                     ---   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get`
[INFO] [stdout]     --> src/ecs/resource.rs:90:29
[INFO] [stdout]      |
[INFO] [stdout]   90 |     pub fn get<T: 'static + Send + Sync + Resource>(&self) -> Option<&T> {
[INFO] [stdout]      |                             ^^^^ required by this bound in `ResourceManager::get`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:87:59
[INFO] [stdout]      |
[INFO] [stdout]   87 |             if let Some(network_client) = resources.get::<NetworkClient>() {
[INFO] [stdout]      |                                                     ---   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get`
[INFO] [stdout]     --> src/ecs/resource.rs:90:36
[INFO] [stdout]      |
[INFO] [stdout]   90 |     pub fn get<T: 'static + Send + Sync + Resource>(&self) -> Option<&T> {
[INFO] [stdout]      |                                    ^^^^ required by this bound in `ResourceManager::get`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    --> src/game/cursor/system.rs:124:83
[INFO] [stdout]     |
[INFO] [stdout] 124 | ...                   if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]     |                                                               -------   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]     |                                                               |
[INFO] [stdout]     |                                                               required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get_mut`
[INFO] [stdout]    --> src/ecs/resource.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                 ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    --> src/game/cursor/system.rs:124:83
[INFO] [stdout]     |
[INFO] [stdout] 124 | ...                   if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]     |                                                               -------   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]     |                                                               |
[INFO] [stdout]     |                                                               required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get_mut`
[INFO] [stdout]    --> src/ecs/resource.rs:104:40
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                        ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:124:83
[INFO] [stdout]      |
[INFO] [stdout]  124 | ...                   if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]      |                                                               -------   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get_mut`
[INFO] [stdout]     --> src/ecs/resource.rs:104:33
[INFO] [stdout]      |
[INFO] [stdout]  104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                 ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:124:83
[INFO] [stdout]      |
[INFO] [stdout]  124 | ...                   if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]      |                                                               -------   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get_mut`
[INFO] [stdout]     --> src/ecs/resource.rs:104:40
[INFO] [stdout]      |
[INFO] [stdout]  104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                        ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    --> src/game/cursor/system.rs:142:63
[INFO] [stdout]     |
[INFO] [stdout] 142 |             if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]     |                                                     -------   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get_mut`
[INFO] [stdout]    --> src/ecs/resource.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                 ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    --> src/game/cursor/system.rs:142:63
[INFO] [stdout]     |
[INFO] [stdout] 142 |             if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]     |                                                     -------   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get_mut`
[INFO] [stdout]    --> src/ecs/resource.rs:104:40
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                        ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:142:63
[INFO] [stdout]      |
[INFO] [stdout]  142 |             if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]      |                                                     -------   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get_mut`
[INFO] [stdout]     --> src/ecs/resource.rs:104:33
[INFO] [stdout]      |
[INFO] [stdout]  104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                 ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/game/cursor/system.rs:142:63
[INFO] [stdout]      |
[INFO] [stdout]  142 |             if let Some(network_client) = resources.get_mut::<NetworkClient>() {
[INFO] [stdout]      |                                                     -------   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `resource::ResourceManager::get_mut`
[INFO] [stdout]     --> src/ecs/resource.rs:104:40
[INFO] [stdout]      |
[INFO] [stdout]  104 |     pub fn get_mut<T: 'static + Send + Sync + Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                        ^^^^ required by this bound in `ResourceManager::get_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `web_sys::CanvasRenderingContext2d::set_fill_style`
[INFO] [stdout]   --> src/game/cursor/rendering.rs:47:49
[INFO] [stdout]    |
[INFO] [stdout] 47 | ...                   context.set_fill_style(&JsValue::from_str(&color_str));
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `web_sys::CanvasRenderingContext2d::set_fill_style`
[INFO] [stdout]   --> src/game/cursor/rendering.rs:62:49
[INFO] [stdout]    |
[INFO] [stdout] 62 | ...                   context.set_fill_style(&JsValue::from_str("white"));
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]    --> src/game/cursor/mod.rs:29:64
[INFO] [stdout]     |
[INFO] [stdout]  29 |     if let Some(mut network_client) = world.get_resource_mut::<NetworkClient>() {
[INFO] [stdout]     |                                             ----------------   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be sent between threads safely
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Send` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ecs::World::get_resource_mut`
[INFO] [stdout]    --> src/ecs/mod.rs:390:42
[INFO] [stdout]     |
[INFO] [stdout] 390 |     pub fn get_resource_mut<T: 'static + Send + Sync + resource::Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                          ^^^^ required by this bound in `World::get_resource_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]    --> src/game/cursor/mod.rs:29:64
[INFO] [stdout]     |
[INFO] [stdout]  29 |     if let Some(mut network_client) = world.get_resource_mut::<NetworkClient>() {
[INFO] [stdout]     |                                             ----------------   ^^^^^^^^^^^^^ `Rc<RefCell<network::ConnectionState>>` cannot be shared between threads safely
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `Rc<RefCell<network::ConnectionState>>`
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]    --> src/network/client.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct NetworkClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ecs::World::get_resource_mut`
[INFO] [stdout]    --> src/ecs/mod.rs:390:49
[INFO] [stdout]     |
[INFO] [stdout] 390 |     pub fn get_resource_mut<T: 'static + Send + Sync + resource::Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]     |                                                 ^^^^ required by this bound in `World::get_resource_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/game/cursor/mod.rs:29:64
[INFO] [stdout]      |
[INFO] [stdout]   29 |     if let Some(mut network_client) = world.get_resource_mut::<NetworkClient>() {
[INFO] [stdout]      |                                             ----------------   ^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |                                             |
[INFO] [stdout]      |                                             required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ecs::World::get_resource_mut`
[INFO] [stdout]     --> src/ecs/mod.rs:390:42
[INFO] [stdout]      |
[INFO] [stdout]  390 |     pub fn get_resource_mut<T: 'static + Send + Sync + resource::Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                          ^^^^ required by this bound in `World::get_resource_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/game/cursor/mod.rs:29:64
[INFO] [stdout]      |
[INFO] [stdout]   29 |     if let Some(mut network_client) = world.get_resource_mut::<NetworkClient>() {
[INFO] [stdout]      |                                             ----------------   ^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |                                             |
[INFO] [stdout]      |                                             required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `client::NetworkClient`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `EventTarget`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_EventTarget.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type EventTarget;
[INFO] [stdout]      |              ^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `WebSocket`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_WebSocket.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type WebSocket;
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `std::option::Option<WebSocket>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/option.rs:597:9
[INFO] [stdout] note: required because it appears within the type `client::NetworkClient`
[INFO] [stdout]     --> src/network/client.rs:55:12
[INFO] [stdout]      |
[INFO] [stdout]   55 | pub struct NetworkClient {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ecs::World::get_resource_mut`
[INFO] [stdout]     --> src/ecs/mod.rs:390:49
[INFO] [stdout]      |
[INFO] [stdout]  390 |     pub fn get_resource_mut<T: 'static + Send + Sync + resource::Resource>(&mut self) -> Option<&mut T> {
[INFO] [stdout]      |                                                 ^^^^ required by this bound in `World::get_resource_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be sent between threads safely
[INFO] [stdout]     --> src/rendering/mod.rs:28:27
[INFO] [stdout]      |
[INFO] [stdout]   28 |     world.insert_resource(renderer);
[INFO] [stdout]      |           --------------- ^^^^^^^^ `*mut u8` cannot be sent between threads safely
[INFO] [stdout]      |           |
[INFO] [stdout]      |           required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `rendering::Renderer`, the trait `Send` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `CanvasRenderingContext2d`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_CanvasRenderingContext2d.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type CanvasRenderingContext2d;
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `rendering::Renderer`
[INFO] [stdout]     --> src/rendering/mod.rs:39:12
[INFO] [stdout]      |
[INFO] [stdout]   39 | pub struct Renderer {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `ecs::World::insert_resource`
[INFO] [stdout]     --> src/ecs/mod.rs:323:41
[INFO] [stdout]      |
[INFO] [stdout]  323 |     pub fn insert_resource<T: 'static + Send + Sync + resource::Resource>(&mut self, resource: T) {
[INFO] [stdout]      |                                         ^^^^ required by this bound in `World::insert_resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut u8` cannot be shared between threads safely
[INFO] [stdout]     --> src/rendering/mod.rs:28:27
[INFO] [stdout]      |
[INFO] [stdout]   28 |     world.insert_resource(renderer);
[INFO] [stdout]      |           --------------- ^^^^^^^^ `*mut u8` cannot be shared between threads safely
[INFO] [stdout]      |           |
[INFO] [stdout]      |           required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `rendering::Renderer`, the trait `Sync` is not implemented for `*mut u8`
[INFO] [stdout] note: required because it appears within the type `PhantomData<*mut u8>`
[INFO] [stdout]     --> /rustc/b28cc4eb48a6415b914e8ad0308be255ff8d73ed/library/core/src/marker.rs:811:11
[INFO] [stdout] note: required because it appears within the type `wasm_bindgen::JsValue`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/wasm-bindgen-0.2.100/src/lib.rs:135:12
[INFO] [stdout]      |
[INFO] [stdout]  135 | pub struct JsValue {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] note: required because it appears within the type `js_sys::Object`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/js-sys-0.3.77/src/lib.rs:3445:14
[INFO] [stdout]      |
[INFO] [stdout] 3445 |     pub type Object;
[INFO] [stdout]      |              ^^^^^^
[INFO] [stdout] note: required because it appears within the type `CanvasRenderingContext2d`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.77/src/features/gen_CanvasRenderingContext2d.rs:14:14
[INFO] [stdout]      |
[INFO] [stdout]   14 |     pub type CanvasRenderingContext2d;
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `rendering::Renderer`
[INFO] [stdout]     --> src/rendering/mod.rs:39:12
[INFO] [stdout]      |
[INFO] [stdout]   39 | pub struct Renderer {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `ecs::World::insert_resource`
[INFO] [stdout]     --> src/ecs/mod.rs:323:48
[INFO] [stdout]      |
[INFO] [stdout]  323 |     pub fn insert_resource<T: 'static + Send + Sync + resource::Resource>(&mut self, resource: T) {
[INFO] [stdout]      |                                                ^^^^ required by this bound in `World::insert_resource`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0614]: type `network::ConnectionState` cannot be dereferenced
[INFO] [stdout]    --> src/network/client.rs:642:20
[INFO] [stdout]     |
[INFO] [stdout] 642 |         assert_eq!(*client.get_connection_state(), ConnectionState::Disconnected);
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't be dereferenced
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated function or constant named `Disconnected` found for struct `network::ConnectionState` in the current scope
[INFO] [stdout]    --> src/network/client.rs:642:69
[INFO] [stdout]     |
[INFO] [stdout] 642 |         assert_eq!(*client.get_connection_state(), ConnectionState::Disconnected);
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^ associated function or constant not found in `network::ConnectionState`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/network/mod.rs:39:1
[INFO] [stdout]     |
[INFO] [stdout]  39 | pub struct ConnectionState {
[INFO] [stdout]     | -------------------------- associated function or constant `Disconnected` not found for this struct
[INFO] [stdout]     |
[INFO] [stdout] help: there is an associated function `disconnected` with a similar name
[INFO] [stdout]    --> src/network/mod.rs:71:5
[INFO] [stdout]     |
[INFO] [stdout]  71 |     pub fn disconnected() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/network/compression_system.rs:417:24
[INFO] [stdout]     |
[INFO] [stdout] 417 |         let snapshot = EntitySnapshot::new(1)
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^--- argument #2 of type `f64` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/messages.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn new(entity_id: u32, timestamp: f64) -> Self {
[INFO] [stdout]     |            ^^^                 --------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 417 |         let snapshot = EntitySnapshot::new(1, /* f64 */)
[INFO] [stdout]     |                                             +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `with_position` found for struct `messages::EntitySnapshot` in the current scope
[INFO] [stdout]    --> src/network/compression_system.rs:418:14
[INFO] [stdout]     |
[INFO] [stdout] 417 |           let snapshot = EntitySnapshot::new(1)
[INFO] [stdout]     |  ________________________-
[INFO] [stdout] 418 | |             .with_position([123.45678, 456.78912, 789.12345])
[INFO] [stdout]     | |             -^^^^^^^^^^^^^ method not found in `messages::EntitySnapshot`
[INFO] [stdout]     | |_____________|
[INFO] [stdout]     |
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/network/messages.rs:113:1
[INFO] [stdout]     |
[INFO] [stdout] 113 |   pub struct EntitySnapshot {
[INFO] [stdout]     |   ------------------------- method `with_position` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `position` on type `messages::EntitySnapshot`
[INFO] [stdout]    --> src/network/compression_system.rs:426:39
[INFO] [stdout]     |
[INFO] [stdout] 426 |         if let Some(pos) = compressed.position {
[INFO] [stdout]     |                                       ^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `entity_id`, `components`, `timestamp`, `owner_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `velocity` on type `messages::EntitySnapshot`
[INFO] [stdout]    --> src/network/compression_system.rs:432:39
[INFO] [stdout]     |
[INFO] [stdout] 432 |         if let Some(vel) = compressed.velocity {
[INFO] [stdout]     |                                       ^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `entity_id`, `components`, `timestamp`, `owner_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `position` on type `messages::EntitySnapshot`
[INFO] [stdout]    --> src/network/compression_system.rs:443:43
[INFO] [stdout]     |
[INFO] [stdout] 443 |         if let Some(pos) = max_compressed.position {
[INFO] [stdout]     |                                           ^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `entity_id`, `components`, `timestamp`, `owner_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/cursor/rendering.rs:38:37
[INFO] [stdout]    |
[INFO] [stdout] 38 | ...                   let mut query = world.query::<MouseCursorComponent>();
[INFO] [stdout]    |                           ----^^^^^
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/cursor/rendering.rs:38:37
[INFO] [stdout]    |
[INFO] [stdout] 38 | ...                   let mut query = world.query::<MouseCursorComponent>();
[INFO] [stdout]    |                           ----^^^^^
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ecs_wasm_game3` (lib) due to 24 previous errors; 18 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/network/network_status.rs:472:13
[INFO] [stdout]     |
[INFO] [stdout] 472 |         let now = Date::now() + 3000.0;
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/network/network_status.rs:488:13
[INFO] [stdout]     |
[INFO] [stdout] 488 |         for i in 0..5 {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0277, E0599, E0609, E0614.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ecs_wasm_game3` (lib test) due to 36 previous errors; 24 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "a4f64148a47404e0b112906dd63f9495aa48b989cfa66243e3124fc99d26f86e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a4f64148a47404e0b112906dd63f9495aa48b989cfa66243e3124fc99d26f86e", kill_on_drop: false }`
[INFO] [stdout] a4f64148a47404e0b112906dd63f9495aa48b989cfa66243e3124fc99d26f86e
