[INFO] cloning repository https://github.com/Exopteron/opengl-classic-client
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Exopteron/opengl-classic-client" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FExopteron%2Fopengl-classic-client", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FExopteron%2Fopengl-classic-client'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 56b9fba2f61dc672781f92ae18e9108160088bed
[INFO] checking Exopteron/opengl-classic-client against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FExopteron%2Fopengl-classic-client" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Exopteron/opengl-classic-client
[INFO] finished tweaking git repo https://github.com/Exopteron/opengl-classic-client
[INFO] tweaked toml for git repo https://github.com/Exopteron/opengl-classic-client written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Exopteron/opengl-classic-client on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Exopteron/opengl-classic-client 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded named-binary-tag v0.6.0
[INFO] [stderr]   Downloaded redox_users v0.4.2
[INFO] [stderr]   Downloaded crossbeam-channel v0.5.3
[INFO] [stderr]   Downloaded crossbeam-queue v0.3.5
[INFO] [stderr]   Downloaded glutin v0.27.0
[INFO] [stderr]   Downloaded glam v0.20.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 913c23319269e53703ef971c844ed964fd1f61da3464d24f6d9c03a7cda02c64
[INFO] running `Command { std: "docker" "start" "-a" "913c23319269e53703ef971c844ed964fd1f61da3464d24f6d9c03a7cda02c64", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "913c23319269e53703ef971c844ed964fd1f61da3464d24f6d9c03a7cda02c64", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "913c23319269e53703ef971c844ed964fd1f61da3464d24f6d9c03a7cda02c64", kill_on_drop: false }`
[INFO] [stdout] 913c23319269e53703ef971c844ed964fd1f61da3464d24f6d9c03a7cda02c64
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6b818ff1e848d9b0abcb9383048be38aa562fd4a2d18b04548c278db7334bfb4
[INFO] running `Command { std: "docker" "start" "-a" "6b818ff1e848d9b0abcb9383048be38aa562fd4a2d18b04548c278db7334bfb4", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.120
[INFO] [stderr]    Compiling xml-rs v0.8.4
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling syn v1.0.89
[INFO] [stderr]     Checking smallvec v1.8.0
[INFO] [stderr]    Compiling log v0.4.14
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.8
[INFO] [stderr]    Compiling wayland-sys v0.28.6
[INFO] [stderr]     Checking libloading v0.7.3
[INFO] [stderr]     Checking crossbeam-channel v0.5.3
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]     Checking lock_api v0.4.6
[INFO] [stderr]     Checking scoped-tls v1.0.0
[INFO] [stderr]     Checking dlib v0.5.0
[INFO] [stderr]     Checking downcast-rs v1.2.0
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling miniz_oxide v0.4.4
[INFO] [stderr]    Compiling crossbeam-queue v0.3.5
[INFO] [stderr]     Checking crossbeam-deque v0.8.1
[INFO] [stderr]     Checking ttf-parser v0.6.2
[INFO] [stderr]    Compiling nix v0.18.0
[INFO] [stderr]    Compiling wayland-scanner v0.28.6
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking nom v7.1.1
[INFO] [stderr]    Compiling x11-dl v2.19.1
[INFO] [stderr]    Compiling rayon v1.5.1
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.5
[INFO] [stderr]    Compiling cmake v0.1.48
[INFO] [stderr]     Checking nix v0.20.0
[INFO] [stderr]     Checking dirs-sys v0.3.7
[INFO] [stderr]     Checking num_cpus v1.13.1
[INFO] [stderr]     Checking dirs v4.0.0
[INFO] [stderr]     Checking rayon-core v1.9.1
[INFO] [stderr]     Checking xdg v2.4.1
[INFO] [stderr]     Checking owned_ttf_parser v0.6.0
[INFO] [stderr]     Checking rusttype v0.9.2
[INFO] [stderr]    Compiling wayland-client v0.28.6
[INFO] [stderr]    Compiling wayland-protocols v0.28.6
[INFO] [stderr]     Checking libloading v0.6.7
[INFO] [stderr]    Compiling parking_lot_core v0.9.1
[INFO] [stderr]    Compiling serde v1.0.136
[INFO] [stderr]     Checking adler32 v1.2.0
[INFO] [stderr]     Checking raw-window-handle v0.4.2
[INFO] [stderr]     Checking xcursor v0.3.4
[INFO] [stderr]     Checking dlib v0.4.2
[INFO] [stderr]     Checking parking_lot_core v0.8.5
[INFO] [stderr]     Checking crossbeam v0.8.1
[INFO] [stderr]     Checking andrew v0.3.1
[INFO] [stderr]    Compiling freetype-sys v0.13.1
[INFO] [stderr]     Checking memmap2 v0.1.0
[INFO] [stderr]     Checking getrandom v0.2.5
[INFO] [stderr]     Checking mio v0.7.14
[INFO] [stderr]    Compiling glutin_glx_sys v0.1.7
[INFO] [stderr]    Compiling glutin_egl_sys v0.1.5
[INFO] [stderr]    Compiling num-iter v0.1.42
[INFO] [stderr]    Compiling num-rational v0.3.2
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]    Compiling futures-core v0.3.21
[INFO] [stderr]    Compiling winit v0.25.0
[INFO] [stderr]     Checking weezl v0.1.5
[INFO] [stderr]    Compiling ahash v0.7.6
[INFO] [stderr]     Checking calloop v0.6.5
[INFO] [stderr]     Checking mio-misc v1.2.2
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking raw-window-handle v0.3.4
[INFO] [stderr]     Checking miniz_oxide v0.3.7
[INFO] [stderr]     Checking deflate v0.8.6
[INFO] [stderr]     Checking wayland-commons v0.28.6
[INFO] [stderr]     Checking shared_library v0.1.9
[INFO] [stderr]    Compiling gl v0.14.0
[INFO] [stderr]     Checking jpeg-decoder v0.1.22
[INFO] [stderr]     Checking regex-syntax v0.6.25
[INFO] [stderr]    Compiling anyhow v1.0.56
[INFO] [stderr]    Compiling num-derive v0.2.5
[INFO] [stderr]     Checking tiff v0.6.1
[INFO] [stderr]     Checking png v0.16.8
[INFO] [stderr]    Compiling pin-project-internal v1.0.10
[INFO] [stderr]    Compiling tokio-macros v1.7.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.30
[INFO] [stderr]     Checking wayland-cursor v0.28.6
[INFO] [stderr]     Checking regex v1.5.5
[INFO] [stderr]     Checking wayland-egl v0.28.6
[INFO] [stderr]    Compiling enum-iterator-derive v0.7.0
[INFO] [stderr]     Checking gif v0.11.3
[INFO] [stderr]     Checking osmesa-sys v0.1.2
[INFO] [stderr]     Checking parking_lot v0.12.0
[INFO] [stderr]     Checking pin-project v1.0.10
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking flate2 v1.0.22
[INFO] [stderr]     Checking mio v0.8.2
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking signal-hook-registry v1.4.0
[INFO] [stderr]     Checking socket2 v0.4.4
[INFO] [stderr]     Checking time v0.1.43
[INFO] [stderr]     Checking spin v0.9.2
[INFO] [stderr]     Checking bytemuck v1.8.0
[INFO] [stderr]     Checking futures-sink v0.3.21
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking named-binary-tag v0.6.0
[INFO] [stderr]     Checking image v0.23.14
[INFO] [stderr]     Checking flume v0.10.12
[INFO] [stderr]     Checking env_logger v0.9.0
[INFO] [stderr]     Checking chrono v0.4.19
[INFO] [stderr]     Checking thiserror v1.0.30
[INFO] [stderr]     Checking bytes v1.1.0
[INFO] [stderr]     Checking freetype-rs v0.26.0
[INFO] [stderr]     Checking enum-iterator v0.7.0
[INFO] [stderr]    Compiling serde_derive v1.0.136
[INFO] [stderr]    Compiling variant_count v1.1.0
[INFO] [stderr]     Checking tokio v1.17.0
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking glam v0.20.2
[INFO] [stderr]     Checking smithay-client-toolkit v0.12.3
[INFO] [stderr]     Checking glutin v0.27.0
[INFO] [stderr]     Checking exoglgame v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]   --> src/game/world/mod.rs:44:51
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, FromPrimitive, ToPrimitive, IntoEnumIterator)]
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a derive macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `FromPrimitive` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = help: the derive macro `FromPrimitive` may come from an old version of the `num_derive` crate, try updating your dependency with `cargo update -p num_derive`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout]    = note: this warning originates in the derive macro `FromPrimitive` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]   --> src/game/world/mod.rs:44:66
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, FromPrimitive, ToPrimitive, IntoEnumIterator)]
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a derive macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `ToPrimitive` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = help: the derive macro `ToPrimitive` may come from an old version of the `num_derive` crate, try updating your dependency with `cargo update -p num_derive`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the derive macro `ToPrimitive` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cell::RefCell` and `rc::Rc`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{rc::Rc, cell::RefCell};
[INFO] [stdout]   |           ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Event` and `VirtualKeyCode`
[INFO] [stdout]  --> src/main.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     event::{Event, VirtualKeyCode},
[INFO] [stdout]   |             ^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `engine::GameEngine` and `render::stage::RenderStageObj`
[INFO] [stdout]   --> src/main.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::{game::{engine::GameEngine, CubeGame}, render::stage::RenderStageObj, util::logging};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `marker::PhantomData`
[INFO] [stdout]  --> src/game/engine/mod.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{rc::Rc, cell::RefCell, marker::PhantomData, time::Duration};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RenderStageObj`
[INFO] [stdout]  --> src/game/engine/mod.rs:5:29
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::render::{stage::{RenderStageObj, RenderStage}, RenderEngine, window::GameWindow};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::event::KeyboardInput`
[INFO] [stdout]  --> src/game/engine/input/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use glutin::event::KeyboardInput;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Vec4` and `const_vec2`
[INFO] [stdout]  --> src/game/mesh/database.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glam::{vec4, Vec4, Vec2, vec2, const_vec2};
[INFO] [stdout]   |                  ^^^^              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::anyhow`
[INFO] [stdout]  --> src/game/network/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use anyhow::anyhow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::io::VarInt`
[INFO] [stdout]  --> src/game/network/codec.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::io::VarInt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/game/network/io.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{anyhow, bail, Context};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EncoderTrap`, `Encoding`, and `all::UTF_16BE`
[INFO] [stdout]  --> src/game/network/io.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use encoding::{all::UTF_16BE, EncoderTrap, Encoding};
[INFO] [stdout]   |                ^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Serialize` and `de::DeserializeOwned`
[INFO] [stdout]  --> src/game/network/io.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{de::DeserializeOwned, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FromIterator`, `collections::BTreeMap`, and `fmt::Display`
[INFO] [stdout]   --> src/game/network/io.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     collections::BTreeMap,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     convert::{TryFrom, TryInto},
[INFO] [stdout] 11 |     fmt::Display,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 12 |     io::{self, Cursor, Read, Write},
[INFO] [stdout] 13 |     iter::{self, FromIterator},
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `packets`
[INFO] [stdout]   --> src/game/network/packets.rs:86:16
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub(crate) use packets;
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `discriminant_to_literal`
[INFO] [stdout]   --> src/game/network/packets.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 | macro_rules! discriminant_to_literal {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `def_enum`
[INFO] [stdout]   --> src/game/network/packets.rs:96:14
[INFO] [stdout]    |
[INFO] [stdout] 96 | macro_rules! def_enum {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `packet_enum`
[INFO] [stdout]    --> src/game/network/packets.rs:275:16
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub(crate) use packet_enum;
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]    --> src/game/network/packets.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 | use std::ops::Deref;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::Writeable`
[INFO] [stdout]    --> src/game/network/packets.rs:293:5
[INFO] [stdout]     |
[INFO] [stdout] 293 | use super::Writeable;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Debug`
[INFO] [stdout]  --> src/game/network/client/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Debug;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write`, `net::SocketAddr`, and `sync::Arc`
[INFO] [stdout]  --> src/game/network/client/worker.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::{Debug, Write}, io, net::SocketAddr, sync::Arc, time::Duration};
[INFO] [stdout]   |                        ^^^^^       ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any`
[INFO] [stdout]  --> src/game/network/client/handle.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::any;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mat4` and `vec4`
[INFO] [stdout]  --> src/game/render_stages/world.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | use glam::{vec4, Vec4, Mat4, Vec2};
[INFO] [stdout]   |            ^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockPosition`, `Block`, and `FlatWorldGenerator`
[INFO] [stdout]  --> src/game/render_stages/world.rs:5:175
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...m}}, game::{CubeGame, world::{World, FlatWorldGenerator, ChunkPosition, Block, BlockPosition}, mesh::MeshBuilder, texture::Terrain...
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^^^^^                 ^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mat3` and `Mat4`
[INFO] [stdout]  --> src/game/render_stages/sky.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use glam::{vec4, Vec4, Mat4, Mat3};
[INFO] [stdout]   |                        ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mem`
[INFO] [stdout]  --> src/game/render_stages/text.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{mem, ffi::c_void};
[INFO] [stdout]   |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mat3`, `Vec4`, `vec3`, and `vec4`
[INFO] [stdout]  --> src/game/render_stages/text.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | use glam::{vec4, Vec4, Mat4, Mat3, Vec2, IVec2, ivec2, Vec3, vec2, vec3};
[INFO] [stdout]   |            ^^^^  ^^^^        ^^^^                                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/game/texture/mod.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLockReadGuard`
[INFO] [stdout]  --> src/game/world/mod.rs:1:42
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{io::Write, sync::{RwLock, Arc, RwLockReadGuard}};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Mul` and `ptr`
[INFO] [stdout]  --> src/render/opengl/buffer/multi.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{ops::Mul, mem, ptr};
[INFO] [stdout]   |           ^^^^^^^^       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mem` and `ptr`
[INFO] [stdout]  --> src/render/opengl/context.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{ptr, ffi::c_void, mem, pin::Pin};
[INFO] [stdout]   |           ^^^               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RefMut`, `any::Any`, and `sync::Arc`
[INFO] [stdout]  --> src/render/stage.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{cell::{RefCell, RefMut}, rc::Rc, any::Any, sync::Arc};
[INFO] [stdout]   |                           ^^^^^^           ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/network/client/handshake.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let mut world_size_x: i16;
[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/network/client/handshake.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let mut world_size_y: i16;
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/network/client/handshake.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut world_size_z: i16;
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]   --> src/game/world/mod.rs:44:51
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, FromPrimitive, ToPrimitive, IntoEnumIterator)]
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a derive macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `FromPrimitive` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = help: the derive macro `FromPrimitive` may come from an old version of the `num_derive` crate, try updating your dependency with `cargo update -p num_derive`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout]    = note: this warning originates in the derive macro `FromPrimitive` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]   --> src/game/world/mod.rs:44:66
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, FromPrimitive, ToPrimitive, IntoEnumIterator)]
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a derive macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `ToPrimitive` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = help: the derive macro `ToPrimitive` may come from an old version of the `num_derive` crate, try updating your dependency with `cargo update -p num_derive`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the derive macro `ToPrimitive` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cell::RefCell` and `rc::Rc`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{rc::Rc, cell::RefCell};
[INFO] [stdout]   |           ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Event` and `VirtualKeyCode`
[INFO] [stdout]  --> src/main.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     event::{Event, VirtualKeyCode},
[INFO] [stdout]   |             ^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `engine::GameEngine` and `render::stage::RenderStageObj`
[INFO] [stdout]   --> src/main.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::{game::{engine::GameEngine, CubeGame}, render::stage::RenderStageObj, util::logging};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `marker::PhantomData`
[INFO] [stdout]  --> src/game/engine/mod.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{rc::Rc, cell::RefCell, marker::PhantomData, time::Duration};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RenderStageObj`
[INFO] [stdout]  --> src/game/engine/mod.rs:5:29
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::render::{stage::{RenderStageObj, RenderStage}, RenderEngine, window::GameWindow};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::event::KeyboardInput`
[INFO] [stdout]  --> src/game/engine/input/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use glutin::event::KeyboardInput;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Vec4` and `const_vec2`
[INFO] [stdout]  --> src/game/mesh/database.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glam::{vec4, Vec4, Vec2, vec2, const_vec2};
[INFO] [stdout]   |                  ^^^^              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::anyhow`
[INFO] [stdout]  --> src/game/network/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use anyhow::anyhow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::io::VarInt`
[INFO] [stdout]  --> src/game/network/codec.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::io::VarInt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/game/network/io.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{anyhow, bail, Context};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EncoderTrap`, `Encoding`, and `all::UTF_16BE`
[INFO] [stdout]  --> src/game/network/io.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use encoding::{all::UTF_16BE, EncoderTrap, Encoding};
[INFO] [stdout]   |                ^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Serialize` and `de::DeserializeOwned`
[INFO] [stdout]  --> src/game/network/io.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{de::DeserializeOwned, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FromIterator`, `collections::BTreeMap`, and `fmt::Display`
[INFO] [stdout]   --> src/game/network/io.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     collections::BTreeMap,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     convert::{TryFrom, TryInto},
[INFO] [stdout] 11 |     fmt::Display,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 12 |     io::{self, Cursor, Read, Write},
[INFO] [stdout] 13 |     iter::{self, FromIterator},
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `packets`
[INFO] [stdout]   --> src/game/network/packets.rs:86:16
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub(crate) use packets;
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `discriminant_to_literal`
[INFO] [stdout]   --> src/game/network/packets.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 | macro_rules! discriminant_to_literal {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `def_enum`
[INFO] [stdout]   --> src/game/network/packets.rs:96:14
[INFO] [stdout]    |
[INFO] [stdout] 96 | macro_rules! def_enum {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `packet_enum`
[INFO] [stdout]    --> src/game/network/packets.rs:275:16
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub(crate) use packet_enum;
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]    --> src/game/network/packets.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 | use std::ops::Deref;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::Writeable`
[INFO] [stdout]    --> src/game/network/packets.rs:293:5
[INFO] [stdout]     |
[INFO] [stdout] 293 | use super::Writeable;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Debug`
[INFO] [stdout]  --> src/game/network/client/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Debug;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write`, `net::SocketAddr`, and `sync::Arc`
[INFO] [stdout]  --> src/game/network/client/worker.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::{Debug, Write}, io, net::SocketAddr, sync::Arc, time::Duration};
[INFO] [stdout]   |                        ^^^^^       ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any`
[INFO] [stdout]  --> src/game/network/client/handle.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::any;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mat4` and `vec4`
[INFO] [stdout]  --> src/game/render_stages/world.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | use glam::{vec4, Vec4, Mat4, Vec2};
[INFO] [stdout]   |            ^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockPosition`, `Block`, and `FlatWorldGenerator`
[INFO] [stdout]  --> src/game/render_stages/world.rs:5:175
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...m}}, game::{CubeGame, world::{World, FlatWorldGenerator, ChunkPosition, Block, BlockPosition}, mesh::MeshBuilder, texture::Terrain...
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^^^^^                 ^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mat3` and `Mat4`
[INFO] [stdout]  --> src/game/render_stages/sky.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use glam::{vec4, Vec4, Mat4, Mat3};
[INFO] [stdout]   |                        ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mem`
[INFO] [stdout]  --> src/game/render_stages/text.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{mem, ffi::c_void};
[INFO] [stdout]   |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mat3`, `Vec4`, `vec3`, and `vec4`
[INFO] [stdout]  --> src/game/render_stages/text.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | use glam::{vec4, Vec4, Mat4, Mat3, Vec2, IVec2, ivec2, Vec3, vec2, vec3};
[INFO] [stdout]   |            ^^^^  ^^^^        ^^^^                                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/game/texture/mod.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLockReadGuard`
[INFO] [stdout]  --> src/game/world/mod.rs:1:42
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{io::Write, sync::{RwLock, Arc, RwLockReadGuard}};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Mul` and `ptr`
[INFO] [stdout]  --> src/render/opengl/buffer/multi.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{ops::Mul, mem, ptr};
[INFO] [stdout]   |           ^^^^^^^^       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/mod.rs:87:21
[INFO] [stdout]    |
[INFO] [stdout] 87 |                 let mut current_time = Instant::now();
[INFO] [stdout]    |                     ----^^^^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mem` and `ptr`
[INFO] [stdout]  --> src/render/opengl/context.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{ptr, ffi::c_void, mem, pin::Pin};
[INFO] [stdout]   |           ^^^               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/mod.rs:114:13
[INFO] [stdout]     |
[INFO] [stdout] 114 |         let mut world = package.world;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/mod.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut world = World::from_file("big.cw").unwrap();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RefMut`, `any::Any`, and `sync::Arc`
[INFO] [stdout]  --> src/render/stage.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{cell::{RefCell, RefMut}, rc::Rc, any::Any, sync::Arc};
[INFO] [stdout]   |                           ^^^^^^           ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/game/network/codec.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{Cursor, Read};
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Write`
[INFO] [stdout]  --> src/game/world/mod.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{io::Write, sync::{RwLock, Arc, RwLockReadGuard}};
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/game/network/client/handshake.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{Cursor, Write, Read};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/game/mesh/mod.rs:108:24
[INFO] [stdout]     |
[INFO] [stdout] 108 |                     if let MeshBuilderTask::BuildChunk { world, position, sender } = m {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> src/game/mesh/mod.rs:163:17
[INFO] [stdout]     |
[INFO] [stdout] 163 |             let len = len - self.tasks.len();
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `length`
[INFO] [stdout]   --> src/game/network/codec.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let length = self.staging_buf.len() as i32;
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_index`
[INFO] [stdout]   --> src/game/network/codec.rs:54:13
[INFO] [stdout]    |
[INFO] [stdout] 54 |         let start_index = self.received_buf.len();
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/game/network/client/worker.rs:76:24
[INFO] [stdout]    |
[INFO] [stdout] 76 |             if let Err(e) = result {
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/world.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |         let mut start = Instant::now();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]   --> src/game/render_stages/world.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |         let mut start = Instant::now();
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]   --> src/game/render_stages/world.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |         let end = Instant::now();
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/world.rs:35:17
[INFO] [stdout]    |
[INFO] [stdout] 35 |             let mut mesh = MeshBuilder::default();
[INFO] [stdout]    |                 ----^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/world.rs:46:17
[INFO] [stdout]    |
[INFO] [stdout] 46 |             let mut vbo = VertexBuffer::new(gl::DYNAMIC_DRAW);
[INFO] [stdout]    |                 ----^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/world.rs:47:17
[INFO] [stdout]    |
[INFO] [stdout] 47 |             let mut texcoords = VertexBuffer::new(gl::DYNAMIC_DRAW);
[INFO] [stdout]    |                 ----^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]   --> src/game/render_stages/world.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn init(w: &mut GameWindow) -> Self {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]   --> src/game/render_stages/world.rs:65:46
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn run(&mut self, engine: &mut CubeGame, window: &mut crate::render::window::GameWindow) -> anyhow::Result<()> {
[INFO] [stdout]    |                                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]   --> src/game/render_stages/sky.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn init(w: &mut GameWindow) -> Self {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/text.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let mut vertices = VertexBuffer::new(gl::DYNAMIC_DRAW);
[INFO] [stdout]    |                 ----^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/text.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let mut texcoords = VertexBuffer::new(gl::DYNAMIC_DRAW);
[INFO] [stdout]    |                 ----^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]   --> src/game/render_stages/text.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn init(w: &mut GameWindow) -> Self {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/render_stages/text.rs:110:87
[INFO] [stdout]     |
[INFO] [stdout] 110 |     unsafe fn render_text(&mut self, engine: &mut CubeGame, text: String, mut x: f32, mut y: f32, scale: f32, color: Vec3) {
[INFO] [stdout]     |                                                                                       ----^
[INFO] [stdout]     |                                                                                       |
[INFO] [stdout]     |                                                                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/game/render_stages/text.rs:110:38
[INFO] [stdout]     |
[INFO] [stdout] 110 |     unsafe fn render_text(&mut self, engine: &mut CubeGame, text: String, mut x: f32, mut y: f32, scale: f32, color: Vec3) {
[INFO] [stdout]     |                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/world/mod.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let mut world = root_tag.get_i8_vec("BlockArray").ok()?.to_owned();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `spawn_x`
[INFO] [stdout]   --> src/game/world/mod.rs:94:13
[INFO] [stdout]    |
[INFO] [stdout] 94 |         let spawn_x = spawn.get_i16("X").ok()?;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_spawn_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `spawn_y`
[INFO] [stdout]   --> src/game/world/mod.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let spawn_y = spawn.get_i16("Y").ok()?;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_spawn_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `spawn_z`
[INFO] [stdout]   --> src/game/world/mod.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let spawn_z = spawn.get_i16("Z").ok()?;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_spawn_z`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/game/mod.rs:104:40
[INFO] [stdout]     |
[INFO] [stdout] 104 |         engine.add_event_handler(move |engine, window, cube, event| {
[INFO] [stdout]     |                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]    --> src/game/mod.rs:104:48
[INFO] [stdout]     |
[INFO] [stdout] 104 |         engine.add_event_handler(move |engine, window, cube, event| {
[INFO] [stdout]     |                                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]   --> src/game/mod.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |         engine.add_event_handler(move |engine, window, cube, event| {
[INFO] [stdout]    |                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]   --> src/game/mod.rs:70:35
[INFO] [stdout]    |
[INFO] [stdout] 70 |         engine.add_event_handler(|engine, window, cube, event| {
[INFO] [stdout]    |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]   --> src/game/mod.rs:65:35
[INFO] [stdout]    |
[INFO] [stdout] 65 |         engine.add_event_handler(|engine, window, cube, event| {
[INFO] [stdout]    |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]   --> src/game/mod.rs:65:43
[INFO] [stdout]    |
[INFO] [stdout] 65 |         engine.add_event_handler(|engine, window, cube, event| {
[INFO] [stdout]    |                                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cube`
[INFO] [stdout]   --> src/game/mod.rs:57:51
[INFO] [stdout]    |
[INFO] [stdout] 57 |         engine.add_event_handler(|engine, window, cube, event| {
[INFO] [stdout]    |                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_cube`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `world`
[INFO] [stdout]    --> src/game/mod.rs:114:13
[INFO] [stdout]     |
[INFO] [stdout] 114 |         let mut world = package.world;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/render/window/mod.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let mut context = GlContext::new(gl_window);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/render/mod.rs:40:16
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn run(mut self, engine: Rc<RefCell<E>>, mut event_handler: impl FnMut(&mut GameWindow, Event<()>) + 'static) {
[INFO] [stdout]    |                ----^^^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]   --> src/main.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |     fn run(&mut self, engine: &mut CubeGame, _window: &mut render::window::GameWindow) -> anyhow::Result<()> {
[INFO] [stdout]    |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |     let mut engine = CubeGame::new(PhysicalSize::new(1024, 768)).await;
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `init` is never used
[INFO] [stdout]   --> src/main.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl TestRenderer {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 23 |     fn init(_window: &mut render::window::GameWindow) -> Self {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `VERTEX_SHADER` and `FRAGMENT_SHADER` are never used
[INFO] [stdout]   --> src/main.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl TestRenderer {
[INFO] [stdout]    | ----------------- associated constants in this implementation
[INFO] [stdout] 56 |     const VERTEX_SHADER: &'static str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     const FRAGMENT_SHADER: &'static str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `database` is never read
[INFO] [stdout]   --> src/game/mesh/mod.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct MeshBuilder {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 93 |     database: Arc<BlockMeshDatabase>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clone_with_settings` and `data_uncompressed` are never used
[INFO] [stdout]   --> src/game/network/codec.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Codec {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn clone_with_settings(&self) -> Codec {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn data_uncompressed(&mut self) -> (usize, &[u8]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ShortPrefixedVec` is never used
[INFO] [stdout]    --> src/game/network/io.rs:386:10
[INFO] [stdout]     |
[INFO] [stdout] 386 | pub type ShortPrefixedVec<'a, T> = LengthPrefixedVec<'a, u16, T>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `VariantOf` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:279:11
[INFO] [stdout]     |
[INFO] [stdout] 279 | pub trait VariantOf<Enum> {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `username` is never read
[INFO] [stdout]   --> src/game/network/client/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Client {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read` is never used
[INFO] [stdout]   --> src/game/network/client/mod.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Client {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub async fn read(&mut self) -> anyhow::Result<ServerPlayPacket> {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `packets_to_send` and `received_packets` are never used
[INFO] [stdout]   --> src/game/network/client/worker.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl ClientWorker {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn packets_to_send(&self) -> Sender<ClientPlayPacket> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn received_packets(&self) -> Receiver<ServerPlayPacket> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disconnected_message` is never used
[INFO] [stdout]    --> src/game/network/client/worker.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn disconnected_message(e: anyhow::Error) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:213:32
[INFO] [stdout]     |
[INFO] [stdout] 203 |           impl $ident {
[INFO] [stdout]     |           ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |                           pub fn name(&self) -> String {
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/game/network/client/packet.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout]  72 | / packet_enum!(ClientPlayPacket {
[INFO] [stdout]  73 | |     0x00 = PlayerIdentification,
[INFO] [stdout]  74 | |     0x08 = PositionAndOrientation,
[INFO] [stdout]  75 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `packet_enum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:213:32
[INFO] [stdout]     |
[INFO] [stdout] 203 |           impl $ident {
[INFO] [stdout]     |           ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |                           pub fn name(&self) -> String {
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/game/network/client/packet.rs:77:1
[INFO] [stdout]     |
[INFO] [stdout]  77 | / packet_enum!(ServerPlayPacket {
[INFO] [stdout]  78 | |     0x01 = Ping,
[INFO] [stdout]  79 | |     0x0D = Message,
[INFO] [stdout]  80 | |     0x07 = SpawnPlayer,
[INFO] [stdout]  81 | |     0x08 = PlayerTeleport,
[INFO] [stdout]  82 | |     0x06 = SetBlock
[INFO] [stdout]  83 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `packet_enum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:213:32
[INFO] [stdout]     |
[INFO] [stdout] 203 |           impl $ident {
[INFO] [stdout]     |           ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |                           pub fn name(&self) -> String {
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/game/network/client/packet.rs:85:1
[INFO] [stdout]     |
[INFO] [stdout]  85 | / packet_enum!(ServerLoginPacket {
[INFO] [stdout]  86 | |     0x00 = ServerIdentification,
[INFO] [stdout]  87 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `packet_enum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:213:32
[INFO] [stdout]     |
[INFO] [stdout] 203 |           impl $ident {
[INFO] [stdout]     |           ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |                           pub fn name(&self) -> String {
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/game/network/client/packet.rs:89:1
[INFO] [stdout]     |
[INFO] [stdout]  89 | / packet_enum!(ServerWorldPacket {
[INFO] [stdout]  90 | |     0x02 = LevelInitialize,
[INFO] [stdout]  91 | |     0x03 = LevelDataChunk,
[INFO] [stdout]  92 | |     0x04 = LevelFinalize
[INFO] [stdout]  93 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `packet_enum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sky` is never read
[INFO] [stdout]   --> src/game/render_stages/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct RenderManager {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 10 |     pub sky: Rc<RefCell<SkyRenderer>>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIZE` is never used
[INFO] [stdout]   --> src/game/render_stages/world.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |             const SIZE: f32 = 2.0;
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/game/world/mod.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl World {
[INFO] [stdout]     | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn new(generator: impl WorldGenerator, width: usize, height: usize, length: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WorldGenerator` is never used
[INFO] [stdout]    --> src/game/world/mod.rs:188:11
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub trait WorldGenerator {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FlatWorldGenerator` is never constructed
[INFO] [stdout]    --> src/game/world/mod.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub struct FlatWorldGenerator {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/game/world/mod.rs:200:12
[INFO] [stdout]     |
[INFO] [stdout] 199 | impl FlatWorldGenerator {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 200 |     pub fn new(height: usize, below: u8, surface: u8, above: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `len` is never read
[INFO] [stdout]  --> src/render/opengl/buffer/multi.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct MultibufferObject {
[INFO] [stdout]   |        ----------------- field in this struct
[INFO] [stdout] 7 |     offset: usize,
[INFO] [stdout] 8 |     len: usize,
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/game/mod.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                     window.set_cursor_grabbed(!grabbed);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 61 |                     let _ = window.set_cursor_grabbed(!grabbed);
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `SPEED` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let SPEED: f32 = 3. * 1000.;
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case: `speed`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `SPEED` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:147:13
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let SPEED = SPEED * engine.delta_time().as_secs_f32();
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case: `speed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/game/world/mod.rs:44:51
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, FromPrimitive, ToPrimitive, IntoEnumIterator)]
[INFO] [stdout]    |                                                   ^------------
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   `FromPrimitive` is not local
[INFO] [stdout]    |                                                   move the `impl` block outside of this constant `_IMPL_NUM_FromPrimitive_FOR_Facing`
[INFO] [stdout] 45 | pub enum Facing {
[INFO] [stdout]    |          ------ `Facing` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `FromPrimitive` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `FromPrimitive` may come from an old version of the `num_derive` crate, try updating your dependency with `cargo update -p num_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]    = note: this warning originates in the derive macro `FromPrimitive` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/game/world/mod.rs:44:66
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, FromPrimitive, ToPrimitive, IntoEnumIterator)]
[INFO] [stdout]    |                                                                  ^----------
[INFO] [stdout]    |                                                                  |
[INFO] [stdout]    |                                                                  `ToPrimitive` is not local
[INFO] [stdout]    |                                                                  move the `impl` block outside of this constant `_IMPL_NUM_ToPrimitive_FOR_Facing`
[INFO] [stdout] 45 | pub enum Facing {
[INFO] [stdout]    |          ------ `Facing` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `ToPrimitive` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `ToPrimitive` may come from an old version of the `num_derive` crate, try updating your dependency with `cargo update -p num_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `ToPrimitive` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> src/render/opengl/buffer/multi.rs:49:94
[INFO] [stdout]    |
[INFO] [stdout] 49 |             gl::VertexAttribPointer(index as u32, val.size_per_v, val.gl_type, gl::FALSE, 0, mem::transmute(val.offset));
[INFO] [stdout]    |                                                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout]    = note: `#[warn(integer_to_ptr_transmutes)]` on by default
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 49 -             gl::VertexAttribPointer(index as u32, val.size_per_v, val.gl_type, gl::FALSE, 0, mem::transmute(val.offset));
[INFO] [stdout] 49 +             gl::VertexAttribPointer(index as u32, val.size_per_v, val.gl_type, gl::FALSE, 0, std::ptr::with_exposed_provenance::<c_void>(val.offset));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/network/client/handshake.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let mut world_size_x: i16;
[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/network/client/handshake.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let mut world_size_y: i16;
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/network/client/handshake.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut world_size_z: i16;
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/mod.rs:87:21
[INFO] [stdout]    |
[INFO] [stdout] 87 |                 let mut current_time = Instant::now();
[INFO] [stdout]    |                     ----^^^^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/mod.rs:114:13
[INFO] [stdout]     |
[INFO] [stdout] 114 |         let mut world = package.world;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/mod.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut world = World::from_file("big.cw").unwrap();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/game/network/codec.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{Cursor, Read};
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Write`
[INFO] [stdout]  --> src/game/world/mod.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{io::Write, sync::{RwLock, Arc, RwLockReadGuard}};
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/game/network/client/handshake.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{Cursor, Write, Read};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/game/mesh/mod.rs:108:24
[INFO] [stdout]     |
[INFO] [stdout] 108 |                     if let MeshBuilderTask::BuildChunk { world, position, sender } = m {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> src/game/mesh/mod.rs:163:17
[INFO] [stdout]     |
[INFO] [stdout] 163 |             let len = len - self.tasks.len();
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `length`
[INFO] [stdout]   --> src/game/network/codec.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let length = self.staging_buf.len() as i32;
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_index`
[INFO] [stdout]   --> src/game/network/codec.rs:54:13
[INFO] [stdout]    |
[INFO] [stdout] 54 |         let start_index = self.received_buf.len();
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/game/network/client/worker.rs:76:24
[INFO] [stdout]    |
[INFO] [stdout] 76 |             if let Err(e) = result {
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/world.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |         let mut start = Instant::now();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]   --> src/game/render_stages/world.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |         let mut start = Instant::now();
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]   --> src/game/render_stages/world.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |         let end = Instant::now();
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/world.rs:35:17
[INFO] [stdout]    |
[INFO] [stdout] 35 |             let mut mesh = MeshBuilder::default();
[INFO] [stdout]    |                 ----^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/world.rs:46:17
[INFO] [stdout]    |
[INFO] [stdout] 46 |             let mut vbo = VertexBuffer::new(gl::DYNAMIC_DRAW);
[INFO] [stdout]    |                 ----^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/world.rs:47:17
[INFO] [stdout]    |
[INFO] [stdout] 47 |             let mut texcoords = VertexBuffer::new(gl::DYNAMIC_DRAW);
[INFO] [stdout]    |                 ----^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]   --> src/game/render_stages/world.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn init(w: &mut GameWindow) -> Self {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]   --> src/game/render_stages/world.rs:65:46
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn run(&mut self, engine: &mut CubeGame, window: &mut crate::render::window::GameWindow) -> anyhow::Result<()> {
[INFO] [stdout]    |                                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]   --> src/game/render_stages/sky.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn init(w: &mut GameWindow) -> Self {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/text.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let mut vertices = VertexBuffer::new(gl::DYNAMIC_DRAW);
[INFO] [stdout]    |                 ----^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/render_stages/text.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let mut texcoords = VertexBuffer::new(gl::DYNAMIC_DRAW);
[INFO] [stdout]    |                 ----^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]   --> src/game/render_stages/text.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn init(w: &mut GameWindow) -> Self {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/render_stages/text.rs:110:87
[INFO] [stdout]     |
[INFO] [stdout] 110 |     unsafe fn render_text(&mut self, engine: &mut CubeGame, text: String, mut x: f32, mut y: f32, scale: f32, color: Vec3) {
[INFO] [stdout]     |                                                                                       ----^
[INFO] [stdout]     |                                                                                       |
[INFO] [stdout]     |                                                                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/game/render_stages/text.rs:110:38
[INFO] [stdout]     |
[INFO] [stdout] 110 |     unsafe fn render_text(&mut self, engine: &mut CubeGame, text: String, mut x: f32, mut y: f32, scale: f32, color: Vec3) {
[INFO] [stdout]     |                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/world/mod.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let mut world = root_tag.get_i8_vec("BlockArray").ok()?.to_owned();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `spawn_x`
[INFO] [stdout]   --> src/game/world/mod.rs:94:13
[INFO] [stdout]    |
[INFO] [stdout] 94 |         let spawn_x = spawn.get_i16("X").ok()?;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_spawn_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `spawn_y`
[INFO] [stdout]   --> src/game/world/mod.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let spawn_y = spawn.get_i16("Y").ok()?;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_spawn_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `spawn_z`
[INFO] [stdout]   --> src/game/world/mod.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let spawn_z = spawn.get_i16("Z").ok()?;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_spawn_z`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/game/mod.rs:104:40
[INFO] [stdout]     |
[INFO] [stdout] 104 |         engine.add_event_handler(move |engine, window, cube, event| {
[INFO] [stdout]     |                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]    --> src/game/mod.rs:104:48
[INFO] [stdout]     |
[INFO] [stdout] 104 |         engine.add_event_handler(move |engine, window, cube, event| {
[INFO] [stdout]     |                                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]   --> src/game/mod.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |         engine.add_event_handler(move |engine, window, cube, event| {
[INFO] [stdout]    |                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]   --> src/game/mod.rs:70:35
[INFO] [stdout]    |
[INFO] [stdout] 70 |         engine.add_event_handler(|engine, window, cube, event| {
[INFO] [stdout]    |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]   --> src/game/mod.rs:65:35
[INFO] [stdout]    |
[INFO] [stdout] 65 |         engine.add_event_handler(|engine, window, cube, event| {
[INFO] [stdout]    |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]   --> src/game/mod.rs:65:43
[INFO] [stdout]    |
[INFO] [stdout] 65 |         engine.add_event_handler(|engine, window, cube, event| {
[INFO] [stdout]    |                                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cube`
[INFO] [stdout]   --> src/game/mod.rs:57:51
[INFO] [stdout]    |
[INFO] [stdout] 57 |         engine.add_event_handler(|engine, window, cube, event| {
[INFO] [stdout]    |                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_cube`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `world`
[INFO] [stdout]    --> src/game/mod.rs:114:13
[INFO] [stdout]     |
[INFO] [stdout] 114 |         let mut world = package.world;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_world`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/render/window/mod.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let mut context = GlContext::new(gl_window);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/render/mod.rs:40:16
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn run(mut self, engine: Rc<RefCell<E>>, mut event_handler: impl FnMut(&mut GameWindow, Event<()>) + 'static) {
[INFO] [stdout]    |                ----^^^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]   --> src/main.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |     fn run(&mut self, engine: &mut CubeGame, _window: &mut render::window::GameWindow) -> anyhow::Result<()> {
[INFO] [stdout]    |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |     let mut engine = CubeGame::new(PhysicalSize::new(1024, 768)).await;
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `init` is never used
[INFO] [stdout]   --> src/main.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl TestRenderer {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 23 |     fn init(_window: &mut render::window::GameWindow) -> Self {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `VERTEX_SHADER` and `FRAGMENT_SHADER` are never used
[INFO] [stdout]   --> src/main.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl TestRenderer {
[INFO] [stdout]    | ----------------- associated constants in this implementation
[INFO] [stdout] 56 |     const VERTEX_SHADER: &'static str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     const FRAGMENT_SHADER: &'static str = r#"
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `database` is never read
[INFO] [stdout]   --> src/game/mesh/mod.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct MeshBuilder {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 93 |     database: Arc<BlockMeshDatabase>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clone_with_settings` and `data_uncompressed` are never used
[INFO] [stdout]   --> src/game/network/codec.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Codec {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn clone_with_settings(&self) -> Codec {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn data_uncompressed(&mut self) -> (usize, &[u8]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ShortPrefixedVec` is never used
[INFO] [stdout]    --> src/game/network/io.rs:386:10
[INFO] [stdout]     |
[INFO] [stdout] 386 | pub type ShortPrefixedVec<'a, T> = LengthPrefixedVec<'a, u16, T>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `VariantOf` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:279:11
[INFO] [stdout]     |
[INFO] [stdout] 279 | pub trait VariantOf<Enum> {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `username` is never read
[INFO] [stdout]   --> src/game/network/client/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Client {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read` is never used
[INFO] [stdout]   --> src/game/network/client/mod.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Client {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub async fn read(&mut self) -> anyhow::Result<ServerPlayPacket> {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `packets_to_send` and `received_packets` are never used
[INFO] [stdout]   --> src/game/network/client/worker.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl ClientWorker {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn packets_to_send(&self) -> Sender<ClientPlayPacket> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn received_packets(&self) -> Receiver<ServerPlayPacket> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disconnected_message` is never used
[INFO] [stdout]    --> src/game/network/client/worker.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn disconnected_message(e: anyhow::Error) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:213:32
[INFO] [stdout]     |
[INFO] [stdout] 203 |           impl $ident {
[INFO] [stdout]     |           ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |                           pub fn name(&self) -> String {
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/game/network/client/packet.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout]  72 | / packet_enum!(ClientPlayPacket {
[INFO] [stdout]  73 | |     0x00 = PlayerIdentification,
[INFO] [stdout]  74 | |     0x08 = PositionAndOrientation,
[INFO] [stdout]  75 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `packet_enum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:213:32
[INFO] [stdout]     |
[INFO] [stdout] 203 |           impl $ident {
[INFO] [stdout]     |           ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |                           pub fn name(&self) -> String {
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/game/network/client/packet.rs:77:1
[INFO] [stdout]     |
[INFO] [stdout]  77 | / packet_enum!(ServerPlayPacket {
[INFO] [stdout]  78 | |     0x01 = Ping,
[INFO] [stdout]  79 | |     0x0D = Message,
[INFO] [stdout]  80 | |     0x07 = SpawnPlayer,
[INFO] [stdout]  81 | |     0x08 = PlayerTeleport,
[INFO] [stdout]  82 | |     0x06 = SetBlock
[INFO] [stdout]  83 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `packet_enum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:213:32
[INFO] [stdout]     |
[INFO] [stdout] 203 |           impl $ident {
[INFO] [stdout]     |           ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |                           pub fn name(&self) -> String {
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/game/network/client/packet.rs:85:1
[INFO] [stdout]     |
[INFO] [stdout]  85 | / packet_enum!(ServerLoginPacket {
[INFO] [stdout]  86 | |     0x00 = ServerIdentification,
[INFO] [stdout]  87 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `packet_enum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/game/network/packets.rs:213:32
[INFO] [stdout]     |
[INFO] [stdout] 203 |           impl $ident {
[INFO] [stdout]     |           ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |                           pub fn name(&self) -> String {
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/game/network/client/packet.rs:89:1
[INFO] [stdout]     |
[INFO] [stdout]  89 | / packet_enum!(ServerWorldPacket {
[INFO] [stdout]  90 | |     0x02 = LevelInitialize,
[INFO] [stdout]  91 | |     0x03 = LevelDataChunk,
[INFO] [stdout]  92 | |     0x04 = LevelFinalize
[INFO] [stdout]  93 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `packet_enum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sky` is never read
[INFO] [stdout]   --> src/game/render_stages/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct RenderManager {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 10 |     pub sky: Rc<RefCell<SkyRenderer>>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIZE` is never used
[INFO] [stdout]   --> src/game/render_stages/world.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |             const SIZE: f32 = 2.0;
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/game/world/mod.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl World {
[INFO] [stdout]     | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn new(generator: impl WorldGenerator, width: usize, height: usize, length: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WorldGenerator` is never used
[INFO] [stdout]    --> src/game/world/mod.rs:188:11
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub trait WorldGenerator {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FlatWorldGenerator` is never constructed
[INFO] [stdout]    --> src/game/world/mod.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub struct FlatWorldGenerator {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/game/world/mod.rs:200:12
[INFO] [stdout]     |
[INFO] [stdout] 199 | impl FlatWorldGenerator {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 200 |     pub fn new(height: usize, below: u8, surface: u8, above: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `len` is never read
[INFO] [stdout]  --> src/render/opengl/buffer/multi.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct MultibufferObject {
[INFO] [stdout]   |        ----------------- field in this struct
[INFO] [stdout] 7 |     offset: usize,
[INFO] [stdout] 8 |     len: usize,
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/game/mod.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                     window.set_cursor_grabbed(!grabbed);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 61 |                     let _ = window.set_cursor_grabbed(!grabbed);
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `SPEED` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let SPEED: f32 = 3. * 1000.;
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case: `speed`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `SPEED` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:147:13
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let SPEED = SPEED * engine.delta_time().as_secs_f32();
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case: `speed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/game/world/mod.rs:44:51
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, FromPrimitive, ToPrimitive, IntoEnumIterator)]
[INFO] [stdout]    |                                                   ^------------
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   `FromPrimitive` is not local
[INFO] [stdout]    |                                                   move the `impl` block outside of this constant `_IMPL_NUM_FromPrimitive_FOR_Facing`
[INFO] [stdout] 45 | pub enum Facing {
[INFO] [stdout]    |          ------ `Facing` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `FromPrimitive` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `FromPrimitive` may come from an old version of the `num_derive` crate, try updating your dependency with `cargo update -p num_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]    = note: this warning originates in the derive macro `FromPrimitive` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/game/world/mod.rs:44:66
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, FromPrimitive, ToPrimitive, IntoEnumIterator)]
[INFO] [stdout]    |                                                                  ^----------
[INFO] [stdout]    |                                                                  |
[INFO] [stdout]    |                                                                  `ToPrimitive` is not local
[INFO] [stdout]    |                                                                  move the `impl` block outside of this constant `_IMPL_NUM_ToPrimitive_FOR_Facing`
[INFO] [stdout] 45 | pub enum Facing {
[INFO] [stdout]    |          ------ `Facing` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `ToPrimitive` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `ToPrimitive` may come from an old version of the `num_derive` crate, try updating your dependency with `cargo update -p num_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `ToPrimitive` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> src/render/opengl/buffer/multi.rs:49:94
[INFO] [stdout]    |
[INFO] [stdout] 49 |             gl::VertexAttribPointer(index as u32, val.size_per_v, val.gl_type, gl::FALSE, 0, mem::transmute(val.offset));
[INFO] [stdout]    |                                                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout]    = note: `#[warn(integer_to_ptr_transmutes)]` on by default
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 49 -             gl::VertexAttribPointer(index as u32, val.size_per_v, val.gl_type, gl::FALSE, 0, mem::transmute(val.offset));
[INFO] [stdout] 49 +             gl::VertexAttribPointer(index as u32, val.size_per_v, val.gl_type, gl::FALSE, 0, std::ptr::with_exposed_provenance::<c_void>(val.offset));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 22s
[INFO] running `Command { std: "docker" "inspect" "6b818ff1e848d9b0abcb9383048be38aa562fd4a2d18b04548c278db7334bfb4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6b818ff1e848d9b0abcb9383048be38aa562fd4a2d18b04548c278db7334bfb4", kill_on_drop: false }`
[INFO] [stdout] 6b818ff1e848d9b0abcb9383048be38aa562fd4a2d18b04548c278db7334bfb4
