[INFO] cloning repository https://github.com/willabytes/3d-engine
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/willabytes/3d-engine" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwillabytes%2F3d-engine", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwillabytes%2F3d-engine'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 436fec8271df395c41d4b9560447ddb9d2eb2ece
[INFO] checking willabytes/3d-engine against master#0028f344ce9f64766259577c998a1959ca1f6a0b for pr-153041
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwillabytes%2F3d-engine" "/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/willabytes/3d-engine
[INFO] finished tweaking git repo https://github.com/willabytes/3d-engine
[INFO] tweaked toml for git repo https://github.com/willabytes/3d-engine written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/willabytes/3d-engine on toolchain 0028f344ce9f64766259577c998a1959ca1f6a0b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0028f344ce9f64766259577c998a1959ca1f6a0b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/willabytes/3d-engine 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" "+0028f344ce9f64766259577c998a1959ca1f6a0b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wgpu-core-deps-windows-linux-android v27.0.0
[INFO] [stderr]   Downloaded humantime v2.3.0
[INFO] [stderr]   Downloaded wgpu-core-deps-apple v27.0.0
[INFO] [stderr]   Downloaded wgpu-core-deps-emscripten v27.0.0
[INFO] [stderr]   Downloaded wgpu-types v27.0.1
[INFO] [stderr]   Downloaded wgpu v27.0.1
[INFO] [stderr]   Downloaded wgpu-core v27.0.3
[INFO] [stderr]   Downloaded wgpu-hal v27.0.4
[INFO] [stderr]   Downloaded naga v27.0.3
[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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+0028f344ce9f64766259577c998a1959ca1f6a0b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] de6d8c79549b7d316c6ed7c5180b36a54d2dbe425b4f542771cecfb6d45554a2
[INFO] running `Command { std: "docker" "start" "-a" "de6d8c79549b7d316c6ed7c5180b36a54d2dbe425b4f542771cecfb6d45554a2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "de6d8c79549b7d316c6ed7c5180b36a54d2dbe425b4f542771cecfb6d45554a2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "de6d8c79549b7d316c6ed7c5180b36a54d2dbe425b4f542771cecfb6d45554a2", kill_on_drop: false }`
[INFO] [stdout] de6d8c79549b7d316c6ed7c5180b36a54d2dbe425b4f542771cecfb6d45554a2
[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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+0028f344ce9f64766259577c998a1959ca1f6a0b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a7fa6d5612a92289b0ee35c4bade747ebb45deaa5ee1867f90883bde63a882a7
[INFO] running `Command { std: "docker" "start" "-a" "a7fa6d5612a92289b0ee35c4bade747ebb45deaa5ee1867f90883bde63a882a7", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.104
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling libc v0.2.179
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.6
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling wayland-client v0.31.12
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking foldhash v0.2.0
[INFO] [stderr]    Compiling naga v27.0.3
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling cc v1.2.51
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]    Compiling khronos-egl v6.0.0
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling ash v0.38.0+1.3.281
[INFO] [stderr]     Checking codespan-reporting v0.12.0
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling wgpu-hal v27.0.4
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]     Checking raw-window-handle v0.6.2
[INFO] [stderr]     Checking unicode-ident v1.0.22
[INFO] [stderr]    Compiling quick-xml v0.38.4
[INFO] [stderr]     Checking indexmap v2.12.1
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]     Checking hexf-parse v0.2.1
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]    Compiling wayland-sys v0.31.8
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]     Checking glow v0.16.0
[INFO] [stderr]     Checking cursor-icon v1.2.0
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]    Compiling syn v2.0.113
[INFO] [stderr]     Checking ordered-float v5.1.0
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking xkeysym v0.2.1
[INFO] [stderr]    Compiling wayland-scanner v0.31.8
[INFO] [stderr]     Checking renderdoc-sys v1.1.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling wgpu-core v27.0.3
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.10
[INFO] [stderr]    Compiling wgpu v27.0.1
[INFO] [stderr]    Compiling winit v0.30.12
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling wayland-backend v0.3.12
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking wgpu-types v27.0.1
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking wayland-protocols v0.32.10
[INFO] [stderr]     Checking wayland-cursor v0.31.12
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.10
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.10
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking wgpu-core-deps-windows-linux-android v27.0.0
[INFO] [stderr]     Checking wgpu-3d-engine v0.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `camera::*`
[INFO] [stdout]   --> src/lib.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use camera::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `object::*`
[INFO] [stdout]   --> src/lib.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use object::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/lib.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         use std::mem;
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]    --> src/lib.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |         use std::f32::consts::PI;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `camera::*`
[INFO] [stdout]   --> src/lib.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use camera::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `object::*`
[INFO] [stdout]   --> src/lib.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use object::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/lib.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         use std::mem;
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]    --> src/lib.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |         use std::f32::consts::PI;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut camera_uniform = camera::camera::CameraUniform::new(camera);
[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/lib.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut camera_uniform = camera::camera::CameraUniform::new(camera);
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:465:21
[INFO] [stdout]     |
[INFO] [stdout] 465 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:629:21
[INFO] [stdout]     |
[INFO] [stdout] 629 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:845:21
[INFO] [stdout]     |
[INFO] [stdout] 845 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `movement_direction`
[INFO] [stdout]    --> src/lib.rs:406:13
[INFO] [stdout]     |
[INFO] [stdout] 406 |         let movement_direction = self.camera.direction();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_movement_direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:465:21
[INFO] [stdout]     |
[INFO] [stdout] 465 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:629:21
[INFO] [stdout]     |
[INFO] [stdout] 629 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:845:21
[INFO] [stdout]     |
[INFO] [stdout] 845 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:515:13
[INFO] [stdout]     |
[INFO] [stdout] 515 |         let mut window_attributes = Window::default_attributes();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_loop`
[INFO] [stdout]    --> src/lib.rs:569:32
[INFO] [stdout]     |
[INFO] [stdout] 569 |     fn device_event(&mut self, event_loop: &ActiveEventLoop, device_id: DeviceId, event: winit::event::DeviceEvent) {
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device_id`
[INFO] [stdout]    --> src/lib.rs:569:62
[INFO] [stdout]     |
[INFO] [stdout] 569 |     fn device_event(&mut self, event_loop: &ActiveEventLoop, device_id: DeviceId, event: winit::event::DeviceEvent) {
[INFO] [stdout]     |                                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_device_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TWO_PI` is never used
[INFO] [stdout]   --> src/lib.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TWO_PI: f32 = 2.0 * PI;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `camera_matrix`, `delta_time`, and `mouse_sensitivity` are never read
[INFO] [stdout]   --> src/lib.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct State {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     camera_matrix: [[f32; 3]; 3],
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 37 |     delta_time: std::time::Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 38 |     frame_times: FrameTimes,
[INFO] [stdout] 39 |     mouse_sensitivity: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `delta_time_sum` and `update_time` are never read
[INFO] [stdout]   --> src/lib.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct FrameTimes {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 46 |     delta_time: std::time::Instant,
[INFO] [stdout] 47 |     delta_time_sum: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     update_time: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset` and `new_sample` are never used
[INFO] [stdout]   --> src/lib.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl FrameTimes {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 53 |     fn reset(&mut self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn new_sample(mut self) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HALF_PI` is never used
[INFO] [stdout]  --> src/camera.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 |     const HALF_PI: f32 = 0.5 * PI;
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `move_to`, `move_relative`, `move_forward_h`, and `move_backward_h` are never used
[INFO] [stdout]    --> src/camera.rs:75:16
[INFO] [stdout]     |
[INFO] [stdout]  18 |     impl Camera {
[INFO] [stdout]     |     ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  75 |         pub fn move_to(&mut self, destination: [f32; 3]) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |         pub fn move_relative(&mut self, distance: [f32; 3]) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |         pub fn move_forward_h(&mut self, increment: f32) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |         pub fn move_backward_h(&mut self, increment: f32) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]   --> src/object.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub struct Vertex {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Triangle` is never constructed
[INFO] [stdout]   --> src/object.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub struct Triangle {
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Object` is never constructed
[INFO] [stdout]   --> src/object.rs:25:16
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub struct Object {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `rotate` is never used
[INFO] [stdout]   --> src/object.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 31 |     impl Object {
[INFO] [stdout]    |     ----------- method in this implementation
[INFO] [stdout] 32 |         pub fn rotate(&mut self, axis: Vec3, angle: f32, offset: Vec3) {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec2` is never constructed
[INFO] [stdout]   --> src/object/object/gmlib.rs:92:16
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub struct Vec2 {
[INFO] [stdout]    |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `norm`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:98:16
[INFO] [stdout]     |
[INFO] [stdout]  97 |     impl Vec2 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout]  98 |         pub fn from(values: [f32; 2]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |         pub fn norm(self) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |         pub fn to_array(self) -> [f32; 2] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec3` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:195:16
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub struct Vec3 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `magnitude`, `normalize`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:202:16
[INFO] [stdout]     |
[INFO] [stdout] 201 |     impl Vec3 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout] 202 |         pub fn from(values: [f32; 3]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |         pub fn magnitude(self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |         pub fn normalize(self) -> Self {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |         pub fn to_array(self) -> [f32; 3] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `movement_direction`
[INFO] [stdout]    --> src/lib.rs:406:13
[INFO] [stdout]     |
[INFO] [stdout] 406 |         let movement_direction = self.camera.direction();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_movement_direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec4` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:325:16
[INFO] [stdout]     |
[INFO] [stdout] 325 |     pub struct Vec4 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `norm`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:333:16
[INFO] [stdout]     |
[INFO] [stdout] 332 |     impl Vec4 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout] 333 |         pub fn from(values: [f32; 4]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |         pub fn norm(self) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |         pub fn to_array(self) -> [f32; 4] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat2x2` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:448:16
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub struct Mat2x2 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:454:16
[INFO] [stdout]     |
[INFO] [stdout] 453 |     impl Mat2x2 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 454 |         pub fn from(values: [f32; 4]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |         pub fn to_array(self) -> [[f32; 2]; 2] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT2X2` is never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:603:15
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub const UNIT_MAT2X2: Mat2x2 = Mat2x2 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat3x3` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:610:16
[INFO] [stdout]     |
[INFO] [stdout] 610 |     pub struct Mat3x3 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:617:16
[INFO] [stdout]     |
[INFO] [stdout] 616 |     impl Mat3x3 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 617 |         pub fn from(values: [f32; 9]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 644 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |         pub fn to_array(self) -> [[f32; 3]; 3] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT3X3` is never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:817:15
[INFO] [stdout]     |
[INFO] [stdout] 817 |     pub const UNIT_MAT3X3: Mat3x3 = Mat3x3 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat4x4` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:824:16
[INFO] [stdout]     |
[INFO] [stdout] 824 |     pub struct Mat4x4 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:832:16
[INFO] [stdout]     |
[INFO] [stdout] 831 |     impl Mat4x4 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 832 |         pub fn from(values: [f32; 16]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 841 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 875 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 962 |         pub fn to_array(self) -> [[f32; 4]; 4] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT4X4` is never used
[INFO] [stdout]     --> src/object/object/gmlib.rs:1166:15
[INFO] [stdout]      |
[INFO] [stdout] 1166 |     pub const UNIT_MAT4X4: Mat4x4 = Mat4x4 {
[INFO] [stdout]      |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Quaternion` is never constructed
[INFO] [stdout]     --> src/object/object/gmlib.rs:1174:16
[INFO] [stdout]      |
[INFO] [stdout] 1174 |     pub struct Quaternion {
[INFO] [stdout]      |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `conjugate`, `rotate`, `rotate_offset`, and `right_hand_mul` are never used
[INFO] [stdout]     --> src/object/object/gmlib.rs:1196:16
[INFO] [stdout]      |
[INFO] [stdout] 1195 |     impl Quaternion {
[INFO] [stdout]      |     --------------- associated items in this implementation
[INFO] [stdout] 1196 |         pub fn conjugate(self) -> Self {
[INFO] [stdout]      |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1205 |         pub fn rotate(point: Vec3, axis: Vec3, angle: f32) -> Vec3 {
[INFO] [stdout]      |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1231 |         pub fn rotate_offset(point: Vec3, axis: Vec3, angle: f32, offset: Vec3) -> Vec3 {
[INFO] [stdout]      |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1236 |         pub fn right_hand_mul(lhs: Quaternion, rhs: Quaternion) -> Self {
[INFO] [stdout]      |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:515:13
[INFO] [stdout]     |
[INFO] [stdout] 515 |         let mut window_attributes = Window::default_attributes();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_loop`
[INFO] [stdout]    --> src/lib.rs:569:32
[INFO] [stdout]     |
[INFO] [stdout] 569 |     fn device_event(&mut self, event_loop: &ActiveEventLoop, device_id: DeviceId, event: winit::event::DeviceEvent) {
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device_id`
[INFO] [stdout]    --> src/lib.rs:569:62
[INFO] [stdout]     |
[INFO] [stdout] 569 |     fn device_event(&mut self, event_loop: &ActiveEventLoop, device_id: DeviceId, event: winit::event::DeviceEvent) {
[INFO] [stdout]     |                                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_device_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TWO_PI` is never used
[INFO] [stdout]   --> src/lib.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TWO_PI: f32 = 2.0 * PI;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `camera_matrix`, `delta_time`, and `mouse_sensitivity` are never read
[INFO] [stdout]   --> src/lib.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct State {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     camera_matrix: [[f32; 3]; 3],
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 37 |     delta_time: std::time::Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 38 |     frame_times: FrameTimes,
[INFO] [stdout] 39 |     mouse_sensitivity: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `delta_time_sum` and `update_time` are never read
[INFO] [stdout]   --> src/lib.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct FrameTimes {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 46 |     delta_time: std::time::Instant,
[INFO] [stdout] 47 |     delta_time_sum: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     update_time: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset` and `new_sample` are never used
[INFO] [stdout]   --> src/lib.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl FrameTimes {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 53 |     fn reset(&mut self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn new_sample(mut self) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HALF_PI` is never used
[INFO] [stdout]  --> src/camera.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 |     const HALF_PI: f32 = 0.5 * PI;
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `move_to`, `move_relative`, `move_forward_h`, and `move_backward_h` are never used
[INFO] [stdout]    --> src/camera.rs:75:16
[INFO] [stdout]     |
[INFO] [stdout]  18 |     impl Camera {
[INFO] [stdout]     |     ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  75 |         pub fn move_to(&mut self, destination: [f32; 3]) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |         pub fn move_relative(&mut self, distance: [f32; 3]) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |         pub fn move_forward_h(&mut self, increment: f32) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |         pub fn move_backward_h(&mut self, increment: f32) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]   --> src/object.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub struct Vertex {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Triangle` is never constructed
[INFO] [stdout]   --> src/object.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub struct Triangle {
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Object` is never constructed
[INFO] [stdout]   --> src/object.rs:25:16
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub struct Object {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `rotate` is never used
[INFO] [stdout]   --> src/object.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 31 |     impl Object {
[INFO] [stdout]    |     ----------- method in this implementation
[INFO] [stdout] 32 |         pub fn rotate(&mut self, axis: Vec3, angle: f32, offset: Vec3) {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec2` is never constructed
[INFO] [stdout]   --> src/object/object/gmlib.rs:92:16
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub struct Vec2 {
[INFO] [stdout]    |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `norm`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:98:16
[INFO] [stdout]     |
[INFO] [stdout]  97 |     impl Vec2 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout]  98 |         pub fn from(values: [f32; 2]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |         pub fn norm(self) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |         pub fn to_array(self) -> [f32; 2] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec3` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:195:16
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub struct Vec3 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `magnitude`, `normalize`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:202:16
[INFO] [stdout]     |
[INFO] [stdout] 201 |     impl Vec3 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout] 202 |         pub fn from(values: [f32; 3]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |         pub fn magnitude(self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |         pub fn normalize(self) -> Self {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |         pub fn to_array(self) -> [f32; 3] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/lib.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 |         window.set_cursor_grab(winit::window::CursorGrabMode::Locked);
[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] 371 |         let _ = window.set_cursor_grab(winit::window::CursorGrabMode::Locked);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec4` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:325:16
[INFO] [stdout]     |
[INFO] [stdout] 325 |     pub struct Vec4 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `norm`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:333:16
[INFO] [stdout]     |
[INFO] [stdout] 332 |     impl Vec4 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout] 333 |         pub fn from(values: [f32; 4]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |         pub fn norm(self) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |         pub fn to_array(self) -> [f32; 4] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat2x2` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:448:16
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub struct Mat2x2 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:454:16
[INFO] [stdout]     |
[INFO] [stdout] 453 |     impl Mat2x2 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 454 |         pub fn from(values: [f32; 4]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |         pub fn to_array(self) -> [[f32; 2]; 2] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT2X2` is never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:603:15
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub const UNIT_MAT2X2: Mat2x2 = Mat2x2 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat3x3` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:610:16
[INFO] [stdout]     |
[INFO] [stdout] 610 |     pub struct Mat3x3 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:617:16
[INFO] [stdout]     |
[INFO] [stdout] 616 |     impl Mat3x3 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 617 |         pub fn from(values: [f32; 9]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 644 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |         pub fn to_array(self) -> [[f32; 3]; 3] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT3X3` is never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:817:15
[INFO] [stdout]     |
[INFO] [stdout] 817 |     pub const UNIT_MAT3X3: Mat3x3 = Mat3x3 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat4x4` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:824:16
[INFO] [stdout]     |
[INFO] [stdout] 824 |     pub struct Mat4x4 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:832:16
[INFO] [stdout]     |
[INFO] [stdout] 831 |     impl Mat4x4 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 832 |         pub fn from(values: [f32; 16]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 841 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 875 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 962 |         pub fn to_array(self) -> [[f32; 4]; 4] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT4X4` is never used
[INFO] [stdout]     --> src/object/object/gmlib.rs:1166:15
[INFO] [stdout]      |
[INFO] [stdout] 1166 |     pub const UNIT_MAT4X4: Mat4x4 = Mat4x4 {
[INFO] [stdout]      |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Quaternion` is never constructed
[INFO] [stdout]     --> src/object/object/gmlib.rs:1174:16
[INFO] [stdout]      |
[INFO] [stdout] 1174 |     pub struct Quaternion {
[INFO] [stdout]      |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `conjugate`, `rotate`, `rotate_offset`, and `right_hand_mul` are never used
[INFO] [stdout]     --> src/object/object/gmlib.rs:1196:16
[INFO] [stdout]      |
[INFO] [stdout] 1195 |     impl Quaternion {
[INFO] [stdout]      |     --------------- associated items in this implementation
[INFO] [stdout] 1196 |         pub fn conjugate(self) -> Self {
[INFO] [stdout]      |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1205 |         pub fn rotate(point: Vec3, axis: Vec3, angle: f32) -> Vec3 {
[INFO] [stdout]      |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1231 |         pub fn rotate_offset(point: Vec3, axis: Vec3, angle: f32, offset: Vec3) -> Vec3 {
[INFO] [stdout]      |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1236 |         pub fn right_hand_mul(lhs: Quaternion, rhs: Quaternion) -> Self {
[INFO] [stdout]      |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/lib.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 |         window.set_cursor_grab(winit::window::CursorGrabMode::Locked);
[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] 371 |         let _ = window.set_cursor_grab(winit::window::CursorGrabMode::Locked);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `camera::*`
[INFO] [stdout]   --> src/./lib.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use camera::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `object::*`
[INFO] [stdout]   --> src/./lib.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use object::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/./lib.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         use std::mem;
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]    --> src/./lib.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |         use std::f32::consts::PI;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `camera::*`
[INFO] [stdout]   --> src/./lib.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use camera::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `object::*`
[INFO] [stdout]   --> src/./lib.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use object::*;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/./lib.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         use std::mem;
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]    --> src/./lib.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |         use std::f32::consts::PI;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/./lib.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut camera_uniform = camera::camera::CameraUniform::new(camera);
[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/./lib.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut camera_uniform = camera::camera::CameraUniform::new(camera);
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:465:21
[INFO] [stdout]     |
[INFO] [stdout] 465 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:629:21
[INFO] [stdout]     |
[INFO] [stdout] 629 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:465:21
[INFO] [stdout]     |
[INFO] [stdout] 465 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:629:21
[INFO] [stdout]     |
[INFO] [stdout] 629 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:845:21
[INFO] [stdout]     |
[INFO] [stdout] 845 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/object/object/gmlib.rs:845:21
[INFO] [stdout]     |
[INFO] [stdout] 845 |                 for i in 0..(exponent - 1) { self = self * self; }
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `movement_direction`
[INFO] [stdout]    --> src/./lib.rs:406:13
[INFO] [stdout]     |
[INFO] [stdout] 406 |         let movement_direction = self.camera.direction();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_movement_direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `movement_direction`
[INFO] [stdout]    --> src/./lib.rs:406:13
[INFO] [stdout]     |
[INFO] [stdout] 406 |         let movement_direction = self.camera.direction();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_movement_direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/./lib.rs:515:13
[INFO] [stdout]     |
[INFO] [stdout] 515 |         let mut window_attributes = Window::default_attributes();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_loop`
[INFO] [stdout]    --> src/./lib.rs:569:32
[INFO] [stdout]     |
[INFO] [stdout] 569 |     fn device_event(&mut self, event_loop: &ActiveEventLoop, device_id: DeviceId, event: winit::event::DeviceEvent) {
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device_id`
[INFO] [stdout]    --> src/./lib.rs:569:62
[INFO] [stdout]     |
[INFO] [stdout] 569 |     fn device_event(&mut self, event_loop: &ActiveEventLoop, device_id: DeviceId, event: winit::event::DeviceEvent) {
[INFO] [stdout]     |                                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_device_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/./lib.rs:515:13
[INFO] [stdout]     |
[INFO] [stdout] 515 |         let mut window_attributes = Window::default_attributes();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_loop`
[INFO] [stdout]    --> src/./lib.rs:569:32
[INFO] [stdout]     |
[INFO] [stdout] 569 |     fn device_event(&mut self, event_loop: &ActiveEventLoop, device_id: DeviceId, event: winit::event::DeviceEvent) {
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device_id`
[INFO] [stdout]    --> src/./lib.rs:569:62
[INFO] [stdout]     |
[INFO] [stdout] 569 |     fn device_event(&mut self, event_loop: &ActiveEventLoop, device_id: DeviceId, event: winit::event::DeviceEvent) {
[INFO] [stdout]     |                                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_device_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TWO_PI` is never used
[INFO] [stdout]   --> src/./lib.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TWO_PI: f32 = 2.0 * PI;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `camera_matrix`, `delta_time`, and `mouse_sensitivity` are never read
[INFO] [stdout]   --> src/./lib.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct State {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     camera_matrix: [[f32; 3]; 3],
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 37 |     delta_time: std::time::Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 38 |     frame_times: FrameTimes,
[INFO] [stdout] 39 |     mouse_sensitivity: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `delta_time_sum` and `update_time` are never read
[INFO] [stdout]   --> src/./lib.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct FrameTimes {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 46 |     delta_time: std::time::Instant,
[INFO] [stdout] 47 |     delta_time_sum: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     update_time: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset` and `new_sample` are never used
[INFO] [stdout]   --> src/./lib.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl FrameTimes {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 53 |     fn reset(&mut self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn new_sample(mut self) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FpsCounter` is never constructed
[INFO] [stdout]   --> src/./lib.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct FpsCounter {}
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HALF_PI` is never used
[INFO] [stdout]  --> src/camera.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 |     const HALF_PI: f32 = 0.5 * PI;
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `move_to`, `move_relative`, `move_forward_h`, and `move_backward_h` are never used
[INFO] [stdout]    --> src/camera.rs:75:16
[INFO] [stdout]     |
[INFO] [stdout]  18 |     impl Camera {
[INFO] [stdout]     |     ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  75 |         pub fn move_to(&mut self, destination: [f32; 3]) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |         pub fn move_relative(&mut self, distance: [f32; 3]) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |         pub fn move_forward_h(&mut self, increment: f32) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |         pub fn move_backward_h(&mut self, increment: f32) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]   --> src/object.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub struct Vertex {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Triangle` is never constructed
[INFO] [stdout]   --> src/object.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub struct Triangle {
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Object` is never constructed
[INFO] [stdout]   --> src/object.rs:25:16
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub struct Object {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `rotate` is never used
[INFO] [stdout]   --> src/object.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 31 |     impl Object {
[INFO] [stdout]    |     ----------- method in this implementation
[INFO] [stdout] 32 |         pub fn rotate(&mut self, axis: Vec3, angle: f32, offset: Vec3) {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec2` is never constructed
[INFO] [stdout]   --> src/object/object/gmlib.rs:92:16
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub struct Vec2 {
[INFO] [stdout]    |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `norm`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:98:16
[INFO] [stdout]     |
[INFO] [stdout]  97 |     impl Vec2 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout]  98 |         pub fn from(values: [f32; 2]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |         pub fn norm(self) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |         pub fn to_array(self) -> [f32; 2] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec3` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:195:16
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub struct Vec3 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `magnitude`, `normalize`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:202:16
[INFO] [stdout]     |
[INFO] [stdout] 201 |     impl Vec3 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout] 202 |         pub fn from(values: [f32; 3]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |         pub fn magnitude(self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |         pub fn normalize(self) -> Self {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |         pub fn to_array(self) -> [f32; 3] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec4` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:325:16
[INFO] [stdout]     |
[INFO] [stdout] 325 |     pub struct Vec4 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `norm`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:333:16
[INFO] [stdout]     |
[INFO] [stdout] 332 |     impl Vec4 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout] 333 |         pub fn from(values: [f32; 4]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |         pub fn norm(self) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |         pub fn to_array(self) -> [f32; 4] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat2x2` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:448:16
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub struct Mat2x2 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:454:16
[INFO] [stdout]     |
[INFO] [stdout] 453 |     impl Mat2x2 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 454 |         pub fn from(values: [f32; 4]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |         pub fn to_array(self) -> [[f32; 2]; 2] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT2X2` is never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:603:15
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub const UNIT_MAT2X2: Mat2x2 = Mat2x2 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat3x3` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:610:16
[INFO] [stdout]     |
[INFO] [stdout] 610 |     pub struct Mat3x3 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:617:16
[INFO] [stdout]     |
[INFO] [stdout] 616 |     impl Mat3x3 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 617 |         pub fn from(values: [f32; 9]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 644 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |         pub fn to_array(self) -> [[f32; 3]; 3] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT3X3` is never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:817:15
[INFO] [stdout]     |
[INFO] [stdout] 817 |     pub const UNIT_MAT3X3: Mat3x3 = Mat3x3 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat4x4` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:824:16
[INFO] [stdout]     |
[INFO] [stdout] 824 |     pub struct Mat4x4 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:832:16
[INFO] [stdout]     |
[INFO] [stdout] 831 |     impl Mat4x4 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 832 |         pub fn from(values: [f32; 16]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 841 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 875 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 962 |         pub fn to_array(self) -> [[f32; 4]; 4] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT4X4` is never used
[INFO] [stdout]     --> src/object/object/gmlib.rs:1166:15
[INFO] [stdout]      |
[INFO] [stdout] 1166 |     pub const UNIT_MAT4X4: Mat4x4 = Mat4x4 {
[INFO] [stdout]      |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Quaternion` is never constructed
[INFO] [stdout]     --> src/object/object/gmlib.rs:1174:16
[INFO] [stdout]      |
[INFO] [stdout] 1174 |     pub struct Quaternion {
[INFO] [stdout]      |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `conjugate`, `rotate`, `rotate_offset`, and `right_hand_mul` are never used
[INFO] [stdout]     --> src/object/object/gmlib.rs:1196:16
[INFO] [stdout]      |
[INFO] [stdout] 1195 |     impl Quaternion {
[INFO] [stdout]      |     --------------- associated items in this implementation
[INFO] [stdout] 1196 |         pub fn conjugate(self) -> Self {
[INFO] [stdout]      |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1205 |         pub fn rotate(point: Vec3, axis: Vec3, angle: f32) -> Vec3 {
[INFO] [stdout]      |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1231 |         pub fn rotate_offset(point: Vec3, axis: Vec3, angle: f32, offset: Vec3) -> Vec3 {
[INFO] [stdout]      |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1236 |         pub fn right_hand_mul(lhs: Quaternion, rhs: Quaternion) -> Self {
[INFO] [stdout]      |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TWO_PI` is never used
[INFO] [stdout]   --> src/./lib.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TWO_PI: f32 = 2.0 * PI;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `camera_matrix`, `delta_time`, and `mouse_sensitivity` are never read
[INFO] [stdout]   --> src/./lib.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct State {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     camera_matrix: [[f32; 3]; 3],
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 37 |     delta_time: std::time::Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 38 |     frame_times: FrameTimes,
[INFO] [stdout] 39 |     mouse_sensitivity: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `delta_time_sum` and `update_time` are never read
[INFO] [stdout]   --> src/./lib.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct FrameTimes {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 46 |     delta_time: std::time::Instant,
[INFO] [stdout] 47 |     delta_time_sum: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     update_time: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset` and `new_sample` are never used
[INFO] [stdout]   --> src/./lib.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl FrameTimes {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 53 |     fn reset(&mut self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn new_sample(mut self) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FpsCounter` is never constructed
[INFO] [stdout]   --> src/./lib.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct FpsCounter {}
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HALF_PI` is never used
[INFO] [stdout]  --> src/camera.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 |     const HALF_PI: f32 = 0.5 * PI;
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `move_to`, `move_relative`, `move_forward_h`, and `move_backward_h` are never used
[INFO] [stdout]    --> src/camera.rs:75:16
[INFO] [stdout]     |
[INFO] [stdout]  18 |     impl Camera {
[INFO] [stdout]     |     ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  75 |         pub fn move_to(&mut self, destination: [f32; 3]) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |         pub fn move_relative(&mut self, distance: [f32; 3]) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |         pub fn move_forward_h(&mut self, increment: f32) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |         pub fn move_backward_h(&mut self, increment: f32) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]   --> src/object.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub struct Vertex {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Triangle` is never constructed
[INFO] [stdout]   --> src/object.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub struct Triangle {
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Object` is never constructed
[INFO] [stdout]   --> src/object.rs:25:16
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub struct Object {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `rotate` is never used
[INFO] [stdout]   --> src/object.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 31 |     impl Object {
[INFO] [stdout]    |     ----------- method in this implementation
[INFO] [stdout] 32 |         pub fn rotate(&mut self, axis: Vec3, angle: f32, offset: Vec3) {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec2` is never constructed
[INFO] [stdout]   --> src/object/object/gmlib.rs:92:16
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub struct Vec2 {
[INFO] [stdout]    |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `norm`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:98:16
[INFO] [stdout]     |
[INFO] [stdout]  97 |     impl Vec2 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout]  98 |         pub fn from(values: [f32; 2]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |         pub fn norm(self) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |         pub fn to_array(self) -> [f32; 2] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec3` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:195:16
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub struct Vec3 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `magnitude`, `normalize`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:202:16
[INFO] [stdout]     |
[INFO] [stdout] 201 |     impl Vec3 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout] 202 |         pub fn from(values: [f32; 3]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |         pub fn magnitude(self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |         pub fn normalize(self) -> Self {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |         pub fn to_array(self) -> [f32; 3] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vec4` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:325:16
[INFO] [stdout]     |
[INFO] [stdout] 325 |     pub struct Vec4 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `norm`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:333:16
[INFO] [stdout]     |
[INFO] [stdout] 332 |     impl Vec4 {
[INFO] [stdout]     |     --------- associated items in this implementation
[INFO] [stdout] 333 |         pub fn from(values: [f32; 4]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |         pub fn norm(self) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |         pub fn to_array(self) -> [f32; 4] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat2x2` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:448:16
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub struct Mat2x2 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:454:16
[INFO] [stdout]     |
[INFO] [stdout] 453 |     impl Mat2x2 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 454 |         pub fn from(values: [f32; 4]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |         pub fn to_array(self) -> [[f32; 2]; 2] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT2X2` is never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:603:15
[INFO] [stdout]     |
[INFO] [stdout] 603 |     pub const UNIT_MAT2X2: Mat2x2 = Mat2x2 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat3x3` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:610:16
[INFO] [stdout]     |
[INFO] [stdout] 610 |     pub struct Mat3x3 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:617:16
[INFO] [stdout]     |
[INFO] [stdout] 616 |     impl Mat3x3 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 617 |         pub fn from(values: [f32; 9]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 644 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |         pub fn to_array(self) -> [[f32; 3]; 3] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT3X3` is never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:817:15
[INFO] [stdout]     |
[INFO] [stdout] 817 |     pub const UNIT_MAT3X3: Mat3x3 = Mat3x3 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat4x4` is never constructed
[INFO] [stdout]    --> src/object/object/gmlib.rs:824:16
[INFO] [stdout]     |
[INFO] [stdout] 824 |     pub struct Mat4x4 {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `pow`, `determinant`, `inverse`, and `to_array` are never used
[INFO] [stdout]    --> src/object/object/gmlib.rs:832:16
[INFO] [stdout]     |
[INFO] [stdout] 831 |     impl Mat4x4 {
[INFO] [stdout]     |     ----------- associated items in this implementation
[INFO] [stdout] 832 |         pub fn from(values: [f32; 16]) -> Self {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 841 |         pub fn pow(mut self, exponent: u32) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |         pub fn determinant(&self) -> f32 {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 875 |         pub fn inverse(&self) -> Self {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 962 |         pub fn to_array(self) -> [[f32; 4]; 4] {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNIT_MAT4X4` is never used
[INFO] [stdout]     --> src/object/object/gmlib.rs:1166:15
[INFO] [stdout]      |
[INFO] [stdout] 1166 |     pub const UNIT_MAT4X4: Mat4x4 = Mat4x4 {
[INFO] [stdout]      |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Quaternion` is never constructed
[INFO] [stdout]     --> src/object/object/gmlib.rs:1174:16
[INFO] [stdout]      |
[INFO] [stdout] 1174 |     pub struct Quaternion {
[INFO] [stdout]      |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `conjugate`, `rotate`, `rotate_offset`, and `right_hand_mul` are never used
[INFO] [stdout]     --> src/object/object/gmlib.rs:1196:16
[INFO] [stdout]      |
[INFO] [stdout] 1195 |     impl Quaternion {
[INFO] [stdout]      |     --------------- associated items in this implementation
[INFO] [stdout] 1196 |         pub fn conjugate(self) -> Self {
[INFO] [stdout]      |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1205 |         pub fn rotate(point: Vec3, axis: Vec3, angle: f32) -> Vec3 {
[INFO] [stdout]      |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1231 |         pub fn rotate_offset(point: Vec3, axis: Vec3, angle: f32, offset: Vec3) -> Vec3 {
[INFO] [stdout]      |                ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1236 |         pub fn right_hand_mul(lhs: Quaternion, rhs: Quaternion) -> Self {
[INFO] [stdout]      |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/./lib.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 |         window.set_cursor_grab(winit::window::CursorGrabMode::Locked);
[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] 371 |         let _ = window.set_cursor_grab(winit::window::CursorGrabMode::Locked);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/./lib.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 |         window.set_cursor_grab(winit::window::CursorGrabMode::Locked);
[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] 371 |         let _ = window.set_cursor_grab(winit::window::CursorGrabMode::Locked);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 06s
[INFO] running `Command { std: "docker" "inspect" "a7fa6d5612a92289b0ee35c4bade747ebb45deaa5ee1867f90883bde63a882a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a7fa6d5612a92289b0ee35c4bade747ebb45deaa5ee1867f90883bde63a882a7", kill_on_drop: false }`
[INFO] [stdout] a7fa6d5612a92289b0ee35c4bade747ebb45deaa5ee1867f90883bde63a882a7
