[INFO] cloning repository https://github.com/Ruddle/oxidator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Ruddle/oxidator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRuddle%2Foxidator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRuddle%2Foxidator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ba77b3419a1c285fb6c63b2590bf138ce3ab661d
[INFO] checking Ruddle/oxidator against master#5518eaa946291f00471af8b254b2a1715f234882 for pr-120393-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRuddle%2Foxidator" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Ruddle/oxidator on toolchain 5518eaa946291f00471af8b254b2a1715f234882
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5518eaa946291f00471af8b254b2a1715f234882" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/Ruddle/oxidator
[INFO] finished tweaking git repo https://github.com/Ruddle/oxidator
[INFO] tweaked toml for git repo https://github.com/Ruddle/oxidator written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/Ruddle/oxidator 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" "+5518eaa946291f00471af8b254b2a1715f234882" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded generic-array v0.13.2
[INFO] [stderr]   Downloaded rand_distr v0.2.2
[INFO] [stderr]   Downloaded libm v0.1.4
[INFO] [stderr]   Downloaded termcolor v1.1.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.58
[INFO] [stderr]   Downloaded byte-tools v0.2.0
[INFO] [stderr]   Downloaded wayland-client v0.23.6
[INFO] [stderr]   Downloaded base-62 v0.1.1
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.58
[INFO] [stderr]   Downloaded storage-map v0.2.0
[INFO] [stderr]   Downloaded vec_map v0.6.0
[INFO] [stderr]   Downloaded colorful v0.2.1
[INFO] [stderr]   Downloaded notify v5.0.0-pre.1
[INFO] [stderr]   Downloaded deflate v0.7.20
[INFO] [stderr]   Downloaded ash v0.29.0
[INFO] [stderr]   Downloaded imgui v0.2.1
[INFO] [stderr]   Downloaded typename_derive v0.1.4
[INFO] [stderr]   Downloaded shaderc-sys v0.6.1
[INFO] [stderr]   Downloaded gfx-backend-dx11 v0.4.5
[INFO] [stderr]   Downloaded imgui-winit-support v0.2.1
[INFO] [stderr]   Downloaded obj-rs v0.5.0
[INFO] [stderr]   Downloaded typename v0.1.2
[INFO] [stderr]   Downloaded spirv_cross v0.16.0
[INFO] [stderr]   Downloaded regex v1.3.4
[INFO] [stderr]   Downloaded rand v0.5.6
[INFO] [stderr]   Downloaded gfx-backend-dx12 v0.4.3
[INFO] [stderr]   Downloaded backtrace v0.3.44
[INFO] [stderr]   Downloaded aho-corasick v0.7.8
[INFO] [stderr]   Downloaded wgpu v0.4.0
[INFO] [stderr]   Downloaded glsl-to-spirv v0.1.7
[INFO] [stderr]   Downloaded d3d12 v0.3.0
[INFO] [stderr]   Downloaded digest v0.7.6
[INFO] [stderr]   Downloaded shaderc v0.6.1
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.58
[INFO] [stderr]   Downloaded hibitset v0.6.3
[INFO] [stderr]   Downloaded png v0.11.0
[INFO] [stderr]   Downloaded bincode v1.2.1
[INFO] [stderr]   Downloaded flate2 v1.0.13
[INFO] [stderr]   Downloaded gfx-backend-vulkan v0.4.2
[INFO] [stderr]   Downloaded imgui-sys v0.2.0
[INFO] [stderr]   Downloaded humantime v1.3.0
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.58
[INFO] [stderr]   Downloaded wayland-protocols v0.23.6
[INFO] [stderr]   Downloaded mio v0.6.21
[INFO] [stderr]   Downloaded libc v0.2.67
[INFO] [stderr]   Downloaded nix v0.14.1
[INFO] [stderr]   Downloaded winit v0.20.0-alpha4
[INFO] [stderr]   Downloaded bumpalo v3.2.0
[INFO] [stderr]   Downloaded syn v1.0.15
[INFO] [stderr]   Downloaded zerocopy-derive v0.1.4
[INFO] [stderr]   Downloaded nalgebra v0.19.0
[INFO] [stderr]   Downloaded jpeg-decoder v0.1.18
[INFO] [stderr]   Downloaded noise v0.6.0
[INFO] [stderr]   Downloaded parking_lot_core v0.2.14
[INFO] [stderr]   Downloaded smithay-client-toolkit v0.6.6
[INFO] [stderr]   Downloaded gfx-backend-metal v0.4.3
[INFO] [stderr]   Downloaded gfx-hal v0.4.1
[INFO] [stderr]   Downloaded metal v0.17.1
[INFO] [stderr]   Downloaded js-sys v0.3.35
[INFO] [stderr]   Downloaded x11 v2.18.2
[INFO] [stderr]   Downloaded wgpu-native v0.4.3
[INFO] [stderr]   Downloaded cocoa v0.19.1
[INFO] [stderr]   Downloaded image v0.18.0
[INFO] [stderr]   Downloaded parking_lot_core v0.6.2
[INFO] [stderr]   Downloaded parking_lot v0.4.8
[INFO] [stderr]   Downloaded chashmap v2.2.2
[INFO] [stderr]   Downloaded rusttype v0.7.9
[INFO] [stderr]   Downloaded xml-rs v0.8.0
[INFO] [stderr]   Downloaded num-complex v0.2.4
[INFO] [stderr]   Downloaded crossbeam-channel v0.3.9
[INFO] [stderr]   Downloaded rendy-memory v0.5.2
[INFO] [stderr]   Downloaded wasm-bindgen-backend v0.2.58
[INFO] [stderr]   Downloaded dispatch v0.1.4
[INFO] [stderr]   Downloaded line_drawing v0.7.0
[INFO] [stderr]   Downloaded ordered-float v1.0.2
[INFO] [stderr]   Downloaded core-video-sys v0.1.3
[INFO] [stderr]   Downloaded mio-extras v2.0.6
[INFO] [stderr]   Downloaded wayland-commons v0.23.6
[INFO] [stderr]   Downloaded pkg-config v0.3.17
[INFO] [stderr]   Downloaded anymap v0.12.1
[INFO] [stderr]   Downloaded core-graphics v0.17.3
[INFO] [stderr]   Downloaded memmap v0.7.0
[INFO] [stderr]   Downloaded wayland-scanner v0.23.6
[INFO] [stderr]   Downloaded approx v0.3.2
[INFO] [stderr]   Downloaded owning_ref v0.3.3
[INFO] [stderr]   Downloaded spin_sleep v0.3.7
[INFO] [stderr]   Downloaded xdg v2.2.0
[INFO] [stderr]   Downloaded andrew v0.2.1
[INFO] [stderr]   Downloaded copyless v0.1.4
[INFO] [stderr]   Downloaded atom v0.3.5
[INFO] [stderr]   Downloaded synstructure v0.10.2
[INFO] [stderr]   Downloaded core-foundation-sys v0.6.2
[INFO] [stderr]   Downloaded core-foundation v0.6.4
[INFO] [stderr]   Downloaded parking_lot v0.9.0
[INFO] [stderr]   Downloaded rusttype v0.8.2
[INFO] [stderr]   Downloaded matrixmultiply v0.2.3
[INFO] [stderr]   Downloaded typenum v1.11.2
[INFO] [stderr]   Downloaded gif v0.9.2
[INFO] [stderr]   Downloaded num-rational v0.2.3
[INFO] [stderr]   Downloaded env_logger v0.7.1
[INFO] [stderr]   Downloaded rendy-descriptor v0.5.1
[INFO] [stderr]   Downloaded relevant v0.4.2
[INFO] [stderr]   Downloaded stable_deref_trait v1.1.1
[INFO] [stderr]   Downloaded stb_truetype v0.3.1
[INFO] [stderr]   Downloaded memoffset v0.5.3
[INFO] [stderr]   Downloaded num-iter v0.1.40
[INFO] [stderr]   Downloaded calloop v0.4.4
[INFO] [stderr]   Downloaded libloading v0.5.2
[INFO] [stderr]   Downloaded gfx-backend-empty v0.4.0
[INFO] [stderr]   Downloaded wayland-sys v0.23.6
[INFO] [stderr]   Downloaded dlib v0.4.1
[INFO] [stderr]   Downloaded gfx-auxil v0.1.0
[INFO] [stderr]   Downloaded range-alloc v0.1.0
[INFO] [stderr]   Downloaded zerocopy v0.2.8
[INFO] [stderr]   Downloaded instant v0.1.2
[INFO] [stderr]   Downloaded lock_api v0.3.3
[INFO] [stderr]   Downloaded raw-window-handle v0.3.3
[INFO] [stderr]   Downloaded downcast-rs v1.1.1
[INFO] [stderr]   Downloaded color_quant v1.0.1
[INFO] [stderr]   Downloaded num-rational v0.1.42
[INFO] [stderr]   Downloaded inflate v0.3.4
[INFO] [stderr]   Downloaded filetime v0.2.8
[INFO] [stderr]   Downloaded num v0.2.1
[INFO] [stderr]   Downloaded png v0.15.3
[INFO] [stderr]   Downloaded hermit-abi v0.1.8
[INFO] [stderr]   Downloaded num_cpus v1.12.0
[INFO] [stderr]   Downloaded cmake v0.1.42
[INFO] [stderr]   Downloaded block-buffer v0.3.3
[INFO] [stderr]   Downloaded generic-array v0.9.0
[INFO] [stderr]   Downloaded sha2 v0.7.1
[INFO] [stderr]   Downloaded alga v0.9.2
[INFO] [stderr]   Downloaded x11-dl v2.18.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+5518eaa946291f00471af8b254b2a1715f234882" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 632fa2c72431ff98fbf79e62836f0be5be3afaa2e2956be219bde499e1ca22d8
[INFO] running `Command { std: "docker" "start" "-a" "632fa2c72431ff98fbf79e62836f0be5be3afaa2e2956be219bde499e1ca22d8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "632fa2c72431ff98fbf79e62836f0be5be3afaa2e2956be219bde499e1ca22d8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "632fa2c72431ff98fbf79e62836f0be5be3afaa2e2956be219bde499e1ca22d8", kill_on_drop: false }`
[INFO] [stdout] 632fa2c72431ff98fbf79e62836f0be5be3afaa2e2956be219bde499e1ca22d8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+5518eaa946291f00471af8b254b2a1715f234882" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0f1ddacafffa83ab23c2f91644394be9f0b06a131c0dea15b74db322abb22b98
[INFO] running `Command { std: "docker" "start" "-a" "0f1ddacafffa83ab23c2f91644394be9f0b06a131c0dea15b74db322abb22b98", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.67
[INFO] [stderr]    Compiling autocfg v1.0.0
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]    Compiling maybe-uninit v2.0.0
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling cc v1.0.50
[INFO] [stderr]    Compiling proc-macro2 v1.0.8
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]    Compiling num-traits v0.2.11
[INFO] [stderr]    Compiling unicode-xid v0.2.0
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]    Compiling log v0.4.8
[INFO] [stderr]    Compiling syn v1.0.15
[INFO] [stderr]    Compiling unicode-xid v0.1.0
[INFO] [stderr]     Checking smallvec v0.6.13
[INFO] [stderr]     Checking scopeguard v1.1.0
[INFO] [stderr]    Compiling num-integer v0.1.42
[INFO] [stderr]     Checking slab v0.4.2
[INFO] [stderr]    Compiling quote v1.0.2
[INFO] [stderr]    Compiling pkg-config v0.3.17
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling quote v0.6.13
[INFO] [stderr]    Compiling xml-rs v0.8.0
[INFO] [stderr]    Compiling libloading v0.5.2
[INFO] [stderr]     Checking net2 v0.2.33
[INFO] [stderr]     Checking raw-window-handle v0.3.3
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]    Compiling memoffset v0.5.3
[INFO] [stderr]     Checking arrayvec v0.5.1
[INFO] [stderr]    Compiling serde v1.0.104
[INFO] [stderr]    Compiling nix v0.14.1
[INFO] [stderr]     Checking adler32 v1.0.4
[INFO] [stderr]     Checking mio v0.6.21
[INFO] [stderr]     Checking approx v0.3.2
[INFO] [stderr]    Compiling parking_lot_core v0.6.2
[INFO] [stderr]    Compiling wayland-scanner v0.23.6
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.2
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]     Checking lazycell v1.2.1
[INFO] [stderr]     Checking dlib v0.4.1
[INFO] [stderr]    Compiling parking_lot v0.9.0
[INFO] [stderr]    Compiling num-bigint v0.2.6
[INFO] [stderr]    Compiling num-iter v0.1.40
[INFO] [stderr]    Compiling getrandom v0.1.14
[INFO] [stderr]     Checking wayland-sys v0.23.6
[INFO] [stderr]     Checking ordered-float v1.0.2
[INFO] [stderr]     Checking mio-extras v2.0.6
[INFO] [stderr]     Checking gfx-hal v0.4.1
[INFO] [stderr]     Checking lock_api v0.3.3
[INFO] [stderr]     Checking stb_truetype v0.3.1
[INFO] [stderr]    Compiling num-complex v0.2.4
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]    Compiling rayon-core v1.7.0
[INFO] [stderr]     Checking same-file v1.0.6
[INFO] [stderr]     Checking walkdir v2.3.1
[INFO] [stderr]     Checking rusttype v0.8.2
[INFO] [stderr]     Checking crossbeam-deque v0.7.3
[INFO] [stderr]     Checking crossbeam-queue v0.2.1
[INFO] [stderr]    Compiling x11 v2.18.2
[INFO] [stderr]    Compiling backtrace-sys v0.1.32
[INFO] [stderr]     Checking num_cpus v1.12.0
[INFO] [stderr]    Compiling num-rational v0.2.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.6
[INFO] [stderr]     Checking downcast-rs v1.1.1
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]    Compiling wayland-client v0.23.6
[INFO] [stderr]    Compiling wayland-protocols v0.23.6
[INFO] [stderr]     Checking calloop v0.4.4
[INFO] [stderr]     Checking wayland-commons v0.23.6
[INFO] [stderr]     Checking c2-chacha v0.2.3
[INFO] [stderr]     Checking rusttype v0.7.9
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking deflate v0.7.20
[INFO] [stderr]     Checking line_drawing v0.7.0
[INFO] [stderr]    Compiling x11-dl v2.18.5
[INFO] [stderr]    Compiling imgui-sys v0.2.0
[INFO] [stderr]     Checking rand v0.4.6
[INFO] [stderr]     Checking shared_library v0.1.9
[INFO] [stderr]     Checking relevant v0.4.2
[INFO] [stderr]    Compiling libm v0.1.4
[INFO] [stderr]    Compiling failure_derive v0.1.6
[INFO] [stderr]     Checking stable_deref_trait v1.1.1
[INFO] [stderr]     Checking either v1.5.3
[INFO] [stderr]     Checking atom v0.3.5
[INFO] [stderr]    Compiling typenum v1.11.2
[INFO] [stderr]     Checking xdg v2.2.0
[INFO] [stderr]    Compiling crc32fast v1.2.0
[INFO] [stderr]     Checking hibitset v0.6.3
[INFO] [stderr]     Checking andrew v0.2.1
[INFO] [stderr]    Compiling synstructure v0.12.3
[INFO] [stderr]     Checking rayon v1.3.0
[INFO] [stderr]     Checking owning_ref v0.3.3
[INFO] [stderr]     Checking parking_lot_core v0.2.14
[INFO] [stderr]     Checking ash v0.29.0
[INFO] [stderr]     Checking rand_chacha v0.2.1
[INFO] [stderr]    Compiling synstructure v0.10.2
[INFO] [stderr]     Checking inflate v0.3.4
[INFO] [stderr]     Checking num-traits v0.1.43
[INFO] [stderr]     Checking memmap v0.7.0
[INFO] [stderr]     Checking lzw v0.10.0
[INFO] [stderr]    Compiling ryu v1.0.2
[INFO] [stderr]     Checking rand_core v0.4.2
[INFO] [stderr]     Checking rustc-demangle v0.1.16
[INFO] [stderr]    Compiling serde_derive v1.0.104
[INFO] [stderr]     Checking color_quant v1.0.1
[INFO] [stderr]     Checking colorful v0.2.1
[INFO] [stderr]     Checking backtrace v0.3.44
[INFO] [stderr]     Checking gif v0.9.2
[INFO] [stderr]    Compiling zerocopy-derive v0.1.4
[INFO] [stderr]     Checking rendy-memory v0.5.2
[INFO] [stderr]     Checking rand_core v0.3.1
[INFO] [stderr]     Checking enum_primitive v0.1.1
[INFO] [stderr]     Checking png v0.11.0
[INFO] [stderr]     Checking jpeg-decoder v0.1.18
[INFO] [stderr]     Checking aho-corasick v0.7.8
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking parking_lot v0.4.8
[INFO] [stderr]     Checking rendy-descriptor v0.5.1
[INFO] [stderr]     Checking gfx-backend-empty v0.4.0
[INFO] [stderr]     Checking num-rational v0.1.42
[INFO] [stderr]     Checking inotify-sys v0.1.3
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking crossbeam-utils v0.6.6
[INFO] [stderr]     Checking thread_local v1.0.1
[INFO] [stderr]     Checking regex-syntax v0.6.14
[INFO] [stderr]     Checking copyless v0.1.4
[INFO] [stderr]     Checking quick-error v1.2.3
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking vec_map v0.8.1
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]     Checking percent-encoding v2.1.0
[INFO] [stderr]     Checking instant v0.1.2
[INFO] [stderr]     Checking matrixmultiply v0.2.3
[INFO] [stderr]     Checking image v0.18.0
[INFO] [stderr]     Checking humantime v1.3.0
[INFO] [stderr]     Checking crossbeam-channel v0.3.9
[INFO] [stderr]     Checking inotify v0.7.0
[INFO] [stderr]     Checking gfx-backend-vulkan v0.4.2
[INFO] [stderr]     Checking generic-array v0.13.2
[INFO] [stderr]     Checking rand_distr v0.2.2
[INFO] [stderr]     Checking chashmap v2.2.2
[INFO] [stderr]     Checking failure v0.1.6
[INFO] [stderr]     Checking zerocopy v0.2.8
[INFO] [stderr]     Checking rand v0.5.6
[INFO] [stderr]     Checking wgpu-native v0.4.3
[INFO] [stderr]     Checking regex v1.3.4
[INFO] [stderr]    Compiling typename_derive v0.1.4
[INFO] [stderr]     Checking miniz_oxide v0.3.6
[INFO] [stderr]     Checking inflate v0.4.5
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking filetime v0.2.8
[INFO] [stderr]     Checking anymap v0.12.1
[INFO] [stderr]     Checking vec_map v0.6.0
[INFO] [stderr]     Checking termcolor v1.1.0
[INFO] [stderr]     Checking itoa v0.4.5
[INFO] [stderr]     Checking notify v5.0.0-pre.1
[INFO] [stderr]     Checking typename v0.1.2
[INFO] [stderr]     Checking flate2 v1.0.13
[INFO] [stderr]     Checking wgpu v0.4.0
[INFO] [stderr]     Checking env_logger v0.7.1
[INFO] [stderr]     Checking png v0.15.3
[INFO] [stderr]     Checking noise v0.6.0
[INFO] [stderr]     Checking base-62 v0.1.1
[INFO] [stderr]     Checking spin_sleep v0.3.7
[INFO] [stderr]     Checking fnv v1.0.6
[INFO] [stderr]     Checking imgui v0.2.1
[INFO] [stderr]     Checking smithay-client-toolkit v0.6.6
[INFO] [stderr]     Checking winit v0.20.0-alpha4
[INFO] [stderr]     Checking bincode v1.2.1
[INFO] [stderr]     Checking serde_json v1.0.48
[INFO] [stderr]     Checking imgui-winit-support v0.2.1
[INFO] [stderr]     Checking num v0.2.1
[INFO] [stderr]     Checking alga v0.9.2
[INFO] [stderr]     Checking obj-rs v0.5.0
[INFO] [stderr]     Checking nalgebra v0.19.0
[INFO] [stderr]     Checking oxidator v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Vector4`
[INFO] [stdout]  --> src/client/mod.rs:3:56
[INFO] [stdout]   |
[INFO] [stdout] 3 | use na::{Isometry3, Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |                                                        ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::botdef`
[INFO] [stdout]  --> src/client/game_state.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::botdef;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/client/unit_part_gpu.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/client/unit_part_gpu.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model::*`
[INFO] [stdout]  --> src/client/unit_editor.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::model::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gpu_obj::model_gpu::ModelGpu`
[INFO] [stdout]  --> src/client/unit_editor.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use gpu_obj::model_gpu::ModelGpu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vector2`
[INFO] [stdout]  --> src/client/unit_editor.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use na::{Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap`, `HashSet`
[INFO] [stdout]  --> src/client/unit_editor.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/client/unit_editor.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufReader`
[INFO] [stdout]    --> src/client/unit_editor.rs:228:23
[INFO] [stdout]     |
[INFO] [stdout] 228 |         use std::io::{BufReader, BufWriter};
[INFO] [stdout]     |                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufWriter`
[INFO] [stdout]    --> src/client/unit_editor.rs:244:34
[INFO] [stdout]     |
[INFO] [stdout] 244 |         use std::io::{BufReader, BufWriter};
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]    --> src/client/heightmap_editor.rs:328:13
[INFO] [stdout]     |
[INFO] [stdout] 328 |         use std::io::BufReader;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vector4`
[INFO] [stdout]  --> src/client/mod.rs:3:56
[INFO] [stdout]   |
[INFO] [stdout] 3 | use na::{Isometry3, Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |                                                        ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::botdef`
[INFO] [stdout]  --> src/client/game_state.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::botdef;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/client/unit_part_gpu.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/client/unit_part_gpu.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model::*`
[INFO] [stdout]  --> src/client/unit_editor.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::model::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gpu_obj::model_gpu::ModelGpu`
[INFO] [stdout]  --> src/client/unit_editor.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use gpu_obj::model_gpu::ModelGpu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vector2`
[INFO] [stdout]  --> src/client/unit_editor.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use na::{Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap`, `HashSet`
[INFO] [stdout]  --> src/client/unit_editor.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/client/unit_editor.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufReader`
[INFO] [stdout]    --> src/client/unit_editor.rs:228:23
[INFO] [stdout]     |
[INFO] [stdout] 228 |         use std::io::{BufReader, BufWriter};
[INFO] [stdout]     |                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufWriter`
[INFO] [stdout]    --> src/client/unit_editor.rs:244:34
[INFO] [stdout]     |
[INFO] [stdout] 244 |         use std::io::{BufReader, BufWriter};
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/client/misc.rs:19:13
[INFO] [stdout]    |
[INFO] [stdout] 19 |         for (model_gpu_state) in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout]    |             ^               ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 19 -         for (model_gpu_state) in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout] 19 +         for model_gpu_state in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/client/misc.rs:159:25
[INFO] [stdout]     |
[INFO] [stdout] 159 |                         (t * 2.0),
[INFO] [stdout]     |                         ^       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 159 -                         (t * 2.0),
[INFO] [stdout] 159 +                         t * 2.0,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]    --> src/client/heightmap_editor.rs:328:13
[INFO] [stdout]     |
[INFO] [stdout] 328 |         use std::io::BufReader;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::botdef`
[INFO] [stdout]  --> src/client/play.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::botdef;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `imgui::*`
[INFO] [stdout]  --> src/client/play.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use imgui::*;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Isometry3`, `Vector2`, `Vector4`
[INFO] [stdout]  --> src/client/play.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | use na::{Isometry3, Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |          ^^^^^^^^^                   ^^^^^^^           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`
[INFO] [stdout]   --> src/client/play.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::frame::Player`
[INFO] [stdout]  --> src/client/render.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::frame::Player;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/client/misc.rs:19:13
[INFO] [stdout]    |
[INFO] [stdout] 19 |         for (model_gpu_state) in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout]    |             ^               ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 19 -         for (model_gpu_state) in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout] 19 +         for model_gpu_state in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/client/misc.rs:159:25
[INFO] [stdout]     |
[INFO] [stdout] 159 |                         (t * 2.0),
[INFO] [stdout]     |                         ^       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 159 -                         (t * 2.0),
[INFO] [stdout] 159 +                         t * 2.0,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::botdef`
[INFO] [stdout]  --> src/client/play.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::botdef;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `imgui::*`
[INFO] [stdout]  --> src/client/play.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use imgui::*;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Isometry3`, `Vector2`, `Vector4`
[INFO] [stdout]  --> src/client/play.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | use na::{Isometry3, Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |          ^^^^^^^^^                   ^^^^^^^           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`
[INFO] [stdout]   --> src/client/play.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::frame::Player`
[INFO] [stdout]  --> src/client/render.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::frame::Player;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IsometryMatrix3`, `Matrix4`, `Vector2`, `Vector4`
[INFO] [stdout]  --> src/client/render.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | use na::{IsometryMatrix3, Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^  ^^^^^^^          ^^^^^^^           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/client/render.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unit_part_gpu::UnitPartGpu`
[INFO] [stdout]   --> src/client/render.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use unit_part_gpu::UnitPartGpu;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]   --> src/client/mod.rs:34:24
[INFO] [stdout]    |
[INFO] [stdout] 34 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]   --> src/client/mod.rs:35:23
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/client/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufferMapAsyncResult`, `Extent3d`, `SwapChain`
[INFO] [stdout]   --> src/client/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | use wgpu::{BufferMapAsyncResult, Extent3d, SwapChain, TextureFormat};
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IsometryMatrix3`, `Matrix4`, `Vector2`, `Vector4`
[INFO] [stdout]  --> src/client/render.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | use na::{IsometryMatrix3, Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^  ^^^^^^^          ^^^^^^^           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/client/mod.rs:154:10
[INFO] [stdout]     |
[INFO] [stdout] 154 |     ) -> (Self) {
[INFO] [stdout]     |          ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 154 -     ) -> (Self) {
[INFO] [stdout] 154 +     ) -> Self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `unbounded` is imported redundantly
[INFO] [stdout]    --> src/client/mod.rs:436:17
[INFO] [stdout]     |
[INFO] [stdout] 1   | use crate::*;
[INFO] [stdout]     |     -------- the item `unbounded` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 436 |             use crossbeam_channel::unbounded;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Result`
[INFO] [stdout]    --> src/client/mod.rs:437:50
[INFO] [stdout]     |
[INFO] [stdout] 437 |             use notify::{watcher, RecursiveMode, Result};
[INFO] [stdout]     |                                                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/client/mod.rs:608:9
[INFO] [stdout]     |
[INFO] [stdout] 608 |         (this)
[INFO] [stdout]     |         ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 608 -         (this)
[INFO] [stdout] 608 +         this
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/client/mod.rs:927:25
[INFO] [stdout]     |
[INFO] [stdout] 927 |                     for (model_gpu_state) in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout]     |                         ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 927 -                     for (model_gpu_state) in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout] 927 +                     for model_gpu_state in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Point3`
[INFO] [stdout]   --> src/frame.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | use na::{Point3, Vector3};
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::unit`
[INFO] [stdout]   --> src/frame.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::unit;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/client/render.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unit_part_gpu::UnitPartGpu`
[INFO] [stdout]   --> src/client/render.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use unit_part_gpu::UnitPartGpu;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]   --> src/client/mod.rs:34:24
[INFO] [stdout]    |
[INFO] [stdout] 34 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]   --> src/client/mod.rs:35:23
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/client/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufferMapAsyncResult`, `Extent3d`, `SwapChain`
[INFO] [stdout]   --> src/client/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | use wgpu::{BufferMapAsyncResult, Extent3d, SwapChain, TextureFormat};
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/client/mod.rs:154:10
[INFO] [stdout]     |
[INFO] [stdout] 154 |     ) -> (Self) {
[INFO] [stdout]     |          ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 154 -     ) -> (Self) {
[INFO] [stdout] 154 +     ) -> Self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix4`
[INFO] [stdout]  --> src/frame_server/mod.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | use na::{Matrix4, Point3, Vector2, Vector3};
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `unbounded` is imported redundantly
[INFO] [stdout]    --> src/client/mod.rs:436:17
[INFO] [stdout]     |
[INFO] [stdout] 1   | use crate::*;
[INFO] [stdout]     |     -------- the item `unbounded` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 436 |             use crossbeam_channel::unbounded;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Result`
[INFO] [stdout]    --> src/client/mod.rs:437:50
[INFO] [stdout]     |
[INFO] [stdout] 437 |             use notify::{watcher, RecursiveMode, Result};
[INFO] [stdout]     |                                                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/client/mod.rs:608:9
[INFO] [stdout]     |
[INFO] [stdout] 608 |         (this)
[INFO] [stdout]     |         ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 608 -         (this)
[INFO] [stdout] 608 +         this
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> src/frame_server/mod.rs:393:25
[INFO] [stdout]     |
[INFO] [stdout] 393 |                         'bot_test: for kbot_id in kbots_in_proximity.iter() {
[INFO] [stdout]     |                         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/client/mod.rs:927:25
[INFO] [stdout]     |
[INFO] [stdout] 927 |                     for (model_gpu_state) in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout]     |                         ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 927 -                     for (model_gpu_state) in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout] 927 +                     for model_gpu_state in self.unit_part_gpu.states.iter_mut() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Point3`
[INFO] [stdout]   --> src/frame.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | use na::{Point3, Vector3};
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/frame_server/mod.rs:452:10
[INFO] [stdout]     |
[INFO] [stdout] 452 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::unit`
[INFO] [stdout]   --> src/frame.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::unit;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice`
[INFO] [stdout]  --> src/glsl.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::slice;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/arrow_gpu.rs:45:95
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let pipeline = Self::create_pipeline(device, main_bind_group_layout, format).unwrap();;
[INFO] [stdout]    |                                                                                               ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/blit_texture.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/explosion.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt`
[INFO] [stdout]    --> src/gpu_obj/explosion.rs:312:25
[INFO] [stdout]     |
[INFO] [stdout] 312 |         use byteorder::{BigEndian, ReadBytesExt};
[INFO] [stdout]     |                         ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix4`
[INFO] [stdout]  --> src/frame_server/mod.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | use na::{Matrix4, Point3, Vector2, Vector3};
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice`
[INFO] [stdout]   --> src/gpu_obj/glsl_compiler.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::slice;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/health_bar.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> src/frame_server/mod.rs:393:25
[INFO] [stdout]     |
[INFO] [stdout] 393 |                         'bot_test: for kbot_id in kbots_in_proximity.iter() {
[INFO] [stdout]     |                         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/line.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/line.rs:29:95
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let pipeline = Self::create_pipeline(device, main_bind_group_layout, format).unwrap();;
[INFO] [stdout]    |                                                                                               ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/frame_server/mod.rs:452:10
[INFO] [stdout]     |
[INFO] [stdout] 452 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/model_gpu.rs:46:95
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let pipeline = Self::create_pipeline(device, main_bind_group_layout, format).unwrap();;
[INFO] [stdout]    |                                                                                               ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BindGroup`, `RenderPass`
[INFO] [stdout]  --> src/gpu_obj/trait_gpu.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use wgpu::{BindGroup, BindGroupLayout, RenderPass, TextureFormat};
[INFO] [stdout]   |            ^^^^^^^^^                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/unit_icon.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/unit_icon.rs:29:95
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let pipeline = Self::create_pipeline(device, main_bind_group_layout, format).unwrap();;
[INFO] [stdout]    |                                                                                               ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/water.rs:62:27
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 .unwrap();;
[INFO] [stdout]    |                           ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice`
[INFO] [stdout]  --> src/glsl.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::slice;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/arrow_gpu.rs:45:95
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let pipeline = Self::create_pipeline(device, main_bind_group_layout, format).unwrap();;
[INFO] [stdout]    |                                                                                               ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/blit_texture.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/explosion.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::unit`
[INFO] [stdout]  --> src/mobile.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::unit;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathBuf`, `Path`
[INFO] [stdout]  --> src/mobile.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt`
[INFO] [stdout]    --> src/gpu_obj/explosion.rs:312:25
[INFO] [stdout]     |
[INFO] [stdout] 312 |         use byteorder::{BigEndian, ReadBytesExt};
[INFO] [stdout]     |                         ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/mobile.rs:37:20
[INFO] [stdout]    |
[INFO] [stdout] 37 |         let diff = (other - self);
[INFO] [stdout]    |                    ^            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 37 -         let diff = (other - self);
[INFO] [stdout] 37 +         let diff = other - self;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice`
[INFO] [stdout]   --> src/gpu_obj/glsl_compiler.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::slice;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/health_bar.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::unit`
[INFO] [stdout]  --> src/moddef.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::unit;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/line.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/line.rs:29:95
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let pipeline = Self::create_pipeline(device, main_bind_group_layout, format).unwrap();;
[INFO] [stdout]    |                                                                                               ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/model_gpu.rs:46:95
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let pipeline = Self::create_pipeline(device, main_bind_group_layout, format).unwrap();;
[INFO] [stdout]    |                                                                                               ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BindGroup`, `RenderPass`
[INFO] [stdout]  --> src/gpu_obj/trait_gpu.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use wgpu::{BindGroup, BindGroupLayout, RenderPass, TextureFormat};
[INFO] [stdout]   |            ^^^^^^^^^                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model`
[INFO] [stdout]  --> src/gpu_obj/unit_icon.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/unit_icon.rs:29:95
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let pipeline = Self::create_pipeline(device, main_bind_group_layout, format).unwrap();;
[INFO] [stdout]    |                                                                                               ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/gpu_obj/water.rs:62:27
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 .unwrap();;
[INFO] [stdout]    |                           ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::unit`
[INFO] [stdout]  --> src/mobile.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::unit;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathBuf`, `Path`
[INFO] [stdout]  --> src/mobile.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/mobile.rs:37:20
[INFO] [stdout]    |
[INFO] [stdout] 37 |         let diff = (other - self);
[INFO] [stdout]    |                    ^            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 37 -         let diff = (other - self);
[INFO] [stdout] 37 +         let diff = other - self;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::unit`
[INFO] [stdout]  --> src/moddef.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::unit;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude::*`
[INFO] [stdout]  --> src/net_client.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]  --> src/net_client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::BufReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpListener`
[INFO] [stdout]  --> src/net_client.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::net::TcpListener;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::client::*`
[INFO] [stdout]  --> src/unit.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::client::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model::*`
[INFO] [stdout]  --> src/unit.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::FileTree`
[INFO] [stdout]  --> src/unit.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::utils::FileTree;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gpu_obj::model_gpu::ModelGpu`
[INFO] [stdout]  --> src/unit.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use gpu_obj::model_gpu::ModelGpu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Vector2`, `Vector3`
[INFO] [stdout]  --> src/unit.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use na::{Matrix4, Point3, Vector2, Vector3};
[INFO] [stdout]   |                           ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap`, `HashSet`
[INFO] [stdout]  --> src/unit.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/unit.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude::*`
[INFO] [stdout]  --> src/net_client.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]  --> src/net_client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::BufReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpListener`
[INFO] [stdout]  --> src/net_client.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::net::TcpListener;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::client::*`
[INFO] [stdout]  --> src/unit.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::client::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model::*`
[INFO] [stdout]  --> src/unit.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::FileTree`
[INFO] [stdout]  --> src/unit.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::utils::FileTree;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gpu_obj::model_gpu::ModelGpu`
[INFO] [stdout]  --> src/unit.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use gpu_obj::model_gpu::ModelGpu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Vector2`, `Vector3`
[INFO] [stdout]  --> src/unit.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use na::{Matrix4, Point3, Vector2, Vector3};
[INFO] [stdout]   |                           ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap`, `HashSet`
[INFO] [stdout]  --> src/unit.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/unit.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IsometryMatrix3`, `Point3`, `Vector2`, `Vector4`
[INFO] [stdout]  --> src/utils.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | use na::{IsometryMatrix3, Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^           ^^^^^^  ^^^^^^^           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> src/utils.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DirEntry`
[INFO] [stdout]    --> src/utils.rs:134:21
[INFO] [stdout]     |
[INFO] [stdout] 134 | use std::fs::{self, DirEntry};
[INFO] [stdout]     |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/utils.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 135 | use std::io;
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]    --> src/utils.rs:136:17
[INFO] [stdout]     |
[INFO] [stdout] 136 | use std::path::{Path, PathBuf};
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt`
[INFO] [stdout]    --> src/utils.rs:177:25
[INFO] [stdout]     |
[INFO] [stdout] 177 |         use byteorder::{BigEndian, ReadBytesExt};
[INFO] [stdout]     |                         ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IsometryMatrix3`, `Point3`, `Vector2`, `Vector4`
[INFO] [stdout]  --> src/utils.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | use na::{IsometryMatrix3, Matrix4, Point3, Vector2, Vector3, Vector4};
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^           ^^^^^^  ^^^^^^^           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> src/utils.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DirEntry`
[INFO] [stdout]    --> src/utils.rs:134:21
[INFO] [stdout]     |
[INFO] [stdout] 134 | use std::fs::{self, DirEntry};
[INFO] [stdout]     |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/utils.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 135 | use std::io;
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]    --> src/utils.rs:136:17
[INFO] [stdout]     |
[INFO] [stdout] 136 | use std::path::{Path, PathBuf};
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt`
[INFO] [stdout]    --> src/utils.rs:177:25
[INFO] [stdout]     |
[INFO] [stdout] 177 |         use byteorder::{BigEndian, ReadBytesExt};
[INFO] [stdout]     |                         ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]    --> src/client/unit_editor.rs:227:13
[INFO] [stdout]     |
[INFO] [stdout] 227 |         use std::io::prelude::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]    --> src/client/unit_editor.rs:243:13
[INFO] [stdout]     |
[INFO] [stdout] 243 |         use std::io::prelude::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]    --> src/client/heightmap_editor.rs:327:13
[INFO] [stdout]     |
[INFO] [stdout] 327 |         use std::io::prelude::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/client/unit_editor.rs:104:21
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     id,
[INFO] [stdout]     |                     ^^ help: try ignoring the field: `id: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `radius`
[INFO] [stdout]    --> src/client/unit_editor.rs:106:21
[INFO] [stdout]     |
[INFO] [stdout] 106 |                     radius,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `radius: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metal_cost`
[INFO] [stdout]    --> src/client/unit_editor.rs:115:21
[INFO] [stdout]     |
[INFO] [stdout] 115 |                     metal_cost,
[INFO] [stdout]     |                     ^^^^^^^^^^ help: try ignoring the field: `metal_cost: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `part_tree`
[INFO] [stdout]    --> src/client/unit_editor.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     part_tree,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `part_tree: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/client/unit_editor.rs:236:13
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let mut buf_w = BufWriter::new(file);
[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/client/unit_editor.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut buf_r = BufReader::new(file);
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deleter`
[INFO] [stdout]    --> src/client/unit_editor.rs:290:25
[INFO] [stdout]     |
[INFO] [stdout] 290 |                     let deleter = unit_editor.botdef.part_tree.remove_node(part_tree.id);
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deleter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/client/unit_editor.rs:492:46
[INFO] [stdout]     |
[INFO] [stdout] 492 |                         ModelGpuState::Error(e) => {
[INFO] [stdout]     |                                              ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/client/unit_editor.rs:583:51
[INFO] [stdout]     |
[INFO] [stdout] 583 |                         Some(ModelGpuState::Error(e)) => {
[INFO] [stdout]     |                                                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/client/heightmap_editor.rs:336:13
[INFO] [stdout]     |
[INFO] [stdout] 336 |         let mut buf_w = BufWriter::new(file);
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `encoder`
[INFO] [stdout]    --> src/client/misc.rs:127:63
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn upload_to_gpu(&mut self, view_proj: &Matrix4<f32>, encoder: &mut wgpu::CommandEncoder) {
[INFO] [stdout]     |                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/client/play.rs:70:21
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 let mut moddef = crate::moddef::ModDef {
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta_sim_sec`
[INFO] [stdout]    --> src/client/play.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |         delta_sim_sec: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_delta_sim_sec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `encoder`
[INFO] [stdout]    --> src/client/play.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |         encoder: &mut wgpu::CommandEncoder,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/client/render.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |                 _ => {
[INFO] [stdout]    |                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:54:21
[INFO] [stdout]    |
[INFO] [stdout] 54 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:78:21
[INFO] [stdout]    |
[INFO] [stdout] 78 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:82:21
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_be_built`
[INFO] [stdout]    --> src/client/render.rs:405:29
[INFO] [stdout]     |
[INFO] [stdout] 405 |                         let can_be_built: Vec<_> = self
[INFO] [stdout]     |                             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_be_built`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> src/client/render.rs:274:42
[INFO] [stdout]     |
[INFO] [stdout] 274 | ...                   .filter(|(n, d)| *n != "frame_time")
[INFO] [stdout]     |                                    ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> src/client/render.rs:298:42
[INFO] [stdout]     |
[INFO] [stdout] 298 | ...                   .filter(|(n, d)| *n != "total")
[INFO] [stdout]     |                                    ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/client/render.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |                 let mut generic_gpu = ModelGpu::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/client/render.rs:149:21
[INFO] [stdout]     |
[INFO] [stdout] 149 |                 let mut generic_gpu_state_new = unit_part_gpu::ModelGpuState::Ready(generic_gpu);
[INFO] [stdout]     |                     ----^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]    --> src/client/unit_editor.rs:227:13
[INFO] [stdout]     |
[INFO] [stdout] 227 |         use std::io::prelude::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]    --> src/client/unit_editor.rs:243:13
[INFO] [stdout]     |
[INFO] [stdout] 243 |         use std::io::prelude::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]    --> src/client/heightmap_editor.rs:327:13
[INFO] [stdout]     |
[INFO] [stdout] 327 |         use std::io::prelude::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/client/unit_editor.rs:104:21
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     id,
[INFO] [stdout]     |                     ^^ help: try ignoring the field: `id: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `radius`
[INFO] [stdout]    --> src/client/unit_editor.rs:106:21
[INFO] [stdout]     |
[INFO] [stdout] 106 |                     radius,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `radius: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metal_cost`
[INFO] [stdout]    --> src/client/unit_editor.rs:115:21
[INFO] [stdout]     |
[INFO] [stdout] 115 |                     metal_cost,
[INFO] [stdout]     |                     ^^^^^^^^^^ help: try ignoring the field: `metal_cost: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `part_tree`
[INFO] [stdout]    --> src/client/unit_editor.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     part_tree,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `part_tree: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/client/unit_editor.rs:236:13
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let mut buf_w = BufWriter::new(file);
[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/client/unit_editor.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut buf_r = BufReader::new(file);
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deleter`
[INFO] [stdout]    --> src/client/unit_editor.rs:290:25
[INFO] [stdout]     |
[INFO] [stdout] 290 |                     let deleter = unit_editor.botdef.part_tree.remove_node(part_tree.id);
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deleter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/client/unit_editor.rs:492:46
[INFO] [stdout]     |
[INFO] [stdout] 492 |                         ModelGpuState::Error(e) => {
[INFO] [stdout]     |                                              ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/client/unit_editor.rs:583:51
[INFO] [stdout]     |
[INFO] [stdout] 583 |                         Some(ModelGpuState::Error(e)) => {
[INFO] [stdout]     |                                                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/frame_server/mod.rs:98:21
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     id,
[INFO] [stdout]    |                     ^^ help: try ignoring the field: `id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/frame_server/mod.rs:131:21
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     id,
[INFO] [stdout]     |                     ^^ help: try ignoring the field: `id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to`
[INFO] [stdout]    --> src/frame_server/mod.rs:598:9
[INFO] [stdout]     |
[INFO] [stdout] 598 |         to,
[INFO] [stdout]     |         ^^ help: try ignoring the field: `to: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]    --> src/frame_server/mod.rs:600:9
[INFO] [stdout]     |
[INFO] [stdout] 600 |         from,
[INFO] [stdout]     |         ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `resources_surplus`
[INFO] [stdout]    --> src/frame_server/mod.rs:650:13
[INFO] [stdout]     |
[INFO] [stdout] 650 |     let mut resources_surplus = FnvHashMap::<Id<Player>, ResourceSurplus>::default();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resources_surplus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]    --> src/frame_server/mod.rs:654:9
[INFO] [stdout]     |
[INFO] [stdout] 654 |         from,
[INFO] [stdout]     |         ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arrows`
[INFO] [stdout]    --> src/frame_server/mod.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 261 |     arrows: &mut Vec<Arrow>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_arrows`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/client/heightmap_editor.rs:336:13
[INFO] [stdout]     |
[INFO] [stdout] 336 |         let mut buf_w = BufWriter::new(file);
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `encoder`
[INFO] [stdout]    --> src/client/misc.rs:127:63
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn upload_to_gpu(&mut self, view_proj: &Matrix4<f32>, encoder: &mut wgpu::CommandEncoder) {
[INFO] [stdout]     |                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/frame_server/mod.rs:650:9
[INFO] [stdout]     |
[INFO] [stdout] 650 |     let mut resources_surplus = FnvHashMap::<Id<Player>, ResourceSurplus>::default();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/client/play.rs:70:21
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 let mut moddef = crate::moddef::ModDef {
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta_sim_sec`
[INFO] [stdout]    --> src/client/play.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |         delta_sim_sec: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_delta_sim_sec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `encoder`
[INFO] [stdout]    --> src/client/play.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |         encoder: &mut wgpu::CommandEncoder,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/client/render.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |                 _ => {
[INFO] [stdout]    |                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:54:21
[INFO] [stdout]    |
[INFO] [stdout] 54 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:78:21
[INFO] [stdout]    |
[INFO] [stdout] 78 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> src/client/render.rs:82:21
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     from,
[INFO] [stdout]    |                     ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `can_be_built`
[INFO] [stdout]    --> src/client/render.rs:405:29
[INFO] [stdout]     |
[INFO] [stdout] 405 |                         let can_be_built: Vec<_> = self
[INFO] [stdout]     |                             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_can_be_built`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> src/client/render.rs:274:42
[INFO] [stdout]     |
[INFO] [stdout] 274 | ...                   .filter(|(n, d)| *n != "frame_time")
[INFO] [stdout]     |                                    ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> src/client/render.rs:298:42
[INFO] [stdout]     |
[INFO] [stdout] 298 | ...                   .filter(|(n, d)| *n != "total")
[INFO] [stdout]     |                                    ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]    --> src/gpu_obj/heightmap_gpu.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |         let start = std::time::Instant::now();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/client/render.rs:142:21
[INFO] [stdout]     |
[INFO] [stdout] 142 |                 let mut generic_gpu = ModelGpu::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/client/render.rs:149:21
[INFO] [stdout]     |
[INFO] [stdout] 149 |                 let mut generic_gpu_state_new = unit_part_gpu::ModelGpuState::Ready(generic_gpu);
[INFO] [stdout]     |                     ----^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `update_left` is never read
[INFO] [stdout]    --> src/gpu_obj/heightmap_gpu.rs:774:13
[INFO] [stdout]     |
[INFO] [stdout] 774 |             update_left -= update_to_do;
[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: unused variable: `x`
[INFO] [stdout]   --> src/gpu_obj/heightmap_helper.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn z(x: f32, y: f32) -> f32 {
[INFO] [stdout]    |          ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/gpu_obj/heightmap_helper.rs:33:18
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn z(x: f32, y: f32) -> f32 {
[INFO] [stdout]    |                  ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/gpu_obj/post_fx.rs:144:50
[INFO] [stdout]     |
[INFO] [stdout] 144 |     pub fn render(&self, rpass: &mut RenderPass, device: &Device, main_bind_group: &BindGroup) {
[INFO] [stdout]     |                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/gpu_obj/post_fxaa.rs:151:50
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub fn render(&self, rpass: &mut RenderPass, device: &Device, main_bind_group: &BindGroup) {
[INFO] [stdout]     |                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/gpu_obj/texture_view_bicopy.rs:141:50
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub fn render(&self, rpass: &mut RenderPass, device: &Device, main_bind_group: &BindGroup) {
[INFO] [stdout]     |                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vertex_size`
[INFO] [stdout]    --> src/gpu_obj/water.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let vertex_size = std::mem::size_of::<model::Vertex>();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vertex_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/heightmap_phy.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         for j in 0..height {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/heightmap_phy.rs:36:17
[INFO] [stdout]    |
[INFO] [stdout] 36 |             for i in 0..width {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/manager.rs:89:79
[INFO] [stdout]    |
[INFO] [stdout] 89 | ...                   frame::FrameEventFromPlayer::ReplaceFrame(x) => false,
[INFO] [stdout]    |                                                                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max`
[INFO] [stdout]   --> src/mobile.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let max = other + cone_angle;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_max`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min`
[INFO] [stdout]   --> src/mobile.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let min = other - cone_angle;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_min`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/frame_server/mod.rs:98:21
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     id,
[INFO] [stdout]    |                     ^^ help: try ignoring the field: `id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/frame_server/mod.rs:131:21
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     id,
[INFO] [stdout]     |                     ^^ help: try ignoring the field: `id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to`
[INFO] [stdout]    --> src/frame_server/mod.rs:598:9
[INFO] [stdout]     |
[INFO] [stdout] 598 |         to,
[INFO] [stdout]     |         ^^ help: try ignoring the field: `to: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]    --> src/frame_server/mod.rs:600:9
[INFO] [stdout]     |
[INFO] [stdout] 600 |         from,
[INFO] [stdout]     |         ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `resources_surplus`
[INFO] [stdout]    --> src/frame_server/mod.rs:650:13
[INFO] [stdout]     |
[INFO] [stdout] 650 |     let mut resources_surplus = FnvHashMap::<Id<Player>, ResourceSurplus>::default();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resources_surplus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]    --> src/frame_server/mod.rs:654:9
[INFO] [stdout]     |
[INFO] [stdout] 654 |         from,
[INFO] [stdout]     |         ^^^^ help: try ignoring the field: `from: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arrows`
[INFO] [stdout]    --> src/frame_server/mod.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 261 |     arrows: &mut Vec<Arrow>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_arrows`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/frame_server/mod.rs:650:9
[INFO] [stdout]     |
[INFO] [stdout] 650 |     let mut resources_surplus = FnvHashMap::<Id<Player>, ResourceSurplus>::default();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]    --> src/gpu_obj/heightmap_gpu.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |         let start = std::time::Instant::now();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame_server`
[INFO] [stdout]   --> src/main.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let frame_server =
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `manager`
[INFO] [stdout]   --> src/main.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let manager = manager::Manager::new(
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `update_left` is never read
[INFO] [stdout]    --> src/gpu_obj/heightmap_gpu.rs:774:13
[INFO] [stdout]     |
[INFO] [stdout] 774 |             update_left -= update_to_do;
[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: field `watcher` is never read
[INFO] [stdout]    --> src/client/mod.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 84  | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 134 |     watcher: notify::RecommendedWatcher,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NEAR` is never used
[INFO] [stdout]  --> src/client/camera.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const NEAR: f32 = 1.0;
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `path_get_mut` is never used
[INFO] [stdout]   --> src/client/unit_part_gpu.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl UnitPartGpu {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn path_get_mut(&mut self, path: PathBuf) -> Option<&mut ModelGpuState> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Move`, `Guard`, and `Attack` are never constructed
[INFO] [stdout]   --> src/client/uitool.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub enum UiTool {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] 6  |     None,
[INFO] [stdout] 7  |     Move,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 8  |     Repair,
[INFO] [stdout] 9  |     Guard,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 10 |     Attack,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UiTool` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `energy` is never read
[INFO] [stdout]    --> src/frame_server/mod.rs:616:9
[INFO] [stdout]     |
[INFO] [stdout] 614 |     struct ResourceUsagePropMax {
[INFO] [stdout]     |            -------------------- field in this struct
[INFO] [stdout] 615 |         metal: f64,
[INFO] [stdout] 616 |         energy: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `metal` and `energy` are never read
[INFO] [stdout]    --> src/frame_server/mod.rs:646:9
[INFO] [stdout]     |
[INFO] [stdout] 645 |     struct ResourceSurplus {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 646 |         metal: f64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 647 |         energy: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `noise_texture` is never read
[INFO] [stdout]   --> src/gpu_obj/blit_texture.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub struct BlitTextureGpu {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     noise_texture: Texture,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `str_to_shader_stage` is never used
[INFO] [stdout]   --> src/gpu_obj/glsl_compiler.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn str_to_shader_stage(str: &str) -> ShaderStage {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `z` is never used
[INFO] [stdout]   --> src/gpu_obj/heightmap_helper.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn z(x: f32, y: f32) -> f32 {
[INFO] [stdout]    |        ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_texels` is never used
[INFO] [stdout]   --> src/gpu_obj/heightmap_helper.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn create_texels(width: u32, height: u32, t: f32) -> Vec<f32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_instance` is never used
[INFO] [stdout]    --> src/gpu_obj/model_gpu.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 16  | impl ModelGpu {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn update_instance(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bind_state` is never read
[INFO] [stdout]   --> src/net_client.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct NetClientInfo {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 19 |     bind_state: BindState,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NetClientInfo` 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: constant `ID_CHARS` is never used
[INFO] [stdout]   --> src/utils.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const ID_CHARS: [char; 62] = [
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ID_SIZE` is never used
[INFO] [stdout]   --> src/utils.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const ID_SIZE: usize = 5;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rand_id_unsafe` is never used
[INFO] [stdout]    --> src/utils.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn rand_id_unsafe() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pop_set` is never used
[INFO] [stdout]    --> src/utils.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn pop_set<T: Clone + Eq + std::hash::Hash>(set: &mut HashSet<T>) -> T {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/gpu_obj/heightmap_helper.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn z(x: f32, y: f32) -> f32 {
[INFO] [stdout]    |          ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/gpu_obj/heightmap_helper.rs:33:18
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn z(x: f32, y: f32) -> f32 {
[INFO] [stdout]    |                  ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/client/mod.rs:863:13
[INFO] [stdout]     |
[INFO] [stdout] 863 |             std::mem::replace(to_update, Some(Vector3::new(vec[0], vec[1], vec[2])));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 863 |             let _ = std::mem::replace(to_update, Some(Vector3::new(vec[0], vec[1], vec[2])));
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/client/mod.rs:865:13
[INFO] [stdout]     |
[INFO] [stdout] 865 |             std::mem::replace(to_update, None);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 865 |             let _ = std::mem::replace(to_update, None);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/client/unit_editor.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |         serde_json::to_writer_pretty(buf_w, bot_def);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 237 |         let _ = serde_json::to_writer_pretty(buf_w, bot_def);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/client/unit_editor.rs:270:37
[INFO] [stdout]     |
[INFO] [stdout] 270 |                     for node_mut in unit_editor.botdef.part_tree.find_node_mut(node.id) {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 270 |                     while let Some(node_mut) = unit_editor.botdef.part_tree.find_node_mut(node.id) {
[INFO] [stdout]     |                     ~~~~~~~~~~~~~~~        ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 270 |                     if let Some(node_mut) = unit_editor.botdef.part_tree.find_node_mut(node.id) {
[INFO] [stdout]     |                     ~~~~~~~~~~~~        ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/client/heightmap_editor.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 |         serde_json::to_writer_pretty(buf_w, &heightmap_gpu.phy.data);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 337 |         let _ = serde_json::to_writer_pretty(buf_w, &heightmap_gpu.phy.data);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/client/misc.rs:504:41
[INFO] [stdout]     |
[INFO] [stdout] 504 | ...                   self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 503 |                                     while let Some(target_kbot) = self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                                     ~~~~~~~~~~~~~~~           ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 503 |                                     if let Some(target_kbot) = self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                                     ~~~~~~~~~~~~           ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/client/misc.rs:518:41
[INFO] [stdout]     |
[INFO] [stdout] 518 | ...                   self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 517 |                                     while let Some(target_kbot) = self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                                     ~~~~~~~~~~~~~~~           ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 517 |                                     if let Some(target_kbot) = self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                                     ~~~~~~~~~~~~           ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/client/render.rs:150:17
[INFO] [stdout]     |
[INFO] [stdout] 150 |                 std::mem::replace(generic_gpu_state, generic_gpu_state_new);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 150 |                 let _ = std::mem::replace(generic_gpu_state, generic_gpu_state_new);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/frame_server/mod.rs:120:37
[INFO] [stdout]     |
[INFO] [stdout] 120 |                         for kbot in frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 120 |                         while let Some(kbot) = frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                         ~~~~~~~~~~~~~~~    ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 120 |                         if let Some(kbot) = frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                         ~~~~~~~~~~~~    ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/frame_server/mod.rs:136:37
[INFO] [stdout]     |
[INFO] [stdout] 136 |                         for kbot in frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 136 |                         while let Some(kbot) = frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                         ~~~~~~~~~~~~~~~    ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 136 |                         if let Some(kbot) = frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                         ~~~~~~~~~~~~    ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/frame_server/mod.rs:275:9
[INFO] [stdout]     |
[INFO] [stdout] 275 |         std::mem::replace(grid, vec![Vec::<Id<KBot>>::new(); grid_w * grid_h]);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 275 |         let _ = std::mem::replace(grid, vec![Vec::<Id<KBot>>::new(); grid_w * grid_h]);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/frame_server/mod.rs:319:13
[INFO] [stdout]     |
[INFO] [stdout] 319 |             std::mem::replace(small_grid, vec![Vec::<Id<KBot>>::new(); grid_w * grid_h]);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 319 |             let _ = std::mem::replace(small_grid, vec![Vec::<Id<KBot>>::new(); grid_w * grid_h]);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/arrow_gpu.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 194 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/blit_texture.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 235 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/explosion.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 353 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/health_bar.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/line.rs:131:9
[INFO] [stdout]     |
[INFO] [stdout] 131 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/model_gpu.rs:195:9
[INFO] [stdout]     |
[INFO] [stdout] 195 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/model_gpu.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 205 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/unit_icon.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]   --> src/unit.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         std::mem::replace(self, next);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let _ = std::mem::replace(self, next);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/gpu_obj/post_fx.rs:144:50
[INFO] [stdout]     |
[INFO] [stdout] 144 |     pub fn render(&self, rpass: &mut RenderPass, device: &Device, main_bind_group: &BindGroup) {
[INFO] [stdout]     |                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/gpu_obj/post_fxaa.rs:151:50
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub fn render(&self, rpass: &mut RenderPass, device: &Device, main_bind_group: &BindGroup) {
[INFO] [stdout]     |                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/gpu_obj/texture_view_bicopy.rs:141:50
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub fn render(&self, rpass: &mut RenderPass, device: &Device, main_bind_group: &BindGroup) {
[INFO] [stdout]     |                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vertex_size`
[INFO] [stdout]    --> src/gpu_obj/water.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let vertex_size = std::mem::size_of::<model::Vertex>();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vertex_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 158 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/heightmap_phy.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         for j in 0..height {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/heightmap_phy.rs:36:17
[INFO] [stdout]    |
[INFO] [stdout] 36 |             for i in 0..width {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/manager.rs:89:79
[INFO] [stdout]    |
[INFO] [stdout] 89 | ...                   frame::FrameEventFromPlayer::ReplaceFrame(x) => false,
[INFO] [stdout]    |                                                                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max`
[INFO] [stdout]   --> src/mobile.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let max = other + cone_angle;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_max`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min`
[INFO] [stdout]   --> src/mobile.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let min = other - cone_angle;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_min`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame_server`
[INFO] [stdout]   --> src/main.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let frame_server =
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `manager`
[INFO] [stdout]   --> src/main.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let manager = manager::Manager::new(
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `watcher` is never read
[INFO] [stdout]    --> src/client/mod.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 84  | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 134 |     watcher: notify::RecommendedWatcher,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NEAR` is never used
[INFO] [stdout]  --> src/client/camera.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const NEAR: f32 = 1.0;
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `path_get_mut` is never used
[INFO] [stdout]   --> src/client/unit_part_gpu.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl UnitPartGpu {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn path_get_mut(&mut self, path: PathBuf) -> Option<&mut ModelGpuState> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Move`, `Guard`, and `Attack` are never constructed
[INFO] [stdout]   --> src/client/uitool.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub enum UiTool {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] 6  |     None,
[INFO] [stdout] 7  |     Move,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 8  |     Repair,
[INFO] [stdout] 9  |     Guard,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 10 |     Attack,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UiTool` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `energy` is never read
[INFO] [stdout]    --> src/frame_server/mod.rs:616:9
[INFO] [stdout]     |
[INFO] [stdout] 614 |     struct ResourceUsagePropMax {
[INFO] [stdout]     |            -------------------- field in this struct
[INFO] [stdout] 615 |         metal: f64,
[INFO] [stdout] 616 |         energy: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `metal` and `energy` are never read
[INFO] [stdout]    --> src/frame_server/mod.rs:646:9
[INFO] [stdout]     |
[INFO] [stdout] 645 |     struct ResourceSurplus {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 646 |         metal: f64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 647 |         energy: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `noise_texture` is never read
[INFO] [stdout]   --> src/gpu_obj/blit_texture.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub struct BlitTextureGpu {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     noise_texture: Texture,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `str_to_shader_stage` is never used
[INFO] [stdout]   --> src/gpu_obj/glsl_compiler.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn str_to_shader_stage(str: &str) -> ShaderStage {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `z` is never used
[INFO] [stdout]   --> src/gpu_obj/heightmap_helper.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn z(x: f32, y: f32) -> f32 {
[INFO] [stdout]    |        ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_texels` is never used
[INFO] [stdout]   --> src/gpu_obj/heightmap_helper.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn create_texels(width: u32, height: u32, t: f32) -> Vec<f32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_instance` is never used
[INFO] [stdout]    --> src/gpu_obj/model_gpu.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 16  | impl ModelGpu {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn update_instance(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bind_state` is never read
[INFO] [stdout]   --> src/net_client.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct NetClientInfo {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 19 |     bind_state: BindState,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NetClientInfo` 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: constant `ID_CHARS` is never used
[INFO] [stdout]   --> src/utils.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const ID_CHARS: [char; 62] = [
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ID_SIZE` is never used
[INFO] [stdout]   --> src/utils.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const ID_SIZE: usize = 5;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rand_id_unsafe` is never used
[INFO] [stdout]    --> src/utils.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn rand_id_unsafe() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pop_set` is never used
[INFO] [stdout]    --> src/utils.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn pop_set<T: Clone + Eq + std::hash::Hash>(set: &mut HashSet<T>) -> T {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/client/mod.rs:863:13
[INFO] [stdout]     |
[INFO] [stdout] 863 |             std::mem::replace(to_update, Some(Vector3::new(vec[0], vec[1], vec[2])));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 863 |             let _ = std::mem::replace(to_update, Some(Vector3::new(vec[0], vec[1], vec[2])));
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/client/mod.rs:865:13
[INFO] [stdout]     |
[INFO] [stdout] 865 |             std::mem::replace(to_update, None);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 865 |             let _ = std::mem::replace(to_update, None);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/client/unit_editor.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |         serde_json::to_writer_pretty(buf_w, bot_def);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 237 |         let _ = serde_json::to_writer_pretty(buf_w, bot_def);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/client/unit_editor.rs:270:37
[INFO] [stdout]     |
[INFO] [stdout] 270 |                     for node_mut in unit_editor.botdef.part_tree.find_node_mut(node.id) {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 270 |                     while let Some(node_mut) = unit_editor.botdef.part_tree.find_node_mut(node.id) {
[INFO] [stdout]     |                     ~~~~~~~~~~~~~~~        ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 270 |                     if let Some(node_mut) = unit_editor.botdef.part_tree.find_node_mut(node.id) {
[INFO] [stdout]     |                     ~~~~~~~~~~~~        ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/client/heightmap_editor.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 |         serde_json::to_writer_pretty(buf_w, &heightmap_gpu.phy.data);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 337 |         let _ = serde_json::to_writer_pretty(buf_w, &heightmap_gpu.phy.data);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/client/misc.rs:504:41
[INFO] [stdout]     |
[INFO] [stdout] 504 | ...                   self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 503 |                                     while let Some(target_kbot) = self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                                     ~~~~~~~~~~~~~~~           ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 503 |                                     if let Some(target_kbot) = self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                                     ~~~~~~~~~~~~           ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/client/misc.rs:518:41
[INFO] [stdout]     |
[INFO] [stdout] 518 | ...                   self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 517 |                                     while let Some(target_kbot) = self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                                     ~~~~~~~~~~~~~~~           ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 517 |                                     if let Some(target_kbot) = self.game_state.frame_zero.kbots.get(&id_builded)
[INFO] [stdout]     |                                     ~~~~~~~~~~~~           ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/client/render.rs:150:17
[INFO] [stdout]     |
[INFO] [stdout] 150 |                 std::mem::replace(generic_gpu_state, generic_gpu_state_new);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 150 |                 let _ = std::mem::replace(generic_gpu_state, generic_gpu_state_new);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/frame_server/mod.rs:120:37
[INFO] [stdout]     |
[INFO] [stdout] 120 |                         for kbot in frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 120 |                         while let Some(kbot) = frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                         ~~~~~~~~~~~~~~~    ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 120 |                         if let Some(kbot) = frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                         ~~~~~~~~~~~~    ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/frame_server/mod.rs:136:37
[INFO] [stdout]     |
[INFO] [stdout] 136 |                         for kbot in frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 136 |                         while let Some(kbot) = frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                         ~~~~~~~~~~~~~~~    ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 136 |                         if let Some(kbot) = frame.kbots.get_mut(selected_raw_id) {
[INFO] [stdout]     |                         ~~~~~~~~~~~~    ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/frame_server/mod.rs:275:9
[INFO] [stdout]     |
[INFO] [stdout] 275 |         std::mem::replace(grid, vec![Vec::<Id<KBot>>::new(); grid_w * grid_h]);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 275 |         let _ = std::mem::replace(grid, vec![Vec::<Id<KBot>>::new(); grid_w * grid_h]);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/frame_server/mod.rs:319:13
[INFO] [stdout]     |
[INFO] [stdout] 319 |             std::mem::replace(small_grid, vec![Vec::<Id<KBot>>::new(); grid_w * grid_h]);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 319 |             let _ = std::mem::replace(small_grid, vec![Vec::<Id<KBot>>::new(); grid_w * grid_h]);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/arrow_gpu.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 194 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/blit_texture.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 235 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/explosion.rs:353:9
[INFO] [stdout]     |
[INFO] [stdout] 353 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 353 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/health_bar.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/line.rs:131:9
[INFO] [stdout]     |
[INFO] [stdout] 131 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/model_gpu.rs:195:9
[INFO] [stdout]     |
[INFO] [stdout] 195 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/model_gpu.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 205 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/gpu_obj/unit_icon.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |         std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let _ = std::mem::replace(&mut self.instance_buf, temp_buf);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]   --> src/unit.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         std::mem::replace(self, next);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let _ = std::mem::replace(self, next);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 158 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 1m 31s
[INFO] running `Command { std: "docker" "inspect" "0f1ddacafffa83ab23c2f91644394be9f0b06a131c0dea15b74db322abb22b98", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0f1ddacafffa83ab23c2f91644394be9f0b06a131c0dea15b74db322abb22b98", kill_on_drop: false }`
[INFO] [stdout] 0f1ddacafffa83ab23c2f91644394be9f0b06a131c0dea15b74db322abb22b98
