[INFO] cloning repository https://github.com/ThePJB/raw
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ThePJB/raw" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThePJB%2Fraw", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThePJB%2Fraw'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 6db97a13f196260a67644cfc59200e6c91292a99
[INFO] testing ThePJB/raw against try#db823df02fd0c2cf67b43025ac3fef3f2d743245 for pr-150681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThePJB%2Fraw" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ThePJB/raw
[INFO] finished tweaking git repo https://github.com/ThePJB/raw
[INFO] tweaked toml for git repo https://github.com/ThePJB/raw written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ThePJB/raw on toolchain db823df02fd0c2cf67b43025ac3fef3f2d743245
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ThePJB/raw 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" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b9d041902139396f030d6304dbd697a54dd5004fdc6bae34d116dc55a6d8dd6e
[INFO] running `Command { std: "docker" "start" "-a" "b9d041902139396f030d6304dbd697a54dd5004fdc6bae34d116dc55a6d8dd6e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b9d041902139396f030d6304dbd697a54dd5004fdc6bae34d116dc55a6d8dd6e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b9d041902139396f030d6304dbd697a54dd5004fdc6bae34d116dc55a6d8dd6e", kill_on_drop: false }`
[INFO] [stdout] b9d041902139396f030d6304dbd697a54dd5004fdc6bae34d116dc55a6d8dd6e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 58fa2562693cb99bfaee1fb4015a4f4eda9d63f7f4abb0066d67f685c4bc9409
[INFO] running `Command { std: "docker" "start" "-a" "58fa2562693cb99bfaee1fb4015a4f4eda9d63f7f4abb0066d67f685c4bc9409", kill_on_drop: false }`
[INFO] [stderr]    Compiling log v0.4.21
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]    Compiling proc-macro2 v1.0.85
[INFO] [stderr]    Compiling once_cell v1.19.0
[INFO] [stderr]    Compiling xml-rs v0.8.20
[INFO] [stderr]    Compiling libloading v0.8.3
[INFO] [stderr]    Compiling smallvec v1.13.2
[INFO] [stderr]    Compiling bitflags v2.5.0
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]    Compiling linux-raw-sys v0.4.14
[INFO] [stderr]    Compiling wayland-sys v0.31.2
[INFO] [stderr]    Compiling cc v1.0.99
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling wayland-client v0.31.3
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling xcursor v0.3.5
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling thiserror v1.0.61
[INFO] [stderr]    Compiling tracing-core v0.1.32
[INFO] [stderr]    Compiling dlib v0.5.2
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling ttf-parser v0.21.1
[INFO] [stderr]    Compiling smithay-client-toolkit v0.18.1
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]    Compiling bytemuck v1.16.0
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]    Compiling smithay-client-toolkit v0.15.4
[INFO] [stderr]    Compiling tiny-skia-path v0.11.4
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling quick-xml v0.31.0
[INFO] [stderr]    Compiling glutin v0.31.3
[INFO] [stderr]    Compiling winit v0.29.15
[INFO] [stderr]    Compiling tracing v0.1.40
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling winit v0.26.1
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]    Compiling cty v0.2.2
[INFO] [stderr]    Compiling raw-window-handle v0.5.2
[INFO] [stderr]    Compiling miniz_oxide v0.7.3
[INFO] [stderr]    Compiling raw-window-handle v0.4.3
[INFO] [stderr]    Compiling xkbcommon-dl v0.4.2
[INFO] [stderr]    Compiling glutin-winit v0.4.2
[INFO] [stderr]    Compiling fdeflate v0.3.4
[INFO] [stderr]    Compiling libloading v0.7.4
[INFO] [stderr]    Compiling cache-padded v1.3.0
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]    Compiling syn v2.0.66
[INFO] [stderr]    Compiling byteorder v0.5.3
[INFO] [stderr]    Compiling flate2 v1.0.30
[INFO] [stderr]    Compiling riff-wave v0.1.3
[INFO] [stderr]    Compiling wayland-scanner v0.31.2
[INFO] [stderr]    Compiling ringbuf v0.2.8
[INFO] [stderr]    Compiling glow v0.13.1
[INFO] [stderr]    Compiling tiny-skia v0.11.4
[INFO] [stderr]    Compiling nix v0.24.3
[INFO] [stderr]    Compiling glutin_glx_sys v0.5.0
[INFO] [stderr]    Compiling wayland-backend v0.3.4
[INFO] [stderr]    Compiling glutin_egl_sys v0.6.0
[INFO] [stderr]    Compiling nix v0.22.3
[INFO] [stderr]    Compiling memmap2 v0.9.4
[INFO] [stderr]    Compiling glutin_glx_sys v0.1.8
[INFO] [stderr]    Compiling glutin_egl_sys v0.1.6
[INFO] [stderr]    Compiling getrandom v0.2.15
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]    Compiling memmap2 v0.3.1
[INFO] [stderr]    Compiling owned_ttf_parser v0.21.0
[INFO] [stderr]    Compiling ab_glyph v0.2.26
[INFO] [stderr]    Compiling parking_lot v0.11.2
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling shared_library v0.1.9
[INFO] [stderr]    Compiling alsa v0.9.0
[INFO] [stderr]    Compiling osmesa-sys v0.1.2
[INFO] [stderr]    Compiling png v0.17.13
[INFO] [stderr]    Compiling wayland-commons v0.29.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.61
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling wayland-cursor v0.29.5
[INFO] [stderr]    Compiling wayland-egl v0.29.5
[INFO] [stderr]    Compiling calloop v0.9.3
[INFO] [stderr]    Compiling polling v3.7.2
[INFO] [stderr]    Compiling x11rb v0.13.1
[INFO] [stderr]    Compiling calloop v0.12.4
[INFO] [stderr]    Compiling wayland-csd-frame v0.3.0
[INFO] [stderr]    Compiling wayland-protocols v0.31.2
[INFO] [stderr]    Compiling calloop-wayland-source v0.2.0
[INFO] [stderr]    Compiling wayland-cursor v0.31.3
[INFO] [stderr]    Compiling wayland-protocols-wlr v0.2.0
[INFO] [stderr]    Compiling wayland-protocols-plasma v0.2.0
[INFO] [stderr]    Compiling sctk-adwaita v0.8.1
[INFO] [stderr]    Compiling glutin v0.28.0
[INFO] [stderr]    Compiling raw v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `reverb::*`
[INFO] [stdout]  --> src/inst2.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use reverb::*;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signal::*`
[INFO] [stdout]   --> src/util/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use signal::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signal::*`
[INFO] [stdout]   --> src/util/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use signal::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iter::once`
[INFO] [stdout]  --> src/wg2.rs:3:48
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::{collections::VecDeque, iter::repeat, iter::once, iter::repeat_with};
[INFO] [stdout]   |                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sc`
[INFO] [stdout]    --> src/inst2.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |     let sc = SoundContext::new(None, vec![]);
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_sc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rng` is never read
[INFO] [stdout]   --> src/inst2.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Instrument {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     rng: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `squash` is never used
[INFO] [stdout]  --> src/reverb.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn squash(z: Vec2) -> Vec2 {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Reverb` is never constructed
[INFO] [stdout]  --> src/reverb.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Reverb {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `tick` are never used
[INFO] [stdout]   --> src/reverb.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Reverb {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new(w: Vec2) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn tick(&mut self, z: Vec2, harm: f32) -> Vec2 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReverbChain` is never constructed
[INFO] [stdout]   --> src/reverb.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ReverbChain {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `tick` are never used
[INFO] [stdout]   --> src/reverb.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl ReverbChain {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 39 |     pub fn new(w: Vec<Vec2>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn tick(&mut self, mut z: Vec2, harm: f32) -> Vec2 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_bytes`, `get`, `set_square`, `circle`, and `save` are never used
[INFO] [stdout]    --> src/util/image.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_traverse` is never used
[INFO] [stdout]  --> src/util/file_utils.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn dir_traverse(path: &Path, f: &mut impl FnMut(&Path)) -> Result<(), std::io::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsBytes` is never used
[INFO] [stdout]  --> src/util/texture.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub trait AsBytes {
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Texture` is never constructed
[INFO] [stdout]   --> src/util/texture.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Texture<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill`, `sample`, `sample_checked`, and `save` are never used
[INFO] [stdout]   --> src/util/texture.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl<T: Clone + Default> Texture<T> {
[INFO] [stdout]    | ----------------------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(wh: IVec2, initial: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn fill(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn sample(&self, coord: IVec2) -> T {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sample_checked(&self, coord: IVec2) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn save(&self, path: &std::path::Path, f: impl Fn(T)->[u8;4]) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> src/util/texture.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Draw {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dist_fn` is never used
[INFO] [stdout]  --> src/util/distance_field_generation.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn dist_fn(p1: IVec2, p2: IVec2) -> f32 {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spread` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn spread(distance: &mut Texture<f32>, nearest: &mut Texture<IVec2>, p1: IVec2, p2: IVec2) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdf1` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn sdf1(in_stencil: Texture<bool>) -> Texture<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `normalize` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Texture<f32> {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 74 |     pub fn normalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn load_wav(path: &str) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn write_wav(outfile: &str, sample_rate: u32, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `music` is never read
[INFO] [stdout]   --> src/util/sound_context.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub music: bool, // currently ignored
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n` is never read
[INFO] [stdout]   --> src/util/sound_context.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     n: i64,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prod` and `stream` are never read
[INFO] [stdout]    --> src/util/sound_context.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 125 |     prod: Producer<PlayCommand>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 126 |     prod_samp: Producer<f32>,
[INFO] [stdout] 127 |     stream: cpal::Stream,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `play` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `xy` and `wh` are never read
[INFO] [stdout]    --> src/util/render_context.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 130 |     pub xy: IVec2,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 131 |     pub wh: IVec2,
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpriteHandle` 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: multiple fields are never read
[INFO] [stdout]    --> src/util/render_context.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 171 |     pub gl: GLContext,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 172 |     pub program_albedo: NativeProgram,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 173 |     pub vao: VertexArray,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 174 |     pub vbo: Buffer,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 175 |     pub ebo: Buffer,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 176 |     pub texture: GPUTexture,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 177 |     pub resource_handles: HashMap<String, SpriteHandle>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `frame` and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:274:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `scroll` is never read
[INFO] [stdout]   --> src/util/context.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub scroll: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Input` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/wg3.rs:50:28
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn tick(&mut self, mut z: Vec2) -> Vec2 {
[INFO] [stdout]    |                            ----^
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/wg3.rs:61:38
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn tick_nonlinear(&mut self, mut z: Vec2) -> Vec2 {
[INFO] [stdout]    |                                      ----^
[INFO] [stdout]    |                                      |
[INFO] [stdout]    |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wt` is never read
[INFO] [stdout]   --> src/wg3.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Reverb {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     wt: Vec2,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ivec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const fn ivec2(x: i32, y: i32) -> IVec2 {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_traverse` is never used
[INFO] [stdout]  --> src/util/file_utils.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn dir_traverse(path: &Path, f: &mut impl FnMut(&Path)) -> Result<(), std::io::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsBytes` is never used
[INFO] [stdout]  --> src/util/texture.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub trait AsBytes {
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Texture` is never constructed
[INFO] [stdout]   --> src/util/texture.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Texture<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill`, `sample`, `sample_checked`, and `save` are never used
[INFO] [stdout]   --> src/util/texture.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl<T: Clone + Default> Texture<T> {
[INFO] [stdout]    | ----------------------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(wh: IVec2, initial: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn fill(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn sample(&self, coord: IVec2) -> T {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sample_checked(&self, coord: IVec2) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn save(&self, path: &std::path::Path, f: impl Fn(T)->[u8;4]) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> src/util/texture.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Draw {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dist_fn` is never used
[INFO] [stdout]  --> src/util/distance_field_generation.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn dist_fn(p1: IVec2, p2: IVec2) -> f32 {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spread` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn spread(distance: &mut Texture<f32>, nearest: &mut Texture<IVec2>, p1: IVec2, p2: IVec2) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdf1` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn sdf1(in_stencil: Texture<bool>) -> Texture<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `normalize` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Texture<f32> {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 74 |     pub fn normalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn load_wav(path: &str) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/signal_chain.rs:73:13
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut z = z.cadd_pol(prev);
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ivec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const fn ivec2(x: i32, y: i32) -> IVec2 {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_traverse` is never used
[INFO] [stdout]  --> src/util/file_utils.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn dir_traverse(path: &Path, f: &mut impl FnMut(&Path)) -> Result<(), std::io::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsBytes` is never used
[INFO] [stdout]  --> src/util/texture.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub trait AsBytes {
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Texture` is never constructed
[INFO] [stdout]   --> src/util/texture.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Texture<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill`, `sample`, `sample_checked`, and `save` are never used
[INFO] [stdout]   --> src/util/texture.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl<T: Clone + Default> Texture<T> {
[INFO] [stdout]    | ----------------------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(wh: IVec2, initial: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn fill(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn sample(&self, coord: IVec2) -> T {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sample_checked(&self, coord: IVec2) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn save(&self, path: &std::path::Path, f: impl Fn(T)->[u8;4]) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> src/util/texture.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Draw {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dist_fn` is never used
[INFO] [stdout]  --> src/util/distance_field_generation.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn dist_fn(p1: IVec2, p2: IVec2) -> f32 {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spread` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn spread(distance: &mut Texture<f32>, nearest: &mut Texture<IVec2>, p1: IVec2, p2: IVec2) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdf1` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn sdf1(in_stencil: Texture<bool>) -> Texture<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `normalize` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Texture<f32> {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 74 |     pub fn normalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn load_wav(path: &str) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parallel` is never constructed
[INFO] [stdout]   --> src/signal_chain.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Parallel {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/signal_chain.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl Parallel {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 40 |     pub fn new(elems: Vec<Box<dyn SignalChain>>) -> Box<dyn SignalChain> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Feedback` is never constructed
[INFO] [stdout]   --> src/signal_chain.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct Feedback {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/signal_chain.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl Feedback {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 56 |     pub fn new(elem: Box<dyn SignalChain>, w: Vec2) -> Box<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `xc`
[INFO] [stdout]    --> src/main.rs:145:58
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn series_exp_xc(file_name: &str, coeffs: Vec<Vec2>, xc: f32) {
[INFO] [stdout]     |                                                          ^^ help: if this is intentional, prefix it with an underscore: `_xc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ivec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const fn ivec2(x: i32, y: i32) -> IVec2 {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_traverse` is never used
[INFO] [stdout]  --> src/util/file_utils.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn dir_traverse(path: &Path, f: &mut impl FnMut(&Path)) -> Result<(), std::io::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsBytes` is never used
[INFO] [stdout]  --> src/util/texture.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub trait AsBytes {
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Texture` is never constructed
[INFO] [stdout]   --> src/util/texture.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Texture<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill`, `sample`, `sample_checked`, and `save` are never used
[INFO] [stdout]   --> src/util/texture.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl<T: Clone + Default> Texture<T> {
[INFO] [stdout]    | ----------------------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(wh: IVec2, initial: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn fill(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn sample(&self, coord: IVec2) -> T {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sample_checked(&self, coord: IVec2) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn save(&self, path: &std::path::Path, f: impl Fn(T)->[u8;4]) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> src/util/texture.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Draw {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dist_fn` is never used
[INFO] [stdout]  --> src/util/distance_field_generation.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn dist_fn(p1: IVec2, p2: IVec2) -> f32 {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spread` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn spread(distance: &mut Texture<f32>, nearest: &mut Texture<IVec2>, p1: IVec2, p2: IVec2) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdf1` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn sdf1(in_stencil: Texture<bool>) -> Texture<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `normalize` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Texture<f32> {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 74 |     pub fn normalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn load_wav(path: &str) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ivec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const fn ivec2(x: i32, y: i32) -> IVec2 {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_traverse` is never used
[INFO] [stdout]  --> src/util/file_utils.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn dir_traverse(path: &Path, f: &mut impl FnMut(&Path)) -> Result<(), std::io::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsBytes` is never used
[INFO] [stdout]  --> src/util/texture.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub trait AsBytes {
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Texture` is never constructed
[INFO] [stdout]   --> src/util/texture.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Texture<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill`, `sample`, `sample_checked`, and `save` are never used
[INFO] [stdout]   --> src/util/texture.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl<T: Clone + Default> Texture<T> {
[INFO] [stdout]    | ----------------------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(wh: IVec2, initial: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn fill(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn sample(&self, coord: IVec2) -> T {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sample_checked(&self, coord: IVec2) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn save(&self, path: &std::path::Path, f: impl Fn(T)->[u8;4]) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> src/util/texture.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Draw {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dist_fn` is never used
[INFO] [stdout]  --> src/util/distance_field_generation.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn dist_fn(p1: IVec2, p2: IVec2) -> f32 {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spread` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn spread(distance: &mut Texture<f32>, nearest: &mut Texture<IVec2>, p1: IVec2, p2: IVec2) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdf1` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn sdf1(in_stencil: Texture<bool>) -> Texture<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `normalize` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Texture<f32> {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 74 |     pub fn normalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn load_wav(path: &str) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fm.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let mut x = 1.0;
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ivec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const fn ivec2(x: i32, y: i32) -> IVec2 {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_traverse` is never used
[INFO] [stdout]  --> src/util/file_utils.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn dir_traverse(path: &Path, f: &mut impl FnMut(&Path)) -> Result<(), std::io::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsBytes` is never used
[INFO] [stdout]  --> src/util/texture.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub trait AsBytes {
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Texture` is never constructed
[INFO] [stdout]   --> src/util/texture.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Texture<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill`, `sample`, `sample_checked`, and `save` are never used
[INFO] [stdout]   --> src/util/texture.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl<T: Clone + Default> Texture<T> {
[INFO] [stdout]    | ----------------------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(wh: IVec2, initial: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn fill(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn sample(&self, coord: IVec2) -> T {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sample_checked(&self, coord: IVec2) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn save(&self, path: &std::path::Path, f: impl Fn(T)->[u8;4]) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> src/util/texture.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Draw {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dist_fn` is never used
[INFO] [stdout]  --> src/util/distance_field_generation.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn dist_fn(p1: IVec2, p2: IVec2) -> f32 {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spread` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn spread(distance: &mut Texture<f32>, nearest: &mut Texture<IVec2>, p1: IVec2, p2: IVec2) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdf1` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn sdf1(in_stencil: Texture<bool>) -> Texture<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `normalize` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Texture<f32> {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 74 |     pub fn normalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn load_wav(path: &str) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/wg2.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(damping: f32, c: f32, f: f32) -> Self {
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ivec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const fn ivec2(x: i32, y: i32) -> IVec2 {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_traverse` is never used
[INFO] [stdout]  --> src/util/file_utils.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn dir_traverse(path: &Path, f: &mut impl FnMut(&Path)) -> Result<(), std::io::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsBytes` is never used
[INFO] [stdout]  --> src/util/texture.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub trait AsBytes {
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Texture` is never constructed
[INFO] [stdout]   --> src/util/texture.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Texture<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill`, `sample`, `sample_checked`, and `save` are never used
[INFO] [stdout]   --> src/util/texture.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl<T: Clone + Default> Texture<T> {
[INFO] [stdout]    | ----------------------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(wh: IVec2, initial: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn fill(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn sample(&self, coord: IVec2) -> T {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sample_checked(&self, coord: IVec2) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn save(&self, path: &std::path::Path, f: impl Fn(T)->[u8;4]) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> src/util/texture.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Draw {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dist_fn` is never used
[INFO] [stdout]  --> src/util/distance_field_generation.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn dist_fn(p1: IVec2, p2: IVec2) -> f32 {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spread` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn spread(distance: &mut Texture<f32>, nearest: &mut Texture<IVec2>, p1: IVec2, p2: IVec2) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdf1` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn sdf1(in_stencil: Texture<bool>) -> Texture<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `normalize` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Texture<f32> {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 74 |     pub fn normalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `chance` is never used
[INFO] [stdout]   --> src/util/rng.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub trait KHash {
[INFO] [stdout]    |           ----- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 14 |     fn chance(&mut self, percent: f32) -> bool {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn load_wav(path: &str) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sc`
[INFO] [stdout]    --> src/inst.rs:139:9
[INFO] [stdout]     |
[INFO] [stdout] 139 |     let sc = SoundContext::new(None, vec![]);
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_sc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rng` is never read
[INFO] [stdout]   --> src/inst.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Instrument {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     rng: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_bytes`, `get`, `set_square`, `circle`, and `save` are never used
[INFO] [stdout]    --> src/util/image.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_traverse` is never used
[INFO] [stdout]  --> src/util/file_utils.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn dir_traverse(path: &Path, f: &mut impl FnMut(&Path)) -> Result<(), std::io::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsBytes` is never used
[INFO] [stdout]  --> src/util/texture.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub trait AsBytes {
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Texture` is never constructed
[INFO] [stdout]   --> src/util/texture.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Texture<T: Clone> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill`, `sample`, `sample_checked`, and `save` are never used
[INFO] [stdout]   --> src/util/texture.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl<T: Clone + Default> Texture<T> {
[INFO] [stdout]    | ----------------------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(wh: IVec2, initial: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn fill(&mut self, value: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn sample(&self, coord: IVec2) -> T {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sample_checked(&self, coord: IVec2) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn save(&self, path: &std::path::Path, f: impl Fn(T)->[u8;4]) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> src/util/texture.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub trait Draw {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dist_fn` is never used
[INFO] [stdout]  --> src/util/distance_field_generation.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn dist_fn(p1: IVec2, p2: IVec2) -> f32 {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spread` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn spread(distance: &mut Texture<f32>, nearest: &mut Texture<IVec2>, p1: IVec2, p2: IVec2) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdf1` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn sdf1(in_stencil: Texture<bool>) -> Texture<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `normalize` is never used
[INFO] [stdout]   --> src/util/distance_field_generation.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Texture<f32> {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 74 |     pub fn normalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn load_wav(path: &str) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn write_wav(outfile: &str, sample_rate: u32, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `music` is never read
[INFO] [stdout]   --> src/util/sound_context.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub music: bool, // currently ignored
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n` is never read
[INFO] [stdout]   --> src/util/sound_context.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     n: i64,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prod` and `stream` are never read
[INFO] [stdout]    --> src/util/sound_context.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 125 |     prod: Producer<PlayCommand>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 126 |     prod_samp: Producer<f32>,
[INFO] [stdout] 127 |     stream: cpal::Stream,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `play` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `xy` and `wh` are never read
[INFO] [stdout]    --> src/util/render_context.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 130 |     pub xy: IVec2,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 131 |     pub wh: IVec2,
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpriteHandle` 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: multiple fields are never read
[INFO] [stdout]    --> src/util/render_context.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 171 |     pub gl: GLContext,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 172 |     pub program_albedo: NativeProgram,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 173 |     pub vao: VertexArray,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 174 |     pub vbo: Buffer,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 175 |     pub ebo: Buffer,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 176 |     pub texture: GPUTexture,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 177 |     pub resource_handles: HashMap<String, SpriteHandle>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `frame` and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:274:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `scroll` is never read
[INFO] [stdout]   --> src/util/context.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub scroll: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Input` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 26s
[INFO] running `Command { std: "docker" "inspect" "58fa2562693cb99bfaee1fb4015a4f4eda9d63f7f4abb0066d67f685c4bc9409", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "58fa2562693cb99bfaee1fb4015a4f4eda9d63f7f4abb0066d67f685c4bc9409", kill_on_drop: false }`
[INFO] [stdout] 58fa2562693cb99bfaee1fb4015a4f4eda9d63f7f4abb0066d67f685c4bc9409
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 25f68eea314823cbbd1b49ded3bd80357118202bb98171a8f39678a15cf38d14
[INFO] running `Command { std: "docker" "start" "-a" "25f68eea314823cbbd1b49ded3bd80357118202bb98171a8f39678a15cf38d14", kill_on_drop: false }`
[INFO] [stderr]    Compiling raw v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::repeat`
[INFO] [stdout]   --> src/util/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use std::iter::repeat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iter::once`
[INFO] [stdout]  --> src/wg2.rs:3:48
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::{collections::VecDeque, iter::repeat, iter::once, iter::repeat_with};
[INFO] [stdout]   |                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]   --> src/util/signal.rs:96:10
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let (sample_rate, samples2) = samples2.unwrap();
[INFO] [stdout]    |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]   --> src/util/signal.rs:96:10
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let (sample_rate, samples2) = samples2.unwrap();
[INFO] [stdout]    |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fm.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let mut x = 1.0;
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]   --> src/util/signal.rs:96:10
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let (sample_rate, samples2) = samples2.unwrap();
[INFO] [stdout]    |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/util/file_utils.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let _ = dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[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] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sound_context::*`
[INFO] [stdout]   --> src/util/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use sound_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_context::*`
[INFO] [stdout]   --> src/util/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use render_context::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `context::*`
[INFO] [stdout]   --> src/util/mod.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | mod context;pub use context::*;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reverb::*`
[INFO] [stdout]  --> src/inst2.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use reverb::*;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec2.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec3.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Eq`
[INFO] [stdout]  --> src/util/vec4.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{PartialEq, Eq};
[INFO] [stdout]   |                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `riff_wave::*`
[INFO] [stdout]  --> src/util/sound_context.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use riff_wave::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glutin::Rect`
[INFO] [stdout]  --> src/util/render_context.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use glutin::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `f32::consts::PI`
[INFO] [stdout]  --> src/util/render_context.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{collections::HashMap, f32::consts::PI};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::*`
[INFO] [stdout]  --> src/util/render_context.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::util::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_field_generation::*`
[INFO] [stdout]   --> src/util/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use distance_field_generation::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/util/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use std::f32::consts::PI;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::TAU`
[INFO] [stdout]   --> src/util/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use std::f32::consts::TAU;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]   --> src/util/signal.rs:96:10
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let (sample_rate, samples2) = samples2.unwrap();
[INFO] [stdout]    |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/util/file_utils.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let _ = dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[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] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `xc`
[INFO] [stdout]    --> src/main.rs:145:58
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn series_exp_xc(file_name: &str, coeffs: Vec<Vec2>, xc: f32) {
[INFO] [stdout]     |                                                          ^^ help: if this is intentional, prefix it with an underscore: `_xc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]   --> src/util/signal.rs:96:10
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let (sample_rate, samples2) = samples2.unwrap();
[INFO] [stdout]    |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sc`
[INFO] [stdout]    --> src/inst.rs:139:9
[INFO] [stdout]     |
[INFO] [stdout] 139 |     let sc = SoundContext::new(None, vec![]);
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_sc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rng` is never read
[INFO] [stdout]   --> src/inst.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Instrument {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     rng: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_bytes`, `get`, `set_square`, `circle`, and `save` are never used
[INFO] [stdout]    --> src/util/image.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `music` is never read
[INFO] [stdout]   --> src/util/sound_context.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub music: bool, // currently ignored
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n` is never read
[INFO] [stdout]   --> src/util/sound_context.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     n: i64,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prod` and `stream` are never read
[INFO] [stdout]    --> src/util/sound_context.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 125 |     prod: Producer<PlayCommand>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 126 |     prod_samp: Producer<f32>,
[INFO] [stdout] 127 |     stream: cpal::Stream,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `play` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `xy` and `wh` are never read
[INFO] [stdout]    --> src/util/render_context.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 130 |     pub xy: IVec2,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 131 |     pub wh: IVec2,
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpriteHandle` 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: multiple fields are never read
[INFO] [stdout]    --> src/util/render_context.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 171 |     pub gl: GLContext,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 172 |     pub program_albedo: NativeProgram,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 173 |     pub vao: VertexArray,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 174 |     pub vbo: Buffer,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 175 |     pub ebo: Buffer,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 176 |     pub texture: GPUTexture,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 177 |     pub resource_handles: HashMap<String, SpriteHandle>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `frame` and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:274:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `scroll` is never read
[INFO] [stdout]   --> src/util/context.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub scroll: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Input` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/util/file_utils.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let _ = dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[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] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/util/file_utils.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let _ = dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[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] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> src/util/vec_macros.rs:164:5
[INFO] [stdout]     |
[INFO] [stdout] 164 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> src/util/vec_macros.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     #[macro_export]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]   --> src/util/signal.rs:96:10
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let (sample_rate, samples2) = samples2.unwrap();
[INFO] [stdout]    |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/wg3.rs:50:28
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn tick(&mut self, mut z: Vec2) -> Vec2 {
[INFO] [stdout]    |                            ----^
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/wg3.rs:61:38
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn tick_nonlinear(&mut self, mut z: Vec2) -> Vec2 {
[INFO] [stdout]    |                                      ----^
[INFO] [stdout]    |                                      |
[INFO] [stdout]    |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wt` is never read
[INFO] [stdout]   --> src/wg3.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Reverb {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     wt: Vec2,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_seed` is never used
[INFO] [stdout]  --> src/util/rng.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_seed() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/util/file_utils.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let _ = dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[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] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]   --> src/util/signal.rs:96:10
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let (sample_rate, samples2) = samples2.unwrap();
[INFO] [stdout]    |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sc`
[INFO] [stdout]    --> src/inst2.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |     let sc = SoundContext::new(None, vec![]);
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_sc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rng` is never read
[INFO] [stdout]   --> src/inst2.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Instrument {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     rng: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `squash` is never used
[INFO] [stdout]  --> src/reverb.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn squash(z: Vec2) -> Vec2 {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Reverb` is never constructed
[INFO] [stdout]  --> src/reverb.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Reverb {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `tick` are never used
[INFO] [stdout]   --> src/reverb.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Reverb {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new(w: Vec2) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn tick(&mut self, z: Vec2, harm: f32) -> Vec2 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReverbChain` is never constructed
[INFO] [stdout]   --> src/reverb.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ReverbChain {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `tick` are never used
[INFO] [stdout]   --> src/reverb.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl ReverbChain {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 39 |     pub fn new(w: Vec<Vec2>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn tick(&mut self, mut z: Vec2, harm: f32) -> Vec2 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_bytes`, `get`, `set_square`, `circle`, and `save` are never used
[INFO] [stdout]    --> src/util/image.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `KHash` is never used
[INFO] [stdout]  --> src/util/rng.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait KHash {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Wav` is never used
[INFO] [stdout]   --> src/util/signal.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `music` is never read
[INFO] [stdout]   --> src/util/sound_context.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub music: bool, // currently ignored
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n` is never read
[INFO] [stdout]   --> src/util/sound_context.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     n: i64,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prod` and `stream` are never read
[INFO] [stdout]    --> src/util/sound_context.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 125 |     prod: Producer<PlayCommand>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 126 |     prod_samp: Producer<f32>,
[INFO] [stdout] 127 |     stream: cpal::Stream,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `play` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `xy` and `wh` are never read
[INFO] [stdout]    --> src/util/render_context.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 130 |     pub xy: IVec2,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 131 |     pub wh: IVec2,
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpriteHandle` 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: multiple fields are never read
[INFO] [stdout]    --> src/util/render_context.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 171 |     pub gl: GLContext,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 172 |     pub program_albedo: NativeProgram,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 173 |     pub vao: VertexArray,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 174 |     pub vbo: Buffer,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 175 |     pub ebo: Buffer,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 176 |     pub texture: GPUTexture,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 177 |     pub resource_handles: HashMap<String, SpriteHandle>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `frame` and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:274:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `scroll` is never read
[INFO] [stdout]   --> src/util/context.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub scroll: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Input` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/wg2.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(damping: f32, c: f32, f: f32) -> Self {
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/util/file_utils.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let _ = dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[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] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec4` is never used
[INFO] [stdout]   --> src/util/vec4.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const fn vec4(x: f32, y: f32, z: f32, w: f32) -> Vec4 {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsVec2` is never used
[INFO] [stdout]   --> src/util/ivec2.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait AsVec2 {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExpectWith` is never used
[INFO] [stdout]  --> src/util/option_utils.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ExpectWith<T, E> {
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapMut` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait UnwrapMut<T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UnwrapRef` is never used
[INFO] [stdout]   --> src/util/option_utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub trait UnwrapRef<'a, T> {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenRef` is never constructed
[INFO] [stdout]  --> src/util/gen_ref.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GenRef<T> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `deref`, `deref_mut`, `free`, and `change_arenas` are never used
[INFO] [stdout]   --> src/util/gen_ref.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl<T: Clone> GenRef<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn deref<'a>(&self, arena: &'a GenArena<T>) -> Option<&'a T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn deref_mut<'a>(&self, arena: &'a mut GenArena<T>) -> Option<&'a mut T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free<'a>(&self, arena: &'a mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn change_arenas(&mut self, from: &GenArena<T>, to: &mut GenArena<T>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenBucket` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct GenBucket<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/gen_ref.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> GenBucket<T> {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(item: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenArena` is never constructed
[INFO] [stdout]   --> src/util/gen_ref.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct GenArena<T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/gen_ref.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl<T> GenArena<T> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn borrow<'a>(&'a self, gen_ref: &GenRef<T>) -> Option<&'a T> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn borrow_mut<'a>(&'a mut self, gen_ref: &GenRef<T>) -> Option<&'a mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn borrow_2<'a>(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn borrow_2_mut<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn borrow_many<'a>(&'a self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn borrow_many_mut<'a>(&'a mut self, gen_refs: &'a [GenRef<T>]) -> Option<Vec<&'a mut T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn free(&mut self, gen_ref: &GenRef<T>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn alloc(&mut self, item: T) -> GenRef<T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageBuffer` is never constructed
[INFO] [stdout]  --> src/util/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/image.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ImageBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(wh: IVec2) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn from_bytes(png_bytes: &[u8]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn get(&self, x: usize, y: usize) -> Vec4 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, x: usize, y: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn fill(&mut self, colour: Vec4) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_square(&mut self, x: usize, y: usize, r: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn circle(&mut self, x: usize, y: usize, r: usize, rr: usize, colour: Vec4) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `my_read_dir` is never used
[INFO] [stdout]   --> src/util/file_utils.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn my_read_dir(path: &Path) -> std::io::Result<Vec<MyDirEntry>> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MyDirEntry` is never constructed
[INFO] [stdout]   --> src/util/file_utils.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MyDirEntry {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `chance` is never used
[INFO] [stdout]   --> src/util/rng.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub trait KHash {
[INFO] [stdout]    |           ----- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 14 |     fn chance(&mut self, percent: f32) -> bool {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_interp` is never used
[INFO] [stdout]  --> src/util/signal.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn lanczos_interp(s: &[f32], r: f32, a: usize) -> Vec<f32> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lanczos_kernel` is never used
[INFO] [stdout]   --> src/util/signal.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn lanczos_kernel(x: f32, a: usize) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/util/signal.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Wav {
[INFO] [stdout]    |           --- associated function in this trait
[INFO] [stdout] 42 |     fn load(path: &str) -> (u32, Self);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_wav` is never used
[INFO] [stdout]  --> src/util/sound_context.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn load_wav(path: &Path) -> Option<(u32, Vec<f32>)> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayCommand` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct PlayCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlaybackContext` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct PlaybackContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioThread` is never constructed
[INFO] [stdout]   --> src/util/sound_context.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AudioThread {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fill_samples_buffer`, `tick_mix`, and `mix` are never used
[INFO] [stdout]   --> src/util/sound_context.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AudioThread {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(sounds: Vec<Vec<f32>>, cons: Consumer<PlayCommand>, cons_samp: Consumer<f32>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn tick_mix(&mut self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn mix(&mut self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundContext` is never constructed
[INFO] [stdout]    --> src/util/sound_context.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SoundContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play`, and `send_samples` are never used
[INFO] [stdout]    --> src/util/sound_context.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl SoundContext {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 131 |     pub fn new(device: Option<cpal::Device>, sounds: Vec<Vec<f32>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn play(&mut self, com: PlayCommand) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_samples(&mut self, samples: impl Iterator<Item = f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_folder` is never used
[INFO] [stdout]    --> src/util/sound_context.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn load_folder(path: &Path) -> Vec<Vec<f32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderCommand` is never constructed
[INFO] [stdout]   --> src/util/render_context.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RenderCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_albedo` is never used
[INFO] [stdout]   --> src/util/render_context.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RenderCommand {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 27 |     pub fn draw_albedo(&self, buf: &mut VertexBufCPU, render_context: &RenderContext) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> src/util/render_context.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn render_text(buf: &mut Vec<RenderCommand>, s: String, mut base: RenderCommand) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteHandle` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct SpriteHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATLAS_WH` is never used
[INFO] [stdout]    --> src/util/render_context.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const ATLAS_WH: IVec2 = ivec2(1024, 1024);
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAG_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FRAG_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERT_ALBEDO` is never used
[INFO] [stdout]    --> src/util/render_context.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const VERT_ALBEDO: &str = r#"#version 330 core
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderContext` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct RenderContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `frame`, and `resize` are never used
[INFO] [stdout]    --> src/util/render_context.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl RenderContext {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 182 |     pub fn new(gl: GLContext) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn frame(&mut self, render_list: &Vec<RenderCommand>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn resize(&mut self, wh: IVec2) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub struct Vertex {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VertexBufCPU` is never constructed
[INFO] [stdout]    --> src/util/render_context.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub struct VertexBufCPU {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extend` is never used
[INFO] [stdout]    --> src/util/render_context.rs:328:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl VertexBufCPU {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 328 |     pub fn extend(&mut self, verts: impl Iterator<Item = Vertex>, inds: impl Iterator<Item = u32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_WH` is never used
[INFO] [stdout]   --> src/util/context.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INTERNAL_WH: IVec2 = ivec2(640, 360);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Input` is never constructed
[INFO] [stdout]   --> src/util/context.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Input {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_for_frame` is never used
[INFO] [stdout]   --> src/util/context.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Input {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 32 |     pub fn reset_for_frame(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Context` is never constructed
[INFO] [stdout]   --> src/util/context.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct Context {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `App` is never used
[INFO] [stdout]   --> src/util/context.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait App {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_gl`, and `run` are never used
[INFO] [stdout]   --> src/util/context.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Context {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(name: &'static str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn get_gl(&self) -> glow::Context {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run<T: App + 'static>(mut self, mut t: T) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/util/file_utils.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let _ = dir_traverse(Path::new("data"), &mut |p| println!("{:?}", p));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/util/sound_context.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             self.prod_samp.push(sample);
[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] 173 |             let _ = self.prod_samp.push(sample);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]   --> src/util/signal.rs:96:10
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let (sample_rate, samples2) = samples2.unwrap();
[INFO] [stdout]    |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_channels`
[INFO] [stdout]   --> src/util/sound_context.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let num_channels = wave_reader.pcm_format.num_channels;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_channels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/util/sound_context.rs:73:59
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn fill_samples_buffer(&mut self, buf: &mut[f32], info: &cpal::OutputCallbackInfo) {
[INFO] [stdout]    |                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_rate`
[INFO] [stdout]    --> src/util/sound_context.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let sample_rate = config.sample_rate().0;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/util/render_context.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 275 |         unsafe {
[INFO] [stdout]     |         ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 281 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/signal_chain.rs:73:13
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut z = z.cadd_pol(prev);
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHI` is never used
[INFO] [stdout]   --> src/util/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const PHI: f32 = 1.618033988749894848204;
[INFO] [stdout]    |           ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lerp` is never used
[INFO] [stdout]  --> src/util/lerp.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Lerp {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[WARN] too many lines in the log, truncating it
