[INFO] cloning repository https://github.com/floppyhammer/wgpu-demo
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/floppyhammer/wgpu-demo" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffloppyhammer%2Fwgpu-demo", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffloppyhammer%2Fwgpu-demo'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c126becda5743a7857f095c4257d4f4facdfa08d
[INFO] checking floppyhammer/wgpu-demo against master#32cd9114712a24010b0583624dc52ac302194128 for pr-143717
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffloppyhammer%2Fwgpu-demo" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/floppyhammer/wgpu-demo
[INFO] removed 0 missing examples
[INFO] finished tweaking git repo https://github.com/floppyhammer/wgpu-demo
[INFO] tweaked toml for git repo https://github.com/floppyhammer/wgpu-demo written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/floppyhammer/wgpu-demo on toolchain 32cd9114712a24010b0583624dc52ac302194128
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+32cd9114712a24010b0583624dc52ac302194128" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/floppyhammer/wgpu-demo 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" "+32cd9114712a24010b0583624dc52ac302194128" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fontconfig-parser v0.5.6
[INFO] [stderr]   Downloaded usvg-parser v0.38.0
[INFO] [stderr]   Downloaded cstr v0.2.12
[INFO] [stderr]   Downloaded yeslogic-fontconfig-sys v5.0.0
[INFO] [stderr]   Downloaded usvg-text-layout v0.38.0
[INFO] [stderr]   Downloaded tobj v4.0.2
[INFO] [stderr]   Downloaded bitreader v0.3.8
[INFO] [stderr]   Downloaded unicode-joining-type v0.7.0
[INFO] [stderr]   Downloaded glyph-names v0.2.0
[INFO] [stderr]   Downloaded font-kit v0.12.0
[INFO] [stderr]   Downloaded pathfinder_simd v0.5.3
[INFO] [stderr]   Downloaded indextree v4.6.1
[INFO] [stderr]   Downloaded usvg v0.38.0
[INFO] [stderr]   Downloaded allsorts v0.14.1
[INFO] [stderr]   Downloaded rustybuzz v0.12.1
[INFO] [stderr]   Downloaded unicode-canonical-combining-class v0.5.0
[INFO] [stderr]   Downloaded lyon_tessellation v1.0.14
[INFO] [stderr]   Downloaded freetype v0.7.2
[INFO] [stderr]   Downloaded usvg-tree v0.38.0
[INFO] [stderr]   Downloaded uuid-macro-internal v1.8.0
[INFO] [stderr]   Downloaded libz-sys v1.1.16
[INFO] [stderr]   Downloaded assets_manager v0.11.5
[INFO] [stderr]   Downloaded naga_oil v0.12.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+32cd9114712a24010b0583624dc52ac302194128" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 32408e178132c8c69fdb09afda6b0320181cb1c0c16fd6d1d1788858622e9ef7
[INFO] running `Command { std: "docker" "start" "-a" "32408e178132c8c69fdb09afda6b0320181cb1c0c16fd6d1d1788858622e9ef7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "32408e178132c8c69fdb09afda6b0320181cb1c0c16fd6d1d1788858622e9ef7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "32408e178132c8c69fdb09afda6b0320181cb1c0c16fd6d1d1788858622e9ef7", kill_on_drop: false }`
[INFO] [stdout] 32408e178132c8c69fdb09afda6b0320181cb1c0c16fd6d1d1788858622e9ef7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+32cd9114712a24010b0583624dc52ac302194128" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2fc600d6ff6f879aea8d8c19c4485ca09c4935d003aba95b080326f5b11e082d
[INFO] running `Command { std: "docker" "start" "-a" "2fc600d6ff6f879aea8d8c19c4485ca09c4935d003aba95b080326f5b11e082d", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.81
[INFO] [stderr]    Compiling unicode-ident v1.0.12
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]    Compiling pkg-config v0.3.30
[INFO] [stderr]     Checking once_cell v1.19.0
[INFO] [stderr]     Checking log v0.4.21
[INFO] [stderr]    Compiling autocfg v1.2.0
[INFO] [stderr]     Checking bitflags v2.5.0
[INFO] [stderr]    Compiling cc v1.0.95
[INFO] [stderr]     Checking libloading v0.8.3
[INFO] [stderr]    Compiling libm v0.2.8
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]     Checking arrayvec v0.7.4
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]     Checking linux-raw-sys v0.4.13
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]     Checking zerocopy v0.7.32
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling thiserror v1.0.59
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]     Checking scoped-tls v1.0.1
[INFO] [stderr]    Compiling memchr v2.7.2
[INFO] [stderr]     Checking allocator-api2 v0.2.18
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling semver v1.0.22
[INFO] [stderr]    Compiling crc32fast v1.4.0
[INFO] [stderr]     Checking ttf-parser v0.20.0
[INFO] [stderr]     Checking float-cmp v0.9.0
[INFO] [stderr]    Compiling num-traits v0.2.18
[INFO] [stderr]     Checking tracing-core v0.1.32
[INFO] [stderr]     Checking strict-num v0.1.1
[INFO] [stderr]     Checking arrayref v0.3.7
[INFO] [stderr]     Checking adler v1.0.2
[INFO] [stderr]     Checking pin-project-lite v0.2.14
[INFO] [stderr]     Checking miniz_oxide v0.7.2
[INFO] [stderr]    Compiling wayland-sys v0.31.1
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling lock_api v0.4.11
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]    Compiling rustc_version v0.4.0
[INFO] [stderr]    Compiling quick-xml v0.31.0
[INFO] [stderr]     Checking equivalent v1.0.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.9
[INFO] [stderr]     Checking bit-vec v0.6.3
[INFO] [stderr]     Checking unicode-width v0.1.11
[INFO] [stderr]    Compiling syn v2.0.60
[INFO] [stderr]     Checking unicode-xid v0.2.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking bit-set v0.5.3
[INFO] [stderr]     Checking codespan-reporting v0.11.1
[INFO] [stderr]     Checking pp-rs v0.2.1
[INFO] [stderr]     Checking kurbo v0.9.5
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking siphasher v0.3.11
[INFO] [stderr]    Compiling khronos-egl v6.0.0
[INFO] [stderr]     Checking getrandom v0.2.14
[INFO] [stderr]     Checking memmap2 v0.9.4
[INFO] [stderr]    Compiling pathfinder_simd v0.5.3
[INFO] [stderr]     Checking roxmltree v0.19.0
[INFO] [stderr]    Compiling ash v0.37.3+1.3.251
[INFO] [stderr]     Checking hexf-parse v0.2.1
[INFO] [stderr]     Checking regex-syntax v0.8.3
[INFO] [stderr]    Compiling crossbeam-utils v0.8.19
[INFO] [stderr]    Compiling anyhow v1.0.82
[INFO] [stderr]    Compiling wayland-backend v0.3.3
[INFO] [stderr]    Compiling libz-sys v1.1.16
[INFO] [stderr]    Compiling wayland-scanner v0.31.1
[INFO] [stderr]     Checking euclid v0.22.9
[INFO] [stderr]    Compiling freetype-sys v0.20.1
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking svgtypes v0.13.0
[INFO] [stderr]     Checking hashbrown v0.14.3
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling yeslogic-fontconfig-sys v5.0.0
[INFO] [stderr]     Checking gpu-descriptor-types v0.1.2
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking flate2 v1.0.28
[INFO] [stderr]    Compiling wgpu-hal v0.19.4
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]     Checking cursor-icon v1.1.0
[INFO] [stderr]     Checking xcursor v0.3.5
[INFO] [stderr]     Checking xkeysym v0.2.0
[INFO] [stderr]    Compiling smithay-client-toolkit v0.18.1
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking raw-window-handle v0.6.1
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking fontconfig-parser v0.5.6
[INFO] [stderr]     Checking lyon_geom v1.0.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking owned_ttf_parser v0.20.0
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]     Checking fdeflate v0.3.4
[INFO] [stderr]     Checking indexmap v2.2.6
[INFO] [stderr]     Checking gpu-descriptor v0.2.4
[INFO] [stderr]     Checking wgpu-types v0.19.2
[INFO] [stderr]    Compiling wgpu-core v0.19.4
[INFO] [stderr]     Checking glow v0.13.1
[INFO] [stderr]     Checking unicode-bidi-mirroring v0.1.0
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.8
[INFO] [stderr]     Checking profiling v1.0.15
[INFO] [stderr]    Compiling serde v1.0.198
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]    Compiling unicode-joining-type v0.7.0
[INFO] [stderr]     Checking unicode-script v0.5.6
[INFO] [stderr]     Checking regex-automata v0.4.6
[INFO] [stderr]     Checking unicode-properties v0.1.1
[INFO] [stderr]     Checking renderdoc-sys v1.1.0
[INFO] [stderr]    Compiling unicode-canonical-combining-class v0.5.0
[INFO] [stderr]    Compiling unicode-general-category v0.6.0
[INFO] [stderr]     Checking unicode-ccc v0.1.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking lyon_path v1.0.4
[INFO] [stderr]     Checking pathfinder_geometry v0.5.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.12
[INFO] [stderr]     Checking png v0.17.13
[INFO] [stderr]     Checking anstyle-parse v0.2.3
[INFO] [stderr]     Checking ab_glyph v0.2.25
[INFO] [stderr]     Checking inotify v0.9.6
[INFO] [stderr]     Checking fontdb v0.16.2
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking dirs-sys-next v0.1.2
[INFO] [stderr]     Checking filetime v0.2.23
[INFO] [stderr]    Compiling cstr v0.2.12
[INFO] [stderr]     Checking simplecss v0.2.1
[INFO] [stderr]    Compiling winit v0.29.15
[INFO] [stderr]    Compiling wgpu v0.19.4
[INFO] [stderr]     Checking either v1.11.0
[INFO] [stderr]    Compiling cgmath v0.18.0
[INFO] [stderr]     Checking float_next_after v1.0.0
[INFO] [stderr]    Compiling serde_json v1.0.116
[INFO] [stderr]     Checking anstyle-query v1.0.2
[INFO] [stderr]     Checking as-raw-xcb-connection v1.0.1
[INFO] [stderr]     Checking colorchoice v1.0.0
[INFO] [stderr]     Checking anstyle v1.0.6
[INFO] [stderr]     Checking imagesize v0.12.0
[INFO] [stderr]     Checking x11rb-protocol v0.13.0
[INFO] [stderr]    Compiling glob v0.3.1
[INFO] [stderr]     Checking data-url v0.3.1
[INFO] [stderr]     Checking unicode-bidi v0.3.15
[INFO] [stderr]     Checking unicode-vo v0.1.0
[INFO] [stderr]    Compiling font-kit v0.12.0
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking anstream v0.6.13
[INFO] [stderr]     Checking lyon_tessellation v1.0.14
[INFO] [stderr]     Checking freetype v0.7.2
[INFO] [stderr]     Checking notify v6.1.1
[INFO] [stderr]     Checking dirs-next v2.0.0
[INFO] [stderr]     Checking lyon_algorithms v1.0.4
[INFO] [stderr]    Compiling eureka v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking brotli-decompressor v2.5.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking approx v0.4.0
[INFO] [stderr]     Checking bitreader v0.3.8
[INFO] [stderr]     Checking encoding_rs v0.8.34
[INFO] [stderr]     Checking pico-args v0.5.0
[INFO] [stderr]     Checking ucd-trie v0.1.6
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking glyph-names v0.2.0
[INFO] [stderr]     Checking smol_str v0.2.1
[INFO] [stderr]     Checking itoa v1.0.11
[INFO] [stderr]     Checking ryu v1.0.17
[INFO] [stderr]     Checking iana-time-zone v0.1.60
[INFO] [stderr]     Checking data-encoding v2.5.0
[INFO] [stderr]     Checking xmlwriter v0.1.0
[INFO] [stderr]     Checking chrono v0.4.38
[INFO] [stderr]     Checking lyon v1.0.1
[INFO] [stderr]     Checking whatlang v0.16.4
[INFO] [stderr]     Checking fontdue v0.8.0
[INFO] [stderr]     Checking wayland-client v0.31.2
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking regex v1.10.4
[INFO] [stderr]     Checking tobj v4.0.2
[INFO] [stderr]     Checking unicode-segmentation v1.11.0
[INFO] [stderr]     Checking indextree v4.6.1
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking unicode-linebreak v0.1.5
[INFO] [stderr]     Checking env_filter v0.1.0
[INFO] [stderr]     Checking env_logger v0.11.3
[INFO] [stderr]    Compiling bytemuck_derive v1.6.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.59
[INFO] [stderr]    Compiling tracing-attributes v0.1.27
[INFO] [stderr]    Compiling ouroboros_macro v0.17.2
[INFO] [stderr]    Compiling uuid-macro-internal v1.8.0
[INFO] [stderr]     Checking uuid v1.8.0
[INFO] [stderr]     Checking wayland-protocols v0.31.2
[INFO] [stderr]     Checking wayland-cursor v0.31.1
[INFO] [stderr]     Checking ouroboros v0.17.2
[INFO] [stderr]     Checking tracing v0.1.40
[INFO] [stderr]     Checking allsorts v0.14.1
[INFO] [stderr]     Checking naga v0.19.2
[INFO] [stderr]     Checking polling v3.7.0
[INFO] [stderr]     Checking calloop v0.12.4
[INFO] [stderr]     Checking bytemuck v1.15.0
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking rustybuzz v0.12.1
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking calloop-wayland-source v0.2.0
[INFO] [stderr]     Checking usvg-tree v0.38.0
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking assets_manager v0.11.5
[INFO] [stderr]     Checking usvg-parser v0.38.0
[INFO] [stderr]     Checking usvg-text-layout v0.38.0
[INFO] [stderr]     Checking usvg v0.38.0
[INFO] [stderr]     Checking wayland-protocols-wlr v0.2.0
[INFO] [stderr]     Checking wayland-protocols-plasma v0.2.0
[INFO] [stderr]     Checking sctk-adwaita v0.8.1
[INFO] [stderr]     Checking naga_oil v0.12.0
[INFO] [stderr]     Checking x11rb v0.13.0
[INFO] [stdout] warning: unused imports: `Asset`, `Compound`, `Handle`, and `loader`
[INFO] [stdout]  --> src/asset/asset_server.rs:1:22
[INFO] [stdout]   |
[INFO] [stdout] 1 | use assets_manager::{loader, Asset, AssetCache, Compound, Handle};
[INFO] [stdout]   |                      ^^^^^^  ^^^^^              ^^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/asset/asset_server.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryFrom`
[INFO] [stdout]  --> src/core/app.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::convert::TryFrom;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prelude::*`
[INFO] [stdout]   --> src/core/app.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | use cgmath::{prelude::*, Vector2};
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SamplerBindingType` and `util::DeviceExt`
[INFO] [stdout]   --> src/core/app.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | use wgpu::{util::DeviceExt, SamplerBindingType};
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `winit::platform::run_on_demand::EventLoopExtRunOnDemand`
[INFO] [stdout]   --> src/core/app.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use winit::platform::run_on_demand::EventLoopExtRunOnDemand;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Texture`
[INFO] [stdout]   --> src/core/app.rs:22:35
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::render::{RenderServer, Texture};
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Camera2d`
[INFO] [stdout]   --> src/core/app.rs:23:28
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::scene::{AsNode, Camera2d, World};
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Point3`
[INFO] [stdout]  --> src/math/transform.rs:1:31
[INFO] [stdout]   |
[INFO] [stdout] 1 | use cgmath::{Deg, InnerSpace, Point3, Quaternion, Rotation3, Vector2, Vector3, Zero};
[INFO] [stdout]   |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/atlas.rs:411:12
[INFO] [stdout]     |
[INFO] [stdout] 411 |         if (render_resources.params_buffer.is_some()) {
[INFO] [stdout]     |            ^                                        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 411 -         if (render_resources.params_buffer.is_some()) {
[INFO] [stdout] 411 +         if render_resources.params_buffer.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MaterialCache` and `MaterialId`
[INFO] [stdout]  --> src/render/gizmo.rs:1:31
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::render::material::{MaterialCache, MaterialId};
[INFO] [stdout]   |                               ^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InstanceMetadata` and `MeshId`
[INFO] [stdout]  --> src/render/gizmo.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::{InstanceMetadata, MeshId, RenderServer, Texture};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rustybuzz::ttf_parser::gpos::Device`
[INFO] [stdout]  --> src/render/gizmo.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rustybuzz::ttf_parser::gpos::Device;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/render/gizmo.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::BindGroupLayout`
[INFO] [stdout]  --> src/render/gizmo.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use wgpu::BindGroupLayout;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CameraUniform`
[INFO] [stdout]  --> src/render/mesh.rs:2:52
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::camera::{CameraRenderResources, CameraUniform};
[INFO] [stdout]   |                                                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TextureId`
[INFO] [stdout]  --> src/render/mesh.rs:8:82
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::render::{create_render_pipeline, RenderServer, Texture, TextureCache, TextureId};
[INFO] [stdout]   |                                                                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deg`, `InnerSpace`, `Rotation3`, and `Zero`
[INFO] [stdout]  --> src/render/mesh.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use cgmath::{Deg, InnerSpace, Matrix3, Matrix4, Quaternion, Rotation3, Vector3, Zero};
[INFO] [stdout]   |              ^^^  ^^^^^^^^^^                                ^^^^^^^^^           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Device`
[INFO] [stdout]   --> src/render/mesh.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use wgpu::{BufferAddress, Device, SamplerBindingType};
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 |         if (material_bind_group.is_some()) {
[INFO] [stdout]     |            ^                             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 389 -         if (material_bind_group.is_some()) {
[INFO] [stdout] 389 +         if material_bind_group.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:634:16
[INFO] [stdout]     |
[INFO] [stdout] 634 |             if (pair.1.get_flags() == 0) {
[INFO] [stdout]     |                ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 634 -             if (pair.1.get_flags() == 0) {
[INFO] [stdout] 634 +             if pair.1.get_flags() == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:643:16
[INFO] [stdout]     |
[INFO] [stdout] 643 |             if (bind_group.is_some()) {
[INFO] [stdout]     |                ^                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 643 -             if (bind_group.is_some()) {
[INFO] [stdout] 643 +             if bind_group.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:669:12
[INFO] [stdout]     |
[INFO] [stdout] 669 |         if (material_id.is_none()) {
[INFO] [stdout]     |            ^                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 669 -         if (material_id.is_none()) {
[INFO] [stdout] 669 +         if material_id.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:785:16
[INFO] [stdout]     |
[INFO] [stdout] 785 |             if (metadata.is_none()) {
[INFO] [stdout]     |                ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 785 -             if (metadata.is_none()) {
[INFO] [stdout] 785 +             if metadata.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:872:8
[INFO] [stdout]     |
[INFO] [stdout] 872 |     if (camera_render_resources.bind_group.is_none()) {
[INFO] [stdout]     |        ^                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 872 -     if (camera_render_resources.bind_group.is_none()) {
[INFO] [stdout] 872 +     if camera_render_resources.bind_group.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:875:8
[INFO] [stdout]     |
[INFO] [stdout] 875 |     if (mesh_render_resources.light_bind_group.is_none()) {
[INFO] [stdout]     |        ^                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 875 -     if (mesh_render_resources.light_bind_group.is_none()) {
[INFO] [stdout] 875 +     if mesh_render_resources.light_bind_group.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:887:12
[INFO] [stdout]     |
[INFO] [stdout] 887 |         if (extracted.material_id.is_some()) {
[INFO] [stdout]     |            ^                               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 887 -         if (extracted.material_id.is_some()) {
[INFO] [stdout] 887 +         if extracted.material_id.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:930:12
[INFO] [stdout]     |
[INFO] [stdout] 930 |         if (texture_bind_group.is_some()) {
[INFO] [stdout]     |            ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 930 -         if (texture_bind_group.is_some()) {
[INFO] [stdout] 930 +         if texture_bind_group.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::texture::Texture`
[INFO] [stdout]  --> src/render/render_server.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::texture::Texture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::bind_group::BindGroupCache`
[INFO] [stdout]  --> src/render/render_server.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::render::bind_group::BindGroupCache;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::camera::CameraUniform`
[INFO] [stdout]  --> src/render/render_server.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::render::camera::CameraUniform;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::shader_maker::ShaderMaker`
[INFO] [stdout]  --> src/render/render_server.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::render::shader_maker::ShaderMaker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DrawSprite2d`, `ExtractedSprite2d`, and `SpriteRenderResources`
[INFO] [stdout]   --> src/render/render_server.rs:10:29
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::render::sprite::{DrawSprite2d, ExtractedSprite2d, SpriteRenderResources};
[INFO] [stdout]    |                             ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::TextureCache`
[INFO] [stdout]   --> src/render/render_server.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::render::TextureCache;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::Point2`
[INFO] [stdout]   --> src/render/render_server.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use cgmath::Point2;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/render/render_server.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/render/render_server.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]   --> src/render/render_server.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use wgpu::util::DeviceExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::PolygonMode::Point`
[INFO] [stdout]   --> src/render/render_server.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use wgpu::PolygonMode::Point;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufferAddress` and `TextureFormat`
[INFO] [stdout]   --> src/render/render_server.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | use wgpu::{BufferAddress, TextureFormat};
[INFO] [stdout]    |            ^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rgb`
[INFO] [stdout]  --> src/render/texture.rs:3:58
[INFO] [stdout]   |
[INFO] [stdout] 3 | use image::{DynamicImage, GenericImageView, ImageBuffer, Rgb};
[INFO] [stdout]   |                                                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/render/texture.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::gizmo::GizmoRenderResources`
[INFO] [stdout]  --> src/render/light.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::gizmo::GizmoRenderResources;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::shader_maker::ShaderMaker`
[INFO] [stdout]  --> src/render/light.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::render::shader_maker::ShaderMaker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/light.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 |     if (render_resources.shadow_map.is_none()) {
[INFO] [stdout]     |        ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 112 -     if (render_resources.shadow_map.is_none()) {
[INFO] [stdout] 112 +     if render_resources.shadow_map.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/light.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 153 |     if (render_resources.light_camera_bind_group.is_none()) {
[INFO] [stdout]     |        ^                                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 153 -     if (render_resources.light_camera_bind_group.is_none()) {
[INFO] [stdout] 153 +     if render_resources.light_camera_bind_group.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/light.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 156 |     if (mesh_render_resources.light_bind_group.is_none()) {
[INFO] [stdout]     |        ^                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 156 -     if (mesh_render_resources.light_bind_group.is_none()) {
[INFO] [stdout] 156 +     if mesh_render_resources.light_bind_group.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TextureCache`, `TextureId`, and `Texture`
[INFO] [stdout]  --> src/render/bind_group.rs:1:21
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::render::{Texture, TextureCache, TextureId};
[INFO] [stdout]   |                     ^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vector2`
[INFO] [stdout]  --> src/render/camera.rs:4:48
[INFO] [stdout]   |
[INFO] [stdout] 4 | use cgmath::{ortho, perspective, Matrix4, Rad, Vector2};
[INFO] [stdout]   |                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::atlas::ExtractedAtlas`
[INFO] [stdout]  --> src/render/draw_command.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::render::atlas::ExtractedAtlas;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::camera::CameraUniform`
[INFO] [stdout]  --> src/render/draw_command.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::camera::CameraUniform;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::sprite::ExtractedSprite2d`
[INFO] [stdout]  --> src/render/draw_command.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::render::sprite::ExtractedSprite2d;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::ExtractedMesh`
[INFO] [stdout]  --> src/render/draw_command.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::render::ExtractedMesh;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BindGroupCache`
[INFO] [stdout]  --> src/render/material.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::render::bind_group::{BindGroupCache, BindGroupId};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Texture`
[INFO] [stdout]  --> src/render/material.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::{Texture, TextureCache, TextureId};
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/material.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 |         if (self.color_texture.is_some()) {
[INFO] [stdout]    |            ^                            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 28 -         if (self.color_texture.is_some()) {
[INFO] [stdout] 28 +         if self.color_texture.is_some() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/material.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |         if (self.normal_texture.is_some()) {
[INFO] [stdout]    |            ^                             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 32 -         if (self.normal_texture.is_some()) {
[INFO] [stdout] 32 +         if self.normal_texture.is_some() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/material.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 |         if (self.color_texture.is_some()) {
[INFO] [stdout]    |            ^                            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 42 -         if (self.color_texture.is_some()) {
[INFO] [stdout] 42 +         if self.color_texture.is_some() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/material.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 |         if (self.normal_texture.is_some()) {
[INFO] [stdout]    |            ^                             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 46 -         if (self.normal_texture.is_some()) {
[INFO] [stdout] 46 +         if self.normal_texture.is_some() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::asset::AssetServer`
[INFO] [stdout]  --> src/render/render_world.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::asset::AssetServer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::engine::Engine`
[INFO] [stdout]  --> src/render/render_world.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::core::engine::Engine;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::alignup_u32`
[INFO] [stdout]  --> src/render/render_world.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::math::alignup_u32;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::bind_group::BindGroupCache`
[INFO] [stdout]  --> src/render/render_world.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::render::bind_group::BindGroupCache;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CameraUniform`
[INFO] [stdout]  --> src/render/render_world.rs:6:64
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::render::camera::{CameraRenderResources, CameraType, CameraUniform, ExtractedCameras};
[INFO] [stdout]   |                                                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LightUniform`
[INFO] [stdout]  --> src/render/render_world.rs:9:45
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::render::light::{ExtractedLights, LightUniform};
[INFO] [stdout]   |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DrawModel`
[INFO] [stdout]   --> src/render/render_world.rs:16:36
[INFO] [stdout]    |
[INFO] [stdout] 16 |     prepare_meshes, render_meshes, DrawModel, ExtractedMesh, MeshCache, MeshRenderResources,
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Camera2d` and `World`
[INFO] [stdout]   --> src/render/render_world.rs:19:20
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::scene::{Camera2d, World};
[INFO] [stdout]    |                    ^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::window::InputServer`
[INFO] [stdout]   --> src/render/render_world.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::window::InputServer;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::Point2`
[INFO] [stdout]   --> src/render/render_world.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use cgmath::Point2;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/render/render_world.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufferAddress`, `DynamicOffset`, and `SamplerBindingType`
[INFO] [stdout]   --> src/render/render_world.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | use wgpu::{BufferAddress, DynamicOffset, SamplerBindingType};
[INFO] [stdout]    |            ^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EventLoopWindowTarget` and `EventLoop`
[INFO] [stdout]   --> src/render/render_world.rs:24:25
[INFO] [stdout]    |
[INFO] [stdout] 24 | use winit::event_loop::{EventLoop, EventLoopWindowTarget};
[INFO] [stdout]    |                         ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `WindowBuilder` and `Window`
[INFO] [stdout]   --> src/render/render_world.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 | use winit::window::{Window, WindowBuilder};
[INFO] [stdout]    |                     ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/render_world.rs:151:20
[INFO] [stdout]     |
[INFO] [stdout] 151 |                 if (self.extracted.sky.is_some()) {
[INFO] [stdout]     |                    ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 151 -                 if (self.extracted.sky.is_some()) {
[INFO] [stdout] 151 +                 if self.extracted.sky.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/render_world.rs:182:20
[INFO] [stdout]     |
[INFO] [stdout] 182 |                 if (self.camera_render_resources.bind_group.is_some()) {
[INFO] [stdout]     |                    ^                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 182 -                 if (self.camera_render_resources.bind_group.is_some()) {
[INFO] [stdout] 182 +                 if self.camera_render_resources.bind_group.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ComposerError`
[INFO] [stdout]  --> src/render/shader_maker.rs:2:43
[INFO] [stdout]   |
[INFO] [stdout] 2 |     ComposableModuleDescriptor, Composer, ComposerError, NagaModuleDescriptor, ShaderDefValue,
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/sky.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 |     if (render_resources.texture.is_none() || render_resources.texture.unwrap() != *texture_id) {
[INFO] [stdout]    |        ^                                                                                      ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 71 -     if (render_resources.texture.is_none() || render_resources.texture.unwrap() != *texture_id) {
[INFO] [stdout] 71 +     if render_resources.texture.is_none() || render_resources.texture.unwrap() != *texture_id {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::alignup_u32`
[INFO] [stdout]  --> src/render/sprite.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::math::alignup_u32;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BindGroupCache` and `BindGroupId`
[INFO] [stdout]  --> src/render/sprite.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::render::bind_group::{BindGroupCache, BindGroupId};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `naga::TypeInner::Vector`
[INFO] [stdout]  --> src/render/sprite.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use naga::TypeInner::Vector;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DynamicOffset`
[INFO] [stdout]   --> src/render/sprite.rs:12:35
[INFO] [stdout]    |
[INFO] [stdout] 12 | use wgpu::{BufferAddress, Device, DynamicOffset, SamplerBindingType};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/sprite.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 331 |         if (e.flip_x) {
[INFO] [stdout]     |            ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 331 -         if (e.flip_x) {
[INFO] [stdout] 331 +         if e.flip_x {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/sprite.rs:334:12
[INFO] [stdout]     |
[INFO] [stdout] 334 |         if (e.flip_y) {
[INFO] [stdout]     |            ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 334 -         if (e.flip_y) {
[INFO] [stdout] 334 +         if e.flip_y {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/sprite.rs:375:12
[INFO] [stdout]     |
[INFO] [stdout] 375 |         if (need_new_batch) {
[INFO] [stdout]     |            ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 375 -         if (need_new_batch) {
[INFO] [stdout] 375 +         if need_new_batch {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Angle`, `InnerSpace`, `Perspective`, `Point2`, and `Point3`
[INFO] [stdout]  --> src/scene/d2/camera2d.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cgmath::{Angle, InnerSpace, Matrix4, Perspective, Point2, Point3, Vector2, Vector3};
[INFO] [stdout]   |              ^^^^^  ^^^^^^^^^^           ^^^^^^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::rect_to_vector4`
[INFO] [stdout]  --> src/scene/d2/label.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::math::rect_to_vector4;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::transform::Transform2d`
[INFO] [stdout]  --> src/scene/d2/label.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::math::transform::Transform2d;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtlasMode` and `DrawAtlas`
[INFO] [stdout]  --> src/scene/d2/label.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::render::atlas::{Atlas, AtlasMode, DrawAtlas, ExtractedAtlas};
[INFO] [stdout]   |                                   ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RenderServer` and `TextureCache`
[INFO] [stdout]  --> src/scene/d2/label.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::render::{RenderServer, TextureCache};
[INFO] [stdout]   |                     ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::text::FONT_ATLAS_SIZE`
[INFO] [stdout]  --> src/scene/d2/label.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::text::FONT_ATLAS_SIZE;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EuclideanSpace`, `Point2`, `Vector3`, and `Vector4`
[INFO] [stdout]   --> src/scene/d2/label.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | use cgmath::{EuclideanSpace, Point2, Vector2, Vector3, Vector4};
[INFO] [stdout]    |              ^^^^^^^^^^^^^^  ^^^^^^           ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::DynamicImage`
[INFO] [stdout]   --> src/scene/d2/label.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use image::DynamicImage;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `usvg::Node`
[INFO] [stdout]   --> src/scene/d2/label.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use usvg::Node;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::Singletons`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::core::Singletons;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::draw_command::DrawCommands`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::render::draw_command::DrawCommands;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scene::NodeType`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::scene::NodeType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InputEvent` and `InputServer`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::window::{InputEvent, InputServer};
[INFO] [stdout]   |                     ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::any::Any;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::transform::Transform2d`
[INFO] [stdout]  --> src/scene/d2/sprite2d.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::math::transform::Transform2d;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mesh` and `Texture`
[INFO] [stdout]  --> src/scene/d2/sprite2d.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::render::{Mesh, Texture, TextureCache, TextureId};
[INFO] [stdout]   |                     ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Label`
[INFO] [stdout]  --> src/scene/d2/sprite2d.rs:9:28
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::scene::{AsNode, Label, NodeType};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scene/d2/sprite2d.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 |         if (self.texture.is_none()) {
[INFO] [stdout]     |            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 143 -         if (self.texture.is_none()) {
[INFO] [stdout] 143 +         if self.texture.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `button::*`
[INFO] [stdout]  --> src/scene/d2/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use button::*;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vector_sprite::*`
[INFO] [stdout]   --> src/scene/d2/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use vector_sprite::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Key`
[INFO] [stdout]  --> src/scene/d3/camera3d.rs:6:46
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::window::{InputEvent, InputServer, Key};
[INFO] [stdout]   |                                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::rc::Rc;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use wgpu::util::DeviceExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::BufferAddress`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use wgpu::BufferAddress;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LogicalPosition`, `PhysicalPosition`, and `Position`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | use winit::dpi::{LogicalPosition, PhysicalPosition, Position};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Named` and `Unidentified`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:18:28
[INFO] [stdout]    |
[INFO] [stdout] 18 | use winit::keyboard::Key::{Named, Unidentified};
[INFO] [stdout]    |                            ^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NamedKey` and `NativeKeyCode`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:19:32
[INFO] [stdout]    |
[INFO] [stdout] 19 | use winit::keyboard::{KeyCode, NamedKey, NativeKeyCode};
[INFO] [stdout]    |                                ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `winit::window::Window`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use winit::window::Window;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::prelude::*`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use cgmath::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `naga::SwitchValue::Default`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use naga::SwitchValue::Default;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use wgpu::util::DeviceExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LightUniform` and `PointLightUniform`
[INFO] [stdout]   --> src/scene/d3/directional_light.rs:12:53
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::render::light::{DirectionalLightUniform, LightUniform, PointLightUniform};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mesh`, `RenderServer`, and `Texture`
[INFO] [stdout]   --> src/scene/d3/directional_light.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::render::{Mesh, RenderServer, Texture};
[INFO] [stdout]    |                     ^^^^  ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::transform::Transform3d`
[INFO] [stdout]   --> src/scene/d3/model.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::math::transform::Transform3d;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instance`
[INFO] [stdout]   --> src/scene/d3/model.rs:16:20
[INFO] [stdout]    |
[INFO] [stdout] 16 |     ExtractedMesh, Instance, Mesh, MeshCache, MeshId, RenderServer, Texture, TextureCache,
[INFO] [stdout]    |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scene/d3/model.rs:242:16
[INFO] [stdout]     |
[INFO] [stdout] 242 |             if (m.mesh.material_id.is_some()) {
[INFO] [stdout]     |                ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 242 -             if (m.mesh.material_id.is_some()) {
[INFO] [stdout] 242 +             if m.mesh.material_id.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Transform2d`
[INFO] [stdout]  --> src/scene/d3/node_3d.rs:1:30
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::math::transform::{Transform2d, Transform3d};
[INFO] [stdout]   |                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsNodeUi` and `Sprite2d`
[INFO] [stdout]  --> src/scene/d3/node_3d.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::scene::{AsNodeUi, Sprite2d};
[INFO] [stdout]   |                    ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vector2`
[INFO] [stdout]  --> src/scene/d3/node_3d.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use cgmath::{Quaternion, Vector2, Vector3};
[INFO] [stdout]   |                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::transform::Transform3d`
[INFO] [stdout]  --> src/scene/d3/point_light.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::math::transform::Transform3d;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::prelude::*`
[INFO] [stdout]  --> src/scene/d3/point_light.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use cgmath::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/scene/d3/point_light.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/scene/d3/point_light.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LightUniform`
[INFO] [stdout]   --> src/scene/d3/point_light.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::render::light::{LightUniform, PointLightUniform};
[INFO] [stdout]    |                            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mesh`, `RenderServer`, and `Texture`
[INFO] [stdout]   --> src/scene/d3/point_light.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::render::{Mesh, RenderServer, Texture};
[INFO] [stdout]    |                     ^^^^  ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Model`
[INFO] [stdout]   --> src/scene/d3/point_light.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::scene::{AsNode, AsNode3d, Model, Node3d, NodeType};
[INFO] [stdout]    |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Context`
[INFO] [stdout]  --> src/scene/d3/sky.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Context;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::*`
[INFO] [stdout]  --> src/scene/d3/sky.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::*;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::InnerSpace`
[INFO] [stdout]  --> src/scene/d3/sky.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use cgmath::InnerSpace;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/scene/d3/sky.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/scene/d3/sky.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/scene/d3/sky.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/scene/d3/sky.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]   --> src/scene/d3/sky.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use wgpu::util::DeviceExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::material::MaterialId`
[INFO] [stdout]   --> src/scene/d3/sky.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::render::material::MaterialId;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mesh` and `Texture`
[INFO] [stdout]   --> src/scene/d3/sky.rs:15:21
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::render::{Mesh, Texture, TextureId};
[INFO] [stdout]    |                     ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/text/font.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/text/font.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BidiClass` and `Level`
[INFO] [stdout]   --> src/text/font.rs:16:20
[INFO] [stdout]    |
[INFO] [stdout] 16 | use unicode_bidi::{BidiClass, BidiInfo, Level};
[INFO] [stdout]    |                    ^^^^^^^^^            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Allowed`, `Mandatory`, and `linebreaks`
[INFO] [stdout]   --> src/text/font.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     break_property, linebreaks, BreakClass,
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 19 |     BreakOpportunity::{Allowed, Mandatory},
[INFO] [stdout]    |                        ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unicode_segmentation::UnicodeSegmentation`
[INFO] [stdout]   --> src/text/font.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use unicode_segmentation::UnicodeSegmentation;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Texture`
[INFO] [stdout]  --> src/text/text_server.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::render::{RenderServer, Texture, TextureCache};
[INFO] [stdout]   |                                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Glyph` and `Script`
[INFO] [stdout]  --> src/text/text_server.rs:5:32
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::text::{DynamicFont, Glyph, Script, FONT_ATLAS_SIZE};
[INFO] [stdout]   |                                ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Point2`
[INFO] [stdout]  --> src/text/text_server.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cgmath::{Point2, Vector2, Vector4};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::Map`
[INFO] [stdout]  --> src/text/text_server.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::iter::Map;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/text/text_server.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 146 |         if (font.is_none()) {
[INFO] [stdout]     |            ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 146 -         if (font.is_none()) {
[INFO] [stdout] 146 +         if font.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/text/text_server.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 157 |         if (font.is_none()) {
[INFO] [stdout]     |            ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 157 -         if (font.is_none()) {
[INFO] [stdout] 157 +         if font.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::Point2`
[INFO] [stdout]  --> src/window/input_server.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use cgmath::Point2;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Formatter`
[INFO] [stdout]  --> src/window/input_server.rs:2:23
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{Debug, Formatter};
[INFO] [stdout]   |                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Asset`, `Compound`, `Handle`, and `loader`
[INFO] [stdout]  --> src/asset/asset_server.rs:1:22
[INFO] [stdout]   |
[INFO] [stdout] 1 | use assets_manager::{loader, Asset, AssetCache, Compound, Handle};
[INFO] [stdout]   |                      ^^^^^^  ^^^^^              ^^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/asset/asset_server.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryFrom`
[INFO] [stdout]  --> src/core/app.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::convert::TryFrom;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prelude::*`
[INFO] [stdout]   --> src/core/app.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | use cgmath::{prelude::*, Vector2};
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SamplerBindingType` and `util::DeviceExt`
[INFO] [stdout]   --> src/core/app.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | use wgpu::{util::DeviceExt, SamplerBindingType};
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `winit::platform::run_on_demand::EventLoopExtRunOnDemand`
[INFO] [stdout]   --> src/core/app.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use winit::platform::run_on_demand::EventLoopExtRunOnDemand;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Texture`
[INFO] [stdout]   --> src/core/app.rs:22:35
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::render::{RenderServer, Texture};
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Camera2d`
[INFO] [stdout]   --> src/core/app.rs:23:28
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::scene::{AsNode, Camera2d, World};
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Point3`
[INFO] [stdout]  --> src/math/transform.rs:1:31
[INFO] [stdout]   |
[INFO] [stdout] 1 | use cgmath::{Deg, InnerSpace, Point3, Quaternion, Rotation3, Vector2, Vector3, Zero};
[INFO] [stdout]   |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/atlas.rs:411:12
[INFO] [stdout]     |
[INFO] [stdout] 411 |         if (render_resources.params_buffer.is_some()) {
[INFO] [stdout]     |            ^                                        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 411 -         if (render_resources.params_buffer.is_some()) {
[INFO] [stdout] 411 +         if render_resources.params_buffer.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MaterialCache` and `MaterialId`
[INFO] [stdout]  --> src/render/gizmo.rs:1:31
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::render::material::{MaterialCache, MaterialId};
[INFO] [stdout]   |                               ^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InstanceMetadata` and `MeshId`
[INFO] [stdout]  --> src/render/gizmo.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::{InstanceMetadata, MeshId, RenderServer, Texture};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rustybuzz::ttf_parser::gpos::Device`
[INFO] [stdout]  --> src/render/gizmo.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rustybuzz::ttf_parser::gpos::Device;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/render/gizmo.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::BindGroupLayout`
[INFO] [stdout]  --> src/render/gizmo.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use wgpu::BindGroupLayout;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CameraUniform`
[INFO] [stdout]  --> src/render/mesh.rs:2:52
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::camera::{CameraRenderResources, CameraUniform};
[INFO] [stdout]   |                                                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TextureId`
[INFO] [stdout]  --> src/render/mesh.rs:8:82
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::render::{create_render_pipeline, RenderServer, Texture, TextureCache, TextureId};
[INFO] [stdout]   |                                                                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deg`, `InnerSpace`, `Rotation3`, and `Zero`
[INFO] [stdout]  --> src/render/mesh.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use cgmath::{Deg, InnerSpace, Matrix3, Matrix4, Quaternion, Rotation3, Vector3, Zero};
[INFO] [stdout]   |              ^^^  ^^^^^^^^^^                                ^^^^^^^^^           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Device`
[INFO] [stdout]   --> src/render/mesh.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use wgpu::{BufferAddress, Device, SamplerBindingType};
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 |         if (material_bind_group.is_some()) {
[INFO] [stdout]     |            ^                             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 389 -         if (material_bind_group.is_some()) {
[INFO] [stdout] 389 +         if material_bind_group.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:634:16
[INFO] [stdout]     |
[INFO] [stdout] 634 |             if (pair.1.get_flags() == 0) {
[INFO] [stdout]     |                ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 634 -             if (pair.1.get_flags() == 0) {
[INFO] [stdout] 634 +             if pair.1.get_flags() == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:643:16
[INFO] [stdout]     |
[INFO] [stdout] 643 |             if (bind_group.is_some()) {
[INFO] [stdout]     |                ^                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 643 -             if (bind_group.is_some()) {
[INFO] [stdout] 643 +             if bind_group.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:669:12
[INFO] [stdout]     |
[INFO] [stdout] 669 |         if (material_id.is_none()) {
[INFO] [stdout]     |            ^                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 669 -         if (material_id.is_none()) {
[INFO] [stdout] 669 +         if material_id.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:785:16
[INFO] [stdout]     |
[INFO] [stdout] 785 |             if (metadata.is_none()) {
[INFO] [stdout]     |                ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 785 -             if (metadata.is_none()) {
[INFO] [stdout] 785 +             if metadata.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:872:8
[INFO] [stdout]     |
[INFO] [stdout] 872 |     if (camera_render_resources.bind_group.is_none()) {
[INFO] [stdout]     |        ^                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 872 -     if (camera_render_resources.bind_group.is_none()) {
[INFO] [stdout] 872 +     if camera_render_resources.bind_group.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:875:8
[INFO] [stdout]     |
[INFO] [stdout] 875 |     if (mesh_render_resources.light_bind_group.is_none()) {
[INFO] [stdout]     |        ^                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 875 -     if (mesh_render_resources.light_bind_group.is_none()) {
[INFO] [stdout] 875 +     if mesh_render_resources.light_bind_group.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:887:12
[INFO] [stdout]     |
[INFO] [stdout] 887 |         if (extracted.material_id.is_some()) {
[INFO] [stdout]     |            ^                               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 887 -         if (extracted.material_id.is_some()) {
[INFO] [stdout] 887 +         if extracted.material_id.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/mesh.rs:930:12
[INFO] [stdout]     |
[INFO] [stdout] 930 |         if (texture_bind_group.is_some()) {
[INFO] [stdout]     |            ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 930 -         if (texture_bind_group.is_some()) {
[INFO] [stdout] 930 +         if texture_bind_group.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::texture::Texture`
[INFO] [stdout]  --> src/render/render_server.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::texture::Texture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::bind_group::BindGroupCache`
[INFO] [stdout]  --> src/render/render_server.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::render::bind_group::BindGroupCache;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::camera::CameraUniform`
[INFO] [stdout]  --> src/render/render_server.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::render::camera::CameraUniform;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::shader_maker::ShaderMaker`
[INFO] [stdout]  --> src/render/render_server.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::render::shader_maker::ShaderMaker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DrawSprite2d`, `ExtractedSprite2d`, and `SpriteRenderResources`
[INFO] [stdout]   --> src/render/render_server.rs:10:29
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::render::sprite::{DrawSprite2d, ExtractedSprite2d, SpriteRenderResources};
[INFO] [stdout]    |                             ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::TextureCache`
[INFO] [stdout]   --> src/render/render_server.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::render::TextureCache;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::Point2`
[INFO] [stdout]   --> src/render/render_server.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use cgmath::Point2;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/render/render_server.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/render/render_server.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]   --> src/render/render_server.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use wgpu::util::DeviceExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::PolygonMode::Point`
[INFO] [stdout]   --> src/render/render_server.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use wgpu::PolygonMode::Point;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufferAddress` and `TextureFormat`
[INFO] [stdout]   --> src/render/render_server.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | use wgpu::{BufferAddress, TextureFormat};
[INFO] [stdout]    |            ^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rgb`
[INFO] [stdout]  --> src/render/texture.rs:3:58
[INFO] [stdout]   |
[INFO] [stdout] 3 | use image::{DynamicImage, GenericImageView, ImageBuffer, Rgb};
[INFO] [stdout]   |                                                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/render/texture.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::gizmo::GizmoRenderResources`
[INFO] [stdout]  --> src/render/light.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::gizmo::GizmoRenderResources;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::shader_maker::ShaderMaker`
[INFO] [stdout]  --> src/render/light.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::render::shader_maker::ShaderMaker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/light.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 |     if (render_resources.shadow_map.is_none()) {
[INFO] [stdout]     |        ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 112 -     if (render_resources.shadow_map.is_none()) {
[INFO] [stdout] 112 +     if render_resources.shadow_map.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/light.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 153 |     if (render_resources.light_camera_bind_group.is_none()) {
[INFO] [stdout]     |        ^                                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 153 -     if (render_resources.light_camera_bind_group.is_none()) {
[INFO] [stdout] 153 +     if render_resources.light_camera_bind_group.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/light.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 156 |     if (mesh_render_resources.light_bind_group.is_none()) {
[INFO] [stdout]     |        ^                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 156 -     if (mesh_render_resources.light_bind_group.is_none()) {
[INFO] [stdout] 156 +     if mesh_render_resources.light_bind_group.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TextureCache`, `TextureId`, and `Texture`
[INFO] [stdout]  --> src/render/bind_group.rs:1:21
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::render::{Texture, TextureCache, TextureId};
[INFO] [stdout]   |                     ^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vector2`
[INFO] [stdout]  --> src/render/camera.rs:4:48
[INFO] [stdout]   |
[INFO] [stdout] 4 | use cgmath::{ortho, perspective, Matrix4, Rad, Vector2};
[INFO] [stdout]   |                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::atlas::ExtractedAtlas`
[INFO] [stdout]  --> src/render/draw_command.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::render::atlas::ExtractedAtlas;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::camera::CameraUniform`
[INFO] [stdout]  --> src/render/draw_command.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::camera::CameraUniform;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::sprite::ExtractedSprite2d`
[INFO] [stdout]  --> src/render/draw_command.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::render::sprite::ExtractedSprite2d;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::ExtractedMesh`
[INFO] [stdout]  --> src/render/draw_command.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::render::ExtractedMesh;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BindGroupCache`
[INFO] [stdout]  --> src/render/material.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::render::bind_group::{BindGroupCache, BindGroupId};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Texture`
[INFO] [stdout]  --> src/render/material.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::render::{Texture, TextureCache, TextureId};
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/material.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 |         if (self.color_texture.is_some()) {
[INFO] [stdout]    |            ^                            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 28 -         if (self.color_texture.is_some()) {
[INFO] [stdout] 28 +         if self.color_texture.is_some() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/material.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |         if (self.normal_texture.is_some()) {
[INFO] [stdout]    |            ^                             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 32 -         if (self.normal_texture.is_some()) {
[INFO] [stdout] 32 +         if self.normal_texture.is_some() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/material.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 |         if (self.color_texture.is_some()) {
[INFO] [stdout]    |            ^                            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 42 -         if (self.color_texture.is_some()) {
[INFO] [stdout] 42 +         if self.color_texture.is_some() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/material.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 |         if (self.normal_texture.is_some()) {
[INFO] [stdout]    |            ^                             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 46 -         if (self.normal_texture.is_some()) {
[INFO] [stdout] 46 +         if self.normal_texture.is_some() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::asset::AssetServer`
[INFO] [stdout]  --> src/render/render_world.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::asset::AssetServer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::engine::Engine`
[INFO] [stdout]  --> src/render/render_world.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::core::engine::Engine;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::alignup_u32`
[INFO] [stdout]  --> src/render/render_world.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::math::alignup_u32;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::bind_group::BindGroupCache`
[INFO] [stdout]  --> src/render/render_world.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::render::bind_group::BindGroupCache;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CameraUniform`
[INFO] [stdout]  --> src/render/render_world.rs:6:64
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::render::camera::{CameraRenderResources, CameraType, CameraUniform, ExtractedCameras};
[INFO] [stdout]   |                                                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LightUniform`
[INFO] [stdout]  --> src/render/render_world.rs:9:45
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::render::light::{ExtractedLights, LightUniform};
[INFO] [stdout]   |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DrawModel`
[INFO] [stdout]   --> src/render/render_world.rs:16:36
[INFO] [stdout]    |
[INFO] [stdout] 16 |     prepare_meshes, render_meshes, DrawModel, ExtractedMesh, MeshCache, MeshRenderResources,
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Camera2d` and `World`
[INFO] [stdout]   --> src/render/render_world.rs:19:20
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::scene::{Camera2d, World};
[INFO] [stdout]    |                    ^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::window::InputServer`
[INFO] [stdout]   --> src/render/render_world.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::window::InputServer;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::Point2`
[INFO] [stdout]   --> src/render/render_world.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use cgmath::Point2;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/render/render_world.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufferAddress`, `DynamicOffset`, and `SamplerBindingType`
[INFO] [stdout]   --> src/render/render_world.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | use wgpu::{BufferAddress, DynamicOffset, SamplerBindingType};
[INFO] [stdout]    |            ^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EventLoopWindowTarget` and `EventLoop`
[INFO] [stdout]   --> src/render/render_world.rs:24:25
[INFO] [stdout]    |
[INFO] [stdout] 24 | use winit::event_loop::{EventLoop, EventLoopWindowTarget};
[INFO] [stdout]    |                         ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `WindowBuilder` and `Window`
[INFO] [stdout]   --> src/render/render_world.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 | use winit::window::{Window, WindowBuilder};
[INFO] [stdout]    |                     ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/render_world.rs:151:20
[INFO] [stdout]     |
[INFO] [stdout] 151 |                 if (self.extracted.sky.is_some()) {
[INFO] [stdout]     |                    ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 151 -                 if (self.extracted.sky.is_some()) {
[INFO] [stdout] 151 +                 if self.extracted.sky.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/render_world.rs:182:20
[INFO] [stdout]     |
[INFO] [stdout] 182 |                 if (self.camera_render_resources.bind_group.is_some()) {
[INFO] [stdout]     |                    ^                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 182 -                 if (self.camera_render_resources.bind_group.is_some()) {
[INFO] [stdout] 182 +                 if self.camera_render_resources.bind_group.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ComposerError`
[INFO] [stdout]  --> src/render/shader_maker.rs:2:43
[INFO] [stdout]   |
[INFO] [stdout] 2 |     ComposableModuleDescriptor, Composer, ComposerError, NagaModuleDescriptor, ShaderDefValue,
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/sky.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 |     if (render_resources.texture.is_none() || render_resources.texture.unwrap() != *texture_id) {
[INFO] [stdout]    |        ^                                                                                      ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 71 -     if (render_resources.texture.is_none() || render_resources.texture.unwrap() != *texture_id) {
[INFO] [stdout] 71 +     if render_resources.texture.is_none() || render_resources.texture.unwrap() != *texture_id {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::alignup_u32`
[INFO] [stdout]  --> src/render/sprite.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::math::alignup_u32;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BindGroupCache` and `BindGroupId`
[INFO] [stdout]  --> src/render/sprite.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::render::bind_group::{BindGroupCache, BindGroupId};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `naga::TypeInner::Vector`
[INFO] [stdout]  --> src/render/sprite.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use naga::TypeInner::Vector;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DynamicOffset`
[INFO] [stdout]   --> src/render/sprite.rs:12:35
[INFO] [stdout]    |
[INFO] [stdout] 12 | use wgpu::{BufferAddress, Device, DynamicOffset, SamplerBindingType};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/sprite.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 331 |         if (e.flip_x) {
[INFO] [stdout]     |            ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 331 -         if (e.flip_x) {
[INFO] [stdout] 331 +         if e.flip_x {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/sprite.rs:334:12
[INFO] [stdout]     |
[INFO] [stdout] 334 |         if (e.flip_y) {
[INFO] [stdout]     |            ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 334 -         if (e.flip_y) {
[INFO] [stdout] 334 +         if e.flip_y {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/render/sprite.rs:375:12
[INFO] [stdout]     |
[INFO] [stdout] 375 |         if (need_new_batch) {
[INFO] [stdout]     |            ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 375 -         if (need_new_batch) {
[INFO] [stdout] 375 +         if need_new_batch {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Angle`, `InnerSpace`, `Perspective`, `Point2`, and `Point3`
[INFO] [stdout]  --> src/scene/d2/camera2d.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cgmath::{Angle, InnerSpace, Matrix4, Perspective, Point2, Point3, Vector2, Vector3};
[INFO] [stdout]   |              ^^^^^  ^^^^^^^^^^           ^^^^^^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::rect_to_vector4`
[INFO] [stdout]  --> src/scene/d2/label.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::math::rect_to_vector4;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::transform::Transform2d`
[INFO] [stdout]  --> src/scene/d2/label.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::math::transform::Transform2d;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtlasMode` and `DrawAtlas`
[INFO] [stdout]  --> src/scene/d2/label.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::render::atlas::{Atlas, AtlasMode, DrawAtlas, ExtractedAtlas};
[INFO] [stdout]   |                                   ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RenderServer` and `TextureCache`
[INFO] [stdout]  --> src/scene/d2/label.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::render::{RenderServer, TextureCache};
[INFO] [stdout]   |                     ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::text::FONT_ATLAS_SIZE`
[INFO] [stdout]  --> src/scene/d2/label.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::text::FONT_ATLAS_SIZE;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EuclideanSpace`, `Point2`, `Vector3`, and `Vector4`
[INFO] [stdout]   --> src/scene/d2/label.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | use cgmath::{EuclideanSpace, Point2, Vector2, Vector3, Vector4};
[INFO] [stdout]    |              ^^^^^^^^^^^^^^  ^^^^^^           ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::DynamicImage`
[INFO] [stdout]   --> src/scene/d2/label.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use image::DynamicImage;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `usvg::Node`
[INFO] [stdout]   --> src/scene/d2/label.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use usvg::Node;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::Singletons`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::core::Singletons;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::draw_command::DrawCommands`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::render::draw_command::DrawCommands;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scene::NodeType`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::scene::NodeType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InputEvent` and `InputServer`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::window::{InputEvent, InputServer};
[INFO] [stdout]   |                     ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/scene/d2/node_ui.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::any::Any;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::transform::Transform2d`
[INFO] [stdout]  --> src/scene/d2/sprite2d.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::math::transform::Transform2d;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mesh` and `Texture`
[INFO] [stdout]  --> src/scene/d2/sprite2d.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::render::{Mesh, Texture, TextureCache, TextureId};
[INFO] [stdout]   |                     ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Label`
[INFO] [stdout]  --> src/scene/d2/sprite2d.rs:9:28
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::scene::{AsNode, Label, NodeType};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scene/d2/sprite2d.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 |         if (self.texture.is_none()) {
[INFO] [stdout]     |            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 143 -         if (self.texture.is_none()) {
[INFO] [stdout] 143 +         if self.texture.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `button::*`
[INFO] [stdout]  --> src/scene/d2/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use button::*;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vector_sprite::*`
[INFO] [stdout]   --> src/scene/d2/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use vector_sprite::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Key`
[INFO] [stdout]  --> src/scene/d3/camera3d.rs:6:46
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::window::{InputEvent, InputServer, Key};
[INFO] [stdout]   |                                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::rc::Rc;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use wgpu::util::DeviceExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::BufferAddress`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use wgpu::BufferAddress;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LogicalPosition`, `PhysicalPosition`, and `Position`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | use winit::dpi::{LogicalPosition, PhysicalPosition, Position};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Named` and `Unidentified`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:18:28
[INFO] [stdout]    |
[INFO] [stdout] 18 | use winit::keyboard::Key::{Named, Unidentified};
[INFO] [stdout]    |                            ^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NamedKey` and `NativeKeyCode`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:19:32
[INFO] [stdout]    |
[INFO] [stdout] 19 | use winit::keyboard::{KeyCode, NamedKey, NativeKeyCode};
[INFO] [stdout]    |                                ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `winit::window::Window`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use winit::window::Window;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::prelude::*`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use cgmath::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `naga::SwitchValue::Default`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use naga::SwitchValue::Default;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]  --> src/scene/d3/directional_light.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use wgpu::util::DeviceExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LightUniform` and `PointLightUniform`
[INFO] [stdout]   --> src/scene/d3/directional_light.rs:12:53
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::render::light::{DirectionalLightUniform, LightUniform, PointLightUniform};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mesh`, `RenderServer`, and `Texture`
[INFO] [stdout]   --> src/scene/d3/directional_light.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::render::{Mesh, RenderServer, Texture};
[INFO] [stdout]    |                     ^^^^  ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::transform::Transform3d`
[INFO] [stdout]   --> src/scene/d3/model.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::math::transform::Transform3d;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instance`
[INFO] [stdout]   --> src/scene/d3/model.rs:16:20
[INFO] [stdout]    |
[INFO] [stdout] 16 |     ExtractedMesh, Instance, Mesh, MeshCache, MeshId, RenderServer, Texture, TextureCache,
[INFO] [stdout]    |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scene/d3/model.rs:242:16
[INFO] [stdout]     |
[INFO] [stdout] 242 |             if (m.mesh.material_id.is_some()) {
[INFO] [stdout]     |                ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 242 -             if (m.mesh.material_id.is_some()) {
[INFO] [stdout] 242 +             if m.mesh.material_id.is_some() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Transform2d`
[INFO] [stdout]  --> src/scene/d3/node_3d.rs:1:30
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::math::transform::{Transform2d, Transform3d};
[INFO] [stdout]   |                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsNodeUi` and `Sprite2d`
[INFO] [stdout]  --> src/scene/d3/node_3d.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::scene::{AsNodeUi, Sprite2d};
[INFO] [stdout]   |                    ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vector2`
[INFO] [stdout]  --> src/scene/d3/node_3d.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use cgmath::{Quaternion, Vector2, Vector3};
[INFO] [stdout]   |                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::transform::Transform3d`
[INFO] [stdout]  --> src/scene/d3/point_light.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::math::transform::Transform3d;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::prelude::*`
[INFO] [stdout]  --> src/scene/d3/point_light.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use cgmath::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/scene/d3/point_light.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/scene/d3/point_light.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LightUniform`
[INFO] [stdout]   --> src/scene/d3/point_light.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::render::light::{LightUniform, PointLightUniform};
[INFO] [stdout]    |                            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mesh`, `RenderServer`, and `Texture`
[INFO] [stdout]   --> src/scene/d3/point_light.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::render::{Mesh, RenderServer, Texture};
[INFO] [stdout]    |                     ^^^^  ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Model`
[INFO] [stdout]   --> src/scene/d3/point_light.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::scene::{AsNode, AsNode3d, Model, Node3d, NodeType};
[INFO] [stdout]    |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Context`
[INFO] [stdout]  --> src/scene/d3/sky.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Context;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::*`
[INFO] [stdout]  --> src/scene/d3/sky.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::*;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::InnerSpace`
[INFO] [stdout]  --> src/scene/d3/sky.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use cgmath::InnerSpace;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/scene/d3/sky.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/scene/d3/sky.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/scene/d3/sky.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/scene/d3/sky.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]   --> src/scene/d3/sky.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use wgpu::util::DeviceExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::material::MaterialId`
[INFO] [stdout]   --> src/scene/d3/sky.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::render::material::MaterialId;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mesh` and `Texture`
[INFO] [stdout]   --> src/scene/d3/sky.rs:15:21
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::render::{Mesh, Texture, TextureId};
[INFO] [stdout]    |                     ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/text/font.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/text/font.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BidiClass` and `Level`
[INFO] [stdout]   --> src/text/font.rs:16:20
[INFO] [stdout]    |
[INFO] [stdout] 16 | use unicode_bidi::{BidiClass, BidiInfo, Level};
[INFO] [stdout]    |                    ^^^^^^^^^            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Allowed`, `Mandatory`, and `linebreaks`
[INFO] [stdout]   --> src/text/font.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     break_property, linebreaks, BreakClass,
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 19 |     BreakOpportunity::{Allowed, Mandatory},
[INFO] [stdout]    |                        ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unicode_segmentation::UnicodeSegmentation`
[INFO] [stdout]   --> src/text/font.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use unicode_segmentation::UnicodeSegmentation;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Texture`
[INFO] [stdout]  --> src/text/text_server.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::render::{RenderServer, Texture, TextureCache};
[INFO] [stdout]   |                                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Glyph` and `Script`
[INFO] [stdout]  --> src/text/text_server.rs:5:32
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::text::{DynamicFont, Glyph, Script, FONT_ATLAS_SIZE};
[INFO] [stdout]   |                                ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Point2`
[INFO] [stdout]  --> src/text/text_server.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cgmath::{Point2, Vector2, Vector4};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::Map`
[INFO] [stdout]  --> src/text/text_server.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::iter::Map;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/text/text_server.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 146 |         if (font.is_none()) {
[INFO] [stdout]     |            ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 146 -         if (font.is_none()) {
[INFO] [stdout] 146 +         if font.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/text/text_server.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 157 |         if (font.is_none()) {
[INFO] [stdout]     |            ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 157 -         if (font.is_none()) {
[INFO] [stdout] 157 +         if font.is_none() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cgmath::Point2`
[INFO] [stdout]  --> src/window/input_server.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use cgmath::Point2;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Formatter`
[INFO] [stdout]  --> src/window/input_server.rs:2:23
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{Debug, Formatter};
[INFO] [stdout]   |                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lyon::path::Position`
[INFO] [stdout]   --> src/render/mesh.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use lyon::path::Position;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/core/app.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let mut render_server = pollster::block_on(App::init_render(window.clone()));
[INFO] [stdout]    |             ----^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/core/app.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut engine = Engine::new();
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/core/app.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let mut world = World::new(Vector2::new(window_size.width, window_size.height));
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/core/app.rs:148:25
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         ref event,
[INFO] [stdout]     |                         ^^^^^^^^^ help: try ignoring the field: `event: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device_id`
[INFO] [stdout]    --> src/core/app.rs:149:25
[INFO] [stdout]     |
[INFO] [stdout] 149 |                         device_id,
[INFO] [stdout]     |                         ^^^^^^^^^ help: try ignoring the field: `device_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `next_binding` is never read
[INFO] [stdout]    --> src/render/mesh.rs:551:17
[INFO] [stdout]     |
[INFO] [stdout] 551 |                 next_binding += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/render/render_server.rs:69:13
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut server = Self {
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `l`
[INFO] [stdout]   --> src/render/light.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     for l in extracted_lights {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_l`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `next_binding` is never read
[INFO] [stdout]   --> src/render/material.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |             next_binding += 1;
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera_bind_group_layout`
[INFO] [stdout]    --> src/render/sprite.rs:281:5
[INFO] [stdout]     |
[INFO] [stdout] 281 |     camera_bind_group_layout: &wgpu::BindGroupLayout,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera_bind_group_layout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]   --> src/scene/d2/camera2d.rs:59:26
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                          ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]   --> src/scene/d2/label.rs:72:26
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                          ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/scene/d2/sprite2d.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let size = Vector2::new(texture.size.0 as f32, texture.size.1 as f32);
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `singletons`
[INFO] [stdout]    --> src/scene/d2/sprite2d.rs:136:35
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]     |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_singletons`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:50:13
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let device = &render_server.device;
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]   --> src/scene/d3/directional_light.rs:52:26
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                          ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `singletons`
[INFO] [stdout]   --> src/scene/d3/directional_light.rs:52:35
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_singletons`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/scene/d3/model.rs:215:21
[INFO] [stdout]     |
[INFO] [stdout] 215 |                 let mut v = &mut vertices[i];
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `singletons`
[INFO] [stdout]   --> src/scene/d3/point_light.rs:53:35
[INFO] [stdout]    |
[INFO] [stdout] 53 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_singletons`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_event`
[INFO] [stdout]   --> src/scene/node.rs:60:25
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn input(&mut self, input_event: &mut InputEvent, input_server: &mut InputServer) {
[INFO] [stdout]    |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_server`
[INFO] [stdout]   --> src/scene/node.rs:60:55
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn input(&mut self, input_event: &mut InputEvent, input_server: &mut InputServer) {
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]   --> src/scene/node.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                          ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `singletons`
[INFO] [stdout]   --> src/scene/node.rs:64:35
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_singletons`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `draw_cmds`
[INFO] [stdout]   --> src/scene/node.rs:68:20
[INFO] [stdout]    |
[INFO] [stdout] 68 |     fn draw(&self, draw_cmds: &mut DrawCommands) {
[INFO] [stdout]    |                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_draw_cmds`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scene/world.rs:23:13
[INFO] [stdout]    |
[INFO] [stdout] 23 |         let mut arena = Arena::new();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scene/world.rs:34:32
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn add_node(&mut self, mut new_node: Box<dyn AsNode>, parent: Option<NodeId>) -> NodeId {
[INFO] [stdout]    |                                ----^^^^^^^^
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `para_text`
[INFO] [stdout]    --> src/text/font.rs:250:17
[INFO] [stdout]     |
[INFO] [stdout] 250 |             let para_text = &text[para_range.clone()];
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_para_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reordered_text`
[INFO] [stdout]    --> src/text/font.rs:255:21
[INFO] [stdout]     |
[INFO] [stdout] 255 |                 let reordered_text = bidi_info.reorder_line(para, para_range.clone());
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reordered_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `codepoint_count`
[INFO] [stdout]    --> src/text/font.rs:313:21
[INFO] [stdout]     |
[INFO] [stdout] 313 |                 let codepoint_count = unicode_buffer.len();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_codepoint_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `run_bytes`
[INFO] [stdout]    --> src/text/font.rs:417:25
[INFO] [stdout]     |
[INFO] [stdout] 417 |                     let run_bytes = run_text.bytes().collect::<Vec<u8>>();
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_run_bytes`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/text/font.rs:238:13
[INFO] [stdout]     |
[INFO] [stdout] 238 |         let mut face = rustybuzz::Face::from_slice(&self.raw_font_data, 0).unwrap();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/text/font.rs:265:21
[INFO] [stdout]     |
[INFO] [stdout] 265 |                 let mut run = run.clone();
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> src/text/text_server.rs:59:14
[INFO] [stdout]    |
[INFO] [stdout] 59 |         for (key, font) in &mut self.fonts {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ExtractedLights` is more private than the item `mesh::MeshRenderResources::prepare_lights`
[INFO] [stdout]    --> src/render/mesh.rs:574:5
[INFO] [stdout]     |
[INFO] [stdout] 574 |     pub fn prepare_lights(&mut self, render_server: &RenderServer, lights: &ExtractedLights) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `mesh::MeshRenderResources::prepare_lights` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ExtractedLights` is only usable at visibility `pub(crate)`
[INFO] [stdout]    --> src/render/light.rs:33:1
[INFO] [stdout]     |
[INFO] [stdout] 33  | pub(crate) struct ExtractedLights {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `LightRenderResources` is more private than the item `prepare_shadow`
[INFO] [stdout]   --> src/render/light.rs:59:1
[INFO] [stdout]    |
[INFO] [stdout] 59 | / pub(crate) fn prepare_shadow(
[INFO] [stdout] 60 | |     extracted_lights: &Vec<LightUniform>,
[INFO] [stdout] 61 | |     render_server: &RenderServer,
[INFO] [stdout] 62 | |     texture_cache: &mut TextureCache,
[INFO] [stdout] 63 | |     render_resources: &mut LightRenderResources,
[INFO] [stdout] 64 | |     camera_render_resources: &CameraRenderResources,
[INFO] [stdout] 65 | | ) {
[INFO] [stdout]    | |_^ function `prepare_shadow` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `LightRenderResources` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/render/light.rs:52:1
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct LightRenderResources {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `LightRenderResources` is more private than the item `render_shadow`
[INFO] [stdout]    --> src/render/light.rs:124:1
[INFO] [stdout]     |
[INFO] [stdout] 124 | / pub(crate) fn render_shadow(
[INFO] [stdout] 125 | |     encoder: &mut wgpu::CommandEncoder,
[INFO] [stdout] 126 | |     texture_cache: &TextureCache,
[INFO] [stdout] 127 | |     render_resources: &LightRenderResources,
[INFO] [stdout] ...   |
[INFO] [stdout] 130 | |     mesh_render_resources: &MeshRenderResources,
[INFO] [stdout] 131 | | ) {
[INFO] [stdout]     | |_^ function `render_shadow` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `LightRenderResources` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/render/light.rs:52:1
[INFO] [stdout]     |
[INFO] [stdout] 52  | struct LightRenderResources {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `CameraRenderResources` is more private than the item `RenderWorld::camera_render_resources`
[INFO] [stdout]   --> src/render/render_world.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub camera_render_resources: CameraRenderResources,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `RenderWorld::camera_render_resources` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `CameraRenderResources` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/render/camera.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub(crate) struct CameraRenderResources {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `GizmoRenderResources` is more private than the item `RenderWorld::gizmo_render_resources`
[INFO] [stdout]   --> src/render/render_world.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub gizmo_render_resources: GizmoRenderResources,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `RenderWorld::gizmo_render_resources` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `GizmoRenderResources` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/render/gizmo.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub(crate) struct GizmoRenderResources {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SkyRenderResources` is more private than the item `RenderWorld::sky_render_resources`
[INFO] [stdout]   --> src/render/render_world.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub sky_render_resources: SkyRenderResources,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `RenderWorld::sky_render_resources` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SkyRenderResources` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/render/sky.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) struct SkyRenderResources {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/render/atlas.rs:184:19
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) struct AtlasInstanceRaw {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/render/atlas.rs:181:1
[INFO] [stdout]     |
[INFO] [stdout] 181 | / /// GPU data.
[INFO] [stdout] 182 | | #[repr(C)]
[INFO] [stdout] 183 | | #[derive(Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 184 | | pub(crate) struct AtlasInstanceRaw {
[INFO] [stdout] ...   |
[INFO] [stdout] 188 | |     color: [f32; 4],
[INFO] [stdout] 189 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/render/atlas.rs:193:19
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub(crate) struct AtlasParamsUniform {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/render/atlas.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | / #[repr(C)]
[INFO] [stdout] 192 | | #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 193 | | pub(crate) struct AtlasParamsUniform {
[INFO] [stdout] 194 | |     camera_view_size: [f32; 2],
[INFO] [stdout] 195 | |     atlas_size: [f32; 2],
[INFO] [stdout] 196 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `default` is never used
[INFO] [stdout]    --> src/render/atlas.rs:214:19
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl AtlasParamsUniform {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub(crate) fn default() -> Self {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `empty` are never used
[INFO] [stdout]    --> src/render/atlas.rs:280:12
[INFO] [stdout]     |
[INFO] [stdout] 279 | impl Atlas {
[INFO] [stdout]     | ---------- associated functions in this implementation
[INFO] [stdout] 280 |     pub fn new(texture: TextureId, texture_cache: &TextureCache) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn empty(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DrawAtlas` is never used
[INFO] [stdout]    --> src/render/atlas.rs:503:11
[INFO] [stdout]     |
[INFO] [stdout] 503 | pub trait DrawAtlas<'a> {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Gizmo` is never constructed
[INFO] [stdout]  --> src/render/gizmo.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(crate) struct Gizmo {
[INFO] [stdout]   |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_mut` and `remove` are never used
[INFO] [stdout]   --> src/render/mesh.rs:41:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl MeshCache {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub(crate) fn get_mut(&mut self, mesh_id: MeshId) -> Option<&mut Mesh> {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub(crate) fn remove(&mut self, mesh_id: MeshId) {
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/render/mesh.rs:225:19
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub(crate) struct InstanceRaw {
[INFO] [stdout]     |                   ^^^^^^^^^^^ field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/render/mesh.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | / /// Used to store Instance in a format that shaders can easily understand.
[INFO] [stdout] 223 | | #[repr(C)]
[INFO] [stdout] 224 | | #[derive(Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 225 | | pub(crate) struct InstanceRaw {
[INFO] [stdout] ...   |
[INFO] [stdout] 228 | |     normal: [[f32; 3]; 3],
[INFO] [stdout] 229 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `instance_count` is never read
[INFO] [stdout]    --> src/render/mesh.rs:452:16
[INFO] [stdout]     |
[INFO] [stdout] 450 | pub(crate) struct InstanceMetadata {
[INFO] [stdout]     |                   ---------------- field in this struct
[INFO] [stdout] 451 |     pub(crate) buffer: wgpu::Buffer,
[INFO] [stdout] 452 |     pub(crate) instance_count: u64,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_mut` is never used
[INFO] [stdout]   --> src/render/texture.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TextureCache {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub(crate) fn get_mut(&mut self, texture_id: TextureId) -> Option<&mut Texture> {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/render/vertex.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Vertex3d {
[INFO] [stdout]   |            ^^^^^^^^ field in this struct
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/vertex.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout] 6  | / /// 3D vertex data sent to GPU.
[INFO] [stdout] 7  | | #[repr(C)]
[INFO] [stdout] 8  | | #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 9  | | pub struct Vertex3d {
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |     pub(crate) bi_tangent: [f32; 3],
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/vertex.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub(crate) struct Vertex2d {
[INFO] [stdout]    |                   ^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/vertex.rs:59:1
[INFO] [stdout]    |
[INFO] [stdout] 59 | / #[repr(C)]
[INFO] [stdout] 60 | | #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 61 | | pub(crate) struct Vertex2d {
[INFO] [stdout] 62 | |     pub(crate) position: [f32; 2],
[INFO] [stdout] 63 | |     pub(crate) uv: [f32; 2],
[INFO] [stdout] 64 | |     pub(crate) color: [f32; 3],
[INFO] [stdout] 65 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/vertex.rs:98:19
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub(crate) struct VertexSky {
[INFO] [stdout]    |                   ^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/render/vertex.rs:96:1
[INFO] [stdout]     |
[INFO] [stdout] 96  | / #[repr(C)]
[INFO] [stdout] 97  | | #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 98  | | pub(crate) struct VertexSky {
[INFO] [stdout] 99  | |     pub(crate) position: [f32; 3],
[INFO] [stdout] 100 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/light.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(crate) struct PointLightUniform {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/light.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | / #[repr(C)]
[INFO] [stdout] 11 | | #[derive(Debug, Default, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 12 | | pub(crate) struct PointLightUniform {
[INFO] [stdout] 13 | |     pub(crate) position: [f32; 3],
[INFO] [stdout] ...  |
[INFO] [stdout] 20 | |     pub(crate) _pad1: f32,
[INFO] [stdout] 21 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/light.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub(crate) struct DirectionalLightUniform {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/light.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | / #[repr(C)]
[INFO] [stdout] 24 | | #[derive(Debug, Default, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 25 | | pub(crate) struct DirectionalLightUniform {
[INFO] [stdout] 26 | |     pub(crate) direction: [f32; 3],
[INFO] [stdout] ...  |
[INFO] [stdout] 29 | |     pub(crate) distance: f32,
[INFO] [stdout] 30 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/light.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub(crate) struct LightUniform {
[INFO] [stdout]    |                   ^^^^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/light.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | / #[repr(C)]
[INFO] [stdout] 41 | | #[derive(Debug, Default, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 42 | | pub(crate) struct LightUniform {
[INFO] [stdout] ...  |
[INFO] [stdout] 49 | |     pub(crate) _pad: [u32; 3],
[INFO] [stdout] 50 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LightRenderResources` is never constructed
[INFO] [stdout]   --> src/render/light.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct LightRenderResources {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prepare_shadow` is never used
[INFO] [stdout]   --> src/render/light.rs:59:15
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub(crate) fn prepare_shadow(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_shadow` is never used
[INFO] [stdout]    --> src/render/light.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub(crate) fn render_shadow(
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BindGroupCache` is never constructed
[INFO] [stdout]  --> src/render/bind_group.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct BindGroupCache {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, and `get` are never used
[INFO] [stdout]   --> src/render/bind_group.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl BindGroupCache {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 12 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub(crate) fn add(&mut self, bind_group: wgpu::BindGroup) -> BindGroupId {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub(crate) fn get(&self, bind_group_id: BindGroupId) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/camera.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct CameraUniform {
[INFO] [stdout]    |            ^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/camera.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | / #[repr(C)]
[INFO] [stdout] 29 | | // This is so we can store this in a buffer.
[INFO] [stdout] 30 | | #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 31 | | pub struct CameraUniform {
[INFO] [stdout] ...  |
[INFO] [stdout] 39 | |     pub(crate) view_proj: [[f32; 4]; 4],
[INFO] [stdout] 40 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/render/camera.rs:236:12
[INFO] [stdout]     |
[INFO] [stdout] 235 | impl OrthographicProjection {
[INFO] [stdout]     | --------------------------- associated function in this implementation
[INFO] [stdout] 236 |     pub fn new(near: f32, far: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_texture_bind_group` is never used
[INFO] [stdout]    --> src/render/sprite.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 46  | impl SpriteRenderResources {
[INFO] [stdout]     | -------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn remove_texture_bind_group(&mut self, texture_id: TextureId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DrawSprite2d` is never used
[INFO] [stdout]    --> src/render/sprite.rs:178:11
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub trait DrawSprite2d<'a> {
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DrawSprite3d` is never used
[INFO] [stdout]    --> src/render/sprite.rs:216:11
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub trait DrawSprite3d<'a> {
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RenderTarget` is never used
[INFO] [stdout]  --> src/render/view.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | enum RenderTarget {
[INFO] [stdout]   |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `layout_is_dirty`, `single_line`, and `tracking` are never read
[INFO] [stdout]   --> src/scene/d2/label.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Label {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     layout_is_dirty: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     single_line: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     tracking: f32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lyon::path::Position`
[INFO] [stdout]   --> src/render/mesh.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use lyon::path::Position;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `h_frames`, `v_frames`, and `frame` are never read
[INFO] [stdout]   --> src/scene/d2/sprite2d.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SpriteSheet {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 14 |     h_frames: u32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 15 |     v_frames: u32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 16 |     frame: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fov` is never read
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Camera3d {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fov: f32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/scene/d3/camera3d.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub struct ModelUniform {
[INFO] [stdout]     |            ^^^^^^^^^^^^ field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/scene/d3/camera3d.rs:102:1
[INFO] [stdout]     |
[INFO] [stdout] 102 | / #[repr(C)]
[INFO] [stdout] 103 | | // This is so we can store this in a buffer.
[INFO] [stdout] 104 | | #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 105 | | pub struct ModelUniform {
[INFO] [stdout] 106 | |     model: [[f32; 4]; 4],
[INFO] [stdout] 107 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/scene/d3/camera3d.rs:110:19
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl ModelUniform {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 110 |     pub(crate) fn new() -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `codepoint` and `script` are never read
[INFO] [stdout]   --> src/text/font.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) struct UnicodeCharacter {
[INFO] [stdout]    |                   ---------------- fields in this struct
[INFO] [stdout] 44 |     // Char in Rust takes 4 bytes. It represents a Unicode scalar value.
[INFO] [stdout] 45 |     codepoint: char,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 46 |     script: rustybuzz::Script,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UnicodeCharacter` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `unicode_characters` and `bounds` are never read
[INFO] [stdout]   --> src/text/font.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) struct Glyph {
[INFO] [stdout]    |                   ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     unicode_characters: Vec<UnicodeCharacter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub(crate) bounds: Vector4<f32>,
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Glyph` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Font` is never constructed
[INFO] [stdout]   --> src/text/font.rs:77:19
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub(crate) struct Font {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_default_font` is never used
[INFO] [stdout]   --> src/text/text_server.rs:64:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl TextServer {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub(crate) fn get_default_font(&self) -> &DynamicFont {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `position` and `consumed` are never read
[INFO] [stdout]   --> src/window/input_server.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct MouseButton {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub(crate) position: (f32, f32),
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 28 |     consumed: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseButton` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `consumed` is never read
[INFO] [stdout]   --> src/window/input_server.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct MouseScroll {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 33 |     pub(crate) delta: f32,
[INFO] [stdout] 34 |     consumed: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseScroll` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `consumed` is never read
[INFO] [stdout]   --> src/window/input_server.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct MouseMotion {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 41 |     consumed: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseMotion` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/render/material.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 |         &'a self,
[INFO] [stdout]    |          ^^ these lifetimes flow to the output
[INFO] [stdout] 55 |         texture_cache: &'a TextureCache,
[INFO] [stdout]    |                         ^^ these lifetimes flow to the output
[INFO] [stdout] 56 |     ) -> Vec<wgpu::BindGroupEntry> {
[INFO] [stdout]    |              -------------------- the lifetime gets resolved as `'a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 56 |     ) -> Vec<wgpu::BindGroupEntry<'a>> {
[INFO] [stdout]    |                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/render/shader_maker.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 51 |         &mut self,
[INFO] [stdout]    |         ^^^^^^^^^ this lifetime flows to the output
[INFO] [stdout] ...
[INFO] [stdout] 54 |     ) -> Option<wgpu::ShaderSource> {
[INFO] [stdout]    |                 ------------------ the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 54 |     ) -> Option<wgpu::ShaderSource<'_>> {
[INFO] [stdout]    |                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/core/app.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let mut render_server = pollster::block_on(App::init_render(window.clone()));
[INFO] [stdout]    |             ----^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/core/app.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut engine = Engine::new();
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/core/app.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let mut world = World::new(Vector2::new(window_size.width, window_size.height));
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/core/app.rs:148:25
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         ref event,
[INFO] [stdout]     |                         ^^^^^^^^^ help: try ignoring the field: `event: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device_id`
[INFO] [stdout]    --> src/core/app.rs:149:25
[INFO] [stdout]     |
[INFO] [stdout] 149 |                         device_id,
[INFO] [stdout]     |                         ^^^^^^^^^ help: try ignoring the field: `device_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `next_binding` is never read
[INFO] [stdout]    --> src/render/mesh.rs:551:17
[INFO] [stdout]     |
[INFO] [stdout] 551 |                 next_binding += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/render/render_server.rs:69:13
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut server = Self {
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `l`
[INFO] [stdout]   --> src/render/light.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     for l in extracted_lights {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_l`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `eureka::scene::NodeType::VectorSprite`
[INFO] [stdout]  --> examples/sprite.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use eureka::scene::NodeType::VectorSprite;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `next_binding` is never read
[INFO] [stdout]   --> src/render/material.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |             next_binding += 1;
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rotation`
[INFO] [stdout]  --> examples/3d.rs:1:31
[INFO] [stdout]   |
[INFO] [stdout] 1 | use cgmath::{Deg, Quaternion, Rotation, Rotation3, Vector3};
[INFO] [stdout]   |                               ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DirectionalLight` and `Sprite2d`
[INFO] [stdout]  --> examples/3d.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use eureka::scene::{AsNode3d, Camera3d, DirectionalLight, Model, PointLight, Sky, Sprite2d};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^^^                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera_bind_group_layout`
[INFO] [stdout]    --> src/render/sprite.rs:281:5
[INFO] [stdout]     |
[INFO] [stdout] 281 |     camera_bind_group_layout: &wgpu::BindGroupLayout,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera_bind_group_layout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]   --> src/scene/d2/camera2d.rs:59:26
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                          ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]   --> src/scene/d2/label.rs:72:26
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                          ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/scene/d2/sprite2d.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let size = Vector2::new(texture.size.0 as f32, texture.size.1 as f32);
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `singletons`
[INFO] [stdout]    --> src/scene/d2/sprite2d.rs:136:35
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]     |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_singletons`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:50:13
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let device = &render_server.device;
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]   --> src/scene/d3/directional_light.rs:52:26
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                          ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `singletons`
[INFO] [stdout]   --> src/scene/d3/directional_light.rs:52:35
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_singletons`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/scene/d3/model.rs:215:21
[INFO] [stdout]     |
[INFO] [stdout] 215 |                 let mut v = &mut vertices[i];
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `singletons`
[INFO] [stdout]   --> src/scene/d3/point_light.rs:53:35
[INFO] [stdout]    |
[INFO] [stdout] 53 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_singletons`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_event`
[INFO] [stdout]   --> src/scene/node.rs:60:25
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn input(&mut self, input_event: &mut InputEvent, input_server: &mut InputServer) {
[INFO] [stdout]    |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_server`
[INFO] [stdout]   --> src/scene/node.rs:60:55
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn input(&mut self, input_event: &mut InputEvent, input_server: &mut InputServer) {
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]   --> src/scene/node.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                          ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `singletons`
[INFO] [stdout]   --> src/scene/node.rs:64:35
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn update(&mut self, dt: f32, singletons: &mut Singletons) {
[INFO] [stdout]    |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_singletons`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `draw_cmds`
[INFO] [stdout]   --> src/scene/node.rs:68:20
[INFO] [stdout]    |
[INFO] [stdout] 68 |     fn draw(&self, draw_cmds: &mut DrawCommands) {
[INFO] [stdout]    |                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_draw_cmds`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scene/world.rs:23:13
[INFO] [stdout]    |
[INFO] [stdout] 23 |         let mut arena = Arena::new();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scene/world.rs:34:32
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn add_node(&mut self, mut new_node: Box<dyn AsNode>, parent: Option<NodeId>) -> NodeId {
[INFO] [stdout]    |                                ----^^^^^^^^
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `para_text`
[INFO] [stdout]    --> src/text/font.rs:250:17
[INFO] [stdout]     |
[INFO] [stdout] 250 |             let para_text = &text[para_range.clone()];
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_para_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reordered_text`
[INFO] [stdout]    --> src/text/font.rs:255:21
[INFO] [stdout]     |
[INFO] [stdout] 255 |                 let reordered_text = bidi_info.reorder_line(para, para_range.clone());
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reordered_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `codepoint_count`
[INFO] [stdout]    --> src/text/font.rs:313:21
[INFO] [stdout]     |
[INFO] [stdout] 313 |                 let codepoint_count = unicode_buffer.len();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_codepoint_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `run_bytes`
[INFO] [stdout]    --> src/text/font.rs:417:25
[INFO] [stdout]     |
[INFO] [stdout] 417 |                     let run_bytes = run_text.bytes().collect::<Vec<u8>>();
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_run_bytes`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/text/font.rs:238:13
[INFO] [stdout]     |
[INFO] [stdout] 238 |         let mut face = rustybuzz::Face::from_slice(&self.raw_font_data, 0).unwrap();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/text/font.rs:265:21
[INFO] [stdout]     |
[INFO] [stdout] 265 |                 let mut run = run.clone();
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> src/text/text_server.rs:59:14
[INFO] [stdout]    |
[INFO] [stdout] 59 |         for (key, font) in &mut self.fonts {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ExtractedLights` is more private than the item `mesh::MeshRenderResources::prepare_lights`
[INFO] [stdout]    --> src/render/mesh.rs:574:5
[INFO] [stdout]     |
[INFO] [stdout] 574 |     pub fn prepare_lights(&mut self, render_server: &RenderServer, lights: &ExtractedLights) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `mesh::MeshRenderResources::prepare_lights` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ExtractedLights` is only usable at visibility `pub(crate)`
[INFO] [stdout]    --> src/render/light.rs:33:1
[INFO] [stdout]     |
[INFO] [stdout] 33  | pub(crate) struct ExtractedLights {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `LightRenderResources` is more private than the item `prepare_shadow`
[INFO] [stdout]   --> src/render/light.rs:59:1
[INFO] [stdout]    |
[INFO] [stdout] 59 | / pub(crate) fn prepare_shadow(
[INFO] [stdout] 60 | |     extracted_lights: &Vec<LightUniform>,
[INFO] [stdout] 61 | |     render_server: &RenderServer,
[INFO] [stdout] 62 | |     texture_cache: &mut TextureCache,
[INFO] [stdout] 63 | |     render_resources: &mut LightRenderResources,
[INFO] [stdout] 64 | |     camera_render_resources: &CameraRenderResources,
[INFO] [stdout] 65 | | ) {
[INFO] [stdout]    | |_^ function `prepare_shadow` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `LightRenderResources` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/render/light.rs:52:1
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct LightRenderResources {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `LightRenderResources` is more private than the item `render_shadow`
[INFO] [stdout]    --> src/render/light.rs:124:1
[INFO] [stdout]     |
[INFO] [stdout] 124 | / pub(crate) fn render_shadow(
[INFO] [stdout] 125 | |     encoder: &mut wgpu::CommandEncoder,
[INFO] [stdout] 126 | |     texture_cache: &TextureCache,
[INFO] [stdout] 127 | |     render_resources: &LightRenderResources,
[INFO] [stdout] ...   |
[INFO] [stdout] 130 | |     mesh_render_resources: &MeshRenderResources,
[INFO] [stdout] 131 | | ) {
[INFO] [stdout]     | |_^ function `render_shadow` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `LightRenderResources` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/render/light.rs:52:1
[INFO] [stdout]     |
[INFO] [stdout] 52  | struct LightRenderResources {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `CameraRenderResources` is more private than the item `RenderWorld::camera_render_resources`
[INFO] [stdout]   --> src/render/render_world.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub camera_render_resources: CameraRenderResources,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `RenderWorld::camera_render_resources` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `CameraRenderResources` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/render/camera.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub(crate) struct CameraRenderResources {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `GizmoRenderResources` is more private than the item `RenderWorld::gizmo_render_resources`
[INFO] [stdout]   --> src/render/render_world.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub gizmo_render_resources: GizmoRenderResources,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `RenderWorld::gizmo_render_resources` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `GizmoRenderResources` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/render/gizmo.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub(crate) struct GizmoRenderResources {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SkyRenderResources` is more private than the item `RenderWorld::sky_render_resources`
[INFO] [stdout]   --> src/render/render_world.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub sky_render_resources: SkyRenderResources,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `RenderWorld::sky_render_resources` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `SkyRenderResources` is only usable at visibility `pub(crate)`
[INFO] [stdout]   --> src/render/sky.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) struct SkyRenderResources {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/render/atlas.rs:184:19
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) struct AtlasInstanceRaw {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/render/atlas.rs:181:1
[INFO] [stdout]     |
[INFO] [stdout] 181 | / /// GPU data.
[INFO] [stdout] 182 | | #[repr(C)]
[INFO] [stdout] 183 | | #[derive(Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 184 | | pub(crate) struct AtlasInstanceRaw {
[INFO] [stdout] ...   |
[INFO] [stdout] 188 | |     color: [f32; 4],
[INFO] [stdout] 189 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/render/atlas.rs:193:19
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub(crate) struct AtlasParamsUniform {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/render/atlas.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | / #[repr(C)]
[INFO] [stdout] 192 | | #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 193 | | pub(crate) struct AtlasParamsUniform {
[INFO] [stdout] 194 | |     camera_view_size: [f32; 2],
[INFO] [stdout] 195 | |     atlas_size: [f32; 2],
[INFO] [stdout] 196 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `default` is never used
[INFO] [stdout]    --> src/render/atlas.rs:214:19
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl AtlasParamsUniform {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub(crate) fn default() -> Self {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `empty` are never used
[INFO] [stdout]    --> src/render/atlas.rs:280:12
[INFO] [stdout]     |
[INFO] [stdout] 279 | impl Atlas {
[INFO] [stdout]     | ---------- associated functions in this implementation
[INFO] [stdout] 280 |     pub fn new(texture: TextureId, texture_cache: &TextureCache) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn empty(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DrawAtlas` is never used
[INFO] [stdout]    --> src/render/atlas.rs:503:11
[INFO] [stdout]     |
[INFO] [stdout] 503 | pub trait DrawAtlas<'a> {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Gizmo` is never constructed
[INFO] [stdout]  --> src/render/gizmo.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(crate) struct Gizmo {
[INFO] [stdout]   |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_mut` and `remove` are never used
[INFO] [stdout]   --> src/render/mesh.rs:41:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl MeshCache {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub(crate) fn get_mut(&mut self, mesh_id: MeshId) -> Option<&mut Mesh> {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub(crate) fn remove(&mut self, mesh_id: MeshId) {
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/render/mesh.rs:225:19
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub(crate) struct InstanceRaw {
[INFO] [stdout]     |                   ^^^^^^^^^^^ field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/render/mesh.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | / /// Used to store Instance in a format that shaders can easily understand.
[INFO] [stdout] 223 | | #[repr(C)]
[INFO] [stdout] 224 | | #[derive(Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 225 | | pub(crate) struct InstanceRaw {
[INFO] [stdout] ...   |
[INFO] [stdout] 228 | |     normal: [[f32; 3]; 3],
[INFO] [stdout] 229 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `instance_count` is never read
[INFO] [stdout]    --> src/render/mesh.rs:452:16
[INFO] [stdout]     |
[INFO] [stdout] 450 | pub(crate) struct InstanceMetadata {
[INFO] [stdout]     |                   ---------------- field in this struct
[INFO] [stdout] 451 |     pub(crate) buffer: wgpu::Buffer,
[INFO] [stdout] 452 |     pub(crate) instance_count: u64,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_mut` is never used
[INFO] [stdout]   --> src/render/texture.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TextureCache {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub(crate) fn get_mut(&mut self, texture_id: TextureId) -> Option<&mut Texture> {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/render/vertex.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Vertex3d {
[INFO] [stdout]   |            ^^^^^^^^ field in this struct
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/vertex.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout] 6  | / /// 3D vertex data sent to GPU.
[INFO] [stdout] 7  | | #[repr(C)]
[INFO] [stdout] 8  | | #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 9  | | pub struct Vertex3d {
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |     pub(crate) bi_tangent: [f32; 3],
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/vertex.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub(crate) struct Vertex2d {
[INFO] [stdout]    |                   ^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/vertex.rs:59:1
[INFO] [stdout]    |
[INFO] [stdout] 59 | / #[repr(C)]
[INFO] [stdout] 60 | | #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 61 | | pub(crate) struct Vertex2d {
[INFO] [stdout] 62 | |     pub(crate) position: [f32; 2],
[INFO] [stdout] 63 | |     pub(crate) uv: [f32; 2],
[INFO] [stdout] 64 | |     pub(crate) color: [f32; 3],
[INFO] [stdout] 65 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/vertex.rs:98:19
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub(crate) struct VertexSky {
[INFO] [stdout]    |                   ^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/render/vertex.rs:96:1
[INFO] [stdout]     |
[INFO] [stdout] 96  | / #[repr(C)]
[INFO] [stdout] 97  | | #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 98  | | pub(crate) struct VertexSky {
[INFO] [stdout] 99  | |     pub(crate) position: [f32; 3],
[INFO] [stdout] 100 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/light.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(crate) struct PointLightUniform {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/light.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | / #[repr(C)]
[INFO] [stdout] 11 | | #[derive(Debug, Default, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 12 | | pub(crate) struct PointLightUniform {
[INFO] [stdout] 13 | |     pub(crate) position: [f32; 3],
[INFO] [stdout] ...  |
[INFO] [stdout] 20 | |     pub(crate) _pad1: f32,
[INFO] [stdout] 21 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/light.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub(crate) struct DirectionalLightUniform {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/light.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | / #[repr(C)]
[INFO] [stdout] 24 | | #[derive(Debug, Default, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 25 | | pub(crate) struct DirectionalLightUniform {
[INFO] [stdout] 26 | |     pub(crate) direction: [f32; 3],
[INFO] [stdout] ...  |
[INFO] [stdout] 29 | |     pub(crate) distance: f32,
[INFO] [stdout] 30 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/light.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub(crate) struct LightUniform {
[INFO] [stdout]    |                   ^^^^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/light.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | / #[repr(C)]
[INFO] [stdout] 41 | | #[derive(Debug, Default, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 42 | | pub(crate) struct LightUniform {
[INFO] [stdout] ...  |
[INFO] [stdout] 49 | |     pub(crate) _pad: [u32; 3],
[INFO] [stdout] 50 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LightRenderResources` is never constructed
[INFO] [stdout]   --> src/render/light.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct LightRenderResources {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prepare_shadow` is never used
[INFO] [stdout]   --> src/render/light.rs:59:15
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub(crate) fn prepare_shadow(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_shadow` is never used
[INFO] [stdout]    --> src/render/light.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub(crate) fn render_shadow(
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BindGroupCache` is never constructed
[INFO] [stdout]  --> src/render/bind_group.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct BindGroupCache {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, and `get` are never used
[INFO] [stdout]   --> src/render/bind_group.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl BindGroupCache {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 12 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub(crate) fn add(&mut self, bind_group: wgpu::BindGroup) -> BindGroupId {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub(crate) fn get(&self, bind_group_id: BindGroupId) -> Option<&wgpu::BindGroup> {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/render/camera.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct CameraUniform {
[INFO] [stdout]    |            ^^^^^^^^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/render/camera.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | / #[repr(C)]
[INFO] [stdout] 29 | | // This is so we can store this in a buffer.
[INFO] [stdout] 30 | | #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 31 | | pub struct CameraUniform {
[INFO] [stdout] ...  |
[INFO] [stdout] 39 | |     pub(crate) view_proj: [[f32; 4]; 4],
[INFO] [stdout] 40 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/render/camera.rs:236:12
[INFO] [stdout]     |
[INFO] [stdout] 235 | impl OrthographicProjection {
[INFO] [stdout]     | --------------------------- associated function in this implementation
[INFO] [stdout] 236 |     pub fn new(near: f32, far: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_texture_bind_group` is never used
[INFO] [stdout]    --> src/render/sprite.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 46  | impl SpriteRenderResources {
[INFO] [stdout]     | -------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn remove_texture_bind_group(&mut self, texture_id: TextureId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DrawSprite2d` is never used
[INFO] [stdout]    --> src/render/sprite.rs:178:11
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub trait DrawSprite2d<'a> {
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DrawSprite3d` is never used
[INFO] [stdout]    --> src/render/sprite.rs:216:11
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub trait DrawSprite3d<'a> {
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RenderTarget` is never used
[INFO] [stdout]  --> src/render/view.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | enum RenderTarget {
[INFO] [stdout]   |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `layout_is_dirty`, `single_line`, and `tracking` are never read
[INFO] [stdout]   --> src/scene/d2/label.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Label {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     layout_is_dirty: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     single_line: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     tracking: f32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `h_frames`, `v_frames`, and `frame` are never read
[INFO] [stdout]   --> src/scene/d2/sprite2d.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SpriteSheet {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 14 |     h_frames: u32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 15 |     v_frames: u32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 16 |     frame: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fov` is never read
[INFO] [stdout]   --> src/scene/d3/camera3d.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Camera3d {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fov: f32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/scene/d3/camera3d.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub struct ModelUniform {
[INFO] [stdout]     |            ^^^^^^^^^^^^ field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/scene/d3/camera3d.rs:102:1
[INFO] [stdout]     |
[INFO] [stdout] 102 | / #[repr(C)]
[INFO] [stdout] 103 | | // This is so we can store this in a buffer.
[INFO] [stdout] 104 | | #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)]
[INFO] [stdout] 105 | | pub struct ModelUniform {
[INFO] [stdout] 106 | |     model: [[f32; 4]; 4],
[INFO] [stdout] 107 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/scene/d3/camera3d.rs:110:19
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl ModelUniform {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 110 |     pub(crate) fn new() -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `codepoint` and `script` are never read
[INFO] [stdout]   --> src/text/font.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) struct UnicodeCharacter {
[INFO] [stdout]    |                   ---------------- fields in this struct
[INFO] [stdout] 44 |     // Char in Rust takes 4 bytes. It represents a Unicode scalar value.
[INFO] [stdout] 45 |     codepoint: char,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 46 |     script: rustybuzz::Script,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UnicodeCharacter` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `unicode_characters` and `bounds` are never read
[INFO] [stdout]   --> src/text/font.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) struct Glyph {
[INFO] [stdout]    |                   ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     unicode_characters: Vec<UnicodeCharacter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub(crate) bounds: Vector4<f32>,
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Glyph` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Font` is never constructed
[INFO] [stdout]   --> src/text/font.rs:77:19
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub(crate) struct Font {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_default_font` is never used
[INFO] [stdout]   --> src/text/text_server.rs:64:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl TextServer {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub(crate) fn get_default_font(&self) -> &DynamicFont {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `position` and `consumed` are never read
[INFO] [stdout]   --> src/window/input_server.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct MouseButton {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub(crate) position: (f32, f32),
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 28 |     consumed: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseButton` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `consumed` is never read
[INFO] [stdout]   --> src/window/input_server.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct MouseScroll {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 33 |     pub(crate) delta: f32,
[INFO] [stdout] 34 |     consumed: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseScroll` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `consumed` is never read
[INFO] [stdout]   --> src/window/input_server.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct MouseMotion {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 41 |     consumed: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseMotion` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/render/material.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 |         &'a self,
[INFO] [stdout]    |          ^^ these lifetimes flow to the output
[INFO] [stdout] 55 |         texture_cache: &'a TextureCache,
[INFO] [stdout]    |                         ^^ these lifetimes flow to the output
[INFO] [stdout] 56 |     ) -> Vec<wgpu::BindGroupEntry> {
[INFO] [stdout]    |              -------------------- the lifetime gets resolved as `'a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 56 |     ) -> Vec<wgpu::BindGroupEntry<'a>> {
[INFO] [stdout]    |                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/render/shader_maker.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 51 |         &mut self,
[INFO] [stdout]    |         ^^^^^^^^^ this lifetime flows to the output
[INFO] [stdout] ...
[INFO] [stdout] 54 |     ) -> Option<wgpu::ShaderSource> {
[INFO] [stdout]    |                 ------------------ the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 54 |     ) -> Option<wgpu::ShaderSource<'_>> {
[INFO] [stdout]    |                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 24s
[INFO] running `Command { std: "docker" "inspect" "2fc600d6ff6f879aea8d8c19c4485ca09c4935d003aba95b080326f5b11e082d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2fc600d6ff6f879aea8d8c19c4485ca09c4935d003aba95b080326f5b11e082d", kill_on_drop: false }`
[INFO] [stdout] 2fc600d6ff6f879aea8d8c19c4485ca09c4935d003aba95b080326f5b11e082d
