[INFO] cloning repository https://github.com/AdrianoCLeao/starman
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AdrianoCLeao/starman" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdrianoCLeao%2Fstarman", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdrianoCLeao%2Fstarman'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7df6e93b7596ec3baad21761cbf6da235a06079f
[INFO] checking AdrianoCLeao/starman against master#36b21637e93b038453924d3c66821089e71d8baa for pr-143164
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdrianoCLeao%2Fstarman" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/AdrianoCLeao/starman
[INFO] finished tweaking git repo https://github.com/AdrianoCLeao/starman
[INFO] tweaked toml for git repo https://github.com/AdrianoCLeao/starman written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/AdrianoCLeao/starman on toolchain 36b21637e93b038453924d3c66821089e71d8baa
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/AdrianoCLeao/starman 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" "+36b21637e93b038453924d3c66821089e71d8baa" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded libloading v0.8.6
[INFO] [stderr]   Downloaded xcursor v0.3.8
[INFO] [stderr]   Downloaded num_enum_derive v0.4.3
[INFO] [stderr]   Downloaded xdg v2.5.2
[INFO] [stderr]   Downloaded num_enum v0.4.3
[INFO] [stderr]   Downloaded nalgebra-macros v0.1.0
[INFO] [stderr]   Downloaded xml-rs v0.8.25
[INFO] [stderr]   Downloaded ab_glyph v0.2.29
[INFO] [stderr]   Downloaded ecolor v0.22.0
[INFO] [stderr]   Downloaded net2 v0.2.39
[INFO] [stderr]   Downloaded atomic_refcell v0.1.13
[INFO] [stderr]   Downloaded emath v0.22.0
[INFO] [stderr]   Downloaded gltf-json v1.4.1
[INFO] [stderr]   Downloaded egui_glow v0.22.0
[INFO] [stderr]   Downloaded zune-jpeg v0.4.14
[INFO] [stderr]   Downloaded gltf v1.4.1
[INFO] [stderr]   Downloaded safe_arch v0.7.4
[INFO] [stderr]   Downloaded wide v0.7.32
[INFO] [stderr]   Downloaded glutin v0.26.0
[INFO] [stderr]   Downloaded glow v0.12.3
[INFO] [stderr]   Downloaded owned_ttf_parser v0.25.0
[INFO] [stderr]   Downloaded ttf-parser v0.25.1
[INFO] [stderr]   Downloaded ncollide3d v0.33.0
[INFO] [stderr]   Downloaded egui v0.22.0
[INFO] [stderr]   Downloaded image v0.25.5
[INFO] [stderr]   Downloaded exr v1.73.0
[INFO] [stderr]   Downloaded winit v0.24.0
[INFO] [stderr]   Downloaded serde_json v1.0.136
[INFO] [stderr]   Downloaded matrixmultiply v0.3.9
[INFO] [stderr]   Downloaded simba v0.7.3
[INFO] [stderr]   Downloaded nalgebra v0.30.1
[INFO] [stderr]   Downloaded cocoa v0.23.0
[INFO] [stderr]   Downloaded gltf-derive v1.4.1
[INFO] [stderr]   Downloaded glutin_egl_sys v0.1.6
[INFO] [stderr]   Downloaded glutin_glx_sys v0.1.8
[INFO] [stderr]   Downloaded mio-extras v2.0.6
[INFO] [stderr]   Downloaded ndk v0.2.1
[INFO] [stderr]   Downloaded inflections v1.1.1
[INFO] [stderr]   Downloaded byteorder-lite v0.1.0
[INFO] [stderr]   Downloaded zune-core v0.4.12
[INFO] [stderr]   Downloaded ndk-glue v0.2.1
[INFO] [stderr]   Downloaded petgraph v0.6.5
[INFO] [stderr]   Downloaded epaint v0.22.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 52b7512af3c7e4c04edb77ea58acdc152324f586758b71190bb9f65cae60ea20
[INFO] running `Command { std: "docker" "start" "-a" "52b7512af3c7e4c04edb77ea58acdc152324f586758b71190bb9f65cae60ea20", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "52b7512af3c7e4c04edb77ea58acdc152324f586758b71190bb9f65cae60ea20", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "52b7512af3c7e4c04edb77ea58acdc152324f586758b71190bb9f65cae60ea20", kill_on_drop: false }`
[INFO] [stdout] 52b7512af3c7e4c04edb77ea58acdc152324f586758b71190bb9f65cae60ea20
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 568440dbfb3204a1145d2c204226c46b4b977ba9b921caf0f872cfdeb9576463
[INFO] running `Command { std: "docker" "start" "-a" "568440dbfb3204a1145d2c204226c46b4b977ba9b921caf0f872cfdeb9576463", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.4.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling libc v0.2.169
[INFO] [stderr]    Compiling xml-rs v0.8.25
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]    Compiling pkg-config v0.3.31
[INFO] [stderr]     Checking once_cell v1.20.2
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]     Checking libloading v0.8.6
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling log v0.4.25
[INFO] [stderr]     Checking adler2 v2.0.0
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking ttf-parser v0.15.2
[INFO] [stderr]    Compiling nix v0.18.0
[INFO] [stderr]     Checking miniz_oxide v0.8.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling maybe-uninit v2.0.0
[INFO] [stderr]     Checking same-file v1.0.6
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling serde v1.0.217
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]     Checking either v1.13.0
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking walkdir v2.5.0
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling memoffset v0.5.6
[INFO] [stderr]     Checking flate2 v1.0.35
[INFO] [stderr]    Compiling wayland-sys v0.28.6
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling matrixmultiply v0.3.9
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.2
[INFO] [stderr]     Checking libloading v0.6.7
[INFO] [stderr]     Checking xdg v2.5.2
[INFO] [stderr]     Checking cty v0.2.2
[INFO] [stderr]     Checking xcursor v0.3.8
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]    Compiling serde_json v1.0.136
[INFO] [stderr]     Checking raw-window-handle v0.4.3
[INFO] [stderr]     Checking dlib v0.4.2
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]    Compiling glutin_egl_sys v0.1.6
[INFO] [stderr]    Compiling glutin_glx_sys v0.1.8
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling syn v2.0.96
[INFO] [stderr]    Compiling wayland-scanner v0.28.6
[INFO] [stderr]     Checking hashbrown v0.15.2
[INFO] [stderr]     Checking equivalent v1.0.1
[INFO] [stderr]     Checking lazycell v1.3.0
[INFO] [stderr]     Checking weezl v0.1.8
[INFO] [stderr]    Compiling inflections v1.1.1
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]     Checking owned_ttf_parser v0.25.0
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking ab_glyph v0.2.29
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking indexmap v2.7.0
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking half v2.4.1
[INFO] [stderr]     Checking owned_ttf_parser v0.15.2
[INFO] [stderr]     Checking zune-jpeg v0.4.14
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking rusttype v0.9.3
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking fixedbitset v0.4.2
[INFO] [stderr]     Checking percent-encoding v2.3.1
[INFO] [stderr]     Checking andrew v0.3.1
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking crossbeam-deque v0.7.4
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking approx v0.3.2
[INFO] [stderr]     Checking ordered-float v1.1.1
[INFO] [stderr]     Checking stb_truetype v0.3.1
[INFO] [stderr]     Checking gif v0.13.1
[INFO] [stderr]     Checking nix v0.20.0
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]     Checking net2 v0.2.39
[INFO] [stderr]     Checking memmap2 v0.1.0
[INFO] [stderr]     Checking parking_lot_core v0.8.6
[INFO] [stderr]     Checking mio v0.6.23
[INFO] [stderr]     Checking raw-window-handle v0.3.4
[INFO] [stderr]     Checking shared_library v0.1.9
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking petgraph v0.6.5
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking osmesa-sys v0.1.2
[INFO] [stderr]    Compiling wayland-client v0.28.6
[INFO] [stderr]    Compiling wayland-protocols v0.28.6
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking glow v0.12.3
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]     Checking base64 v0.13.1
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking rusttype v0.8.3
[INFO] [stderr]     Checking mio-extras v2.0.6
[INFO] [stderr]    Compiling bytemuck_derive v1.8.1
[INFO] [stderr]    Compiling serde_derive v1.0.217
[INFO] [stderr]    Compiling gltf-derive v1.4.1
[INFO] [stderr]     Checking jpeg-decoder v0.3.1
[INFO] [stderr]     Checking wayland-commons v0.28.6
[INFO] [stderr]     Checking calloop v0.6.5
[INFO] [stderr]     Checking bytemuck v1.21.0
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]    Compiling nalgebra-macros v0.1.0
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking emath v0.22.0
[INFO] [stderr]     Checking ecolor v0.22.0
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking image v0.25.5
[INFO] [stderr]     Checking epaint v0.22.0
[INFO] [stderr]     Checking wide v0.7.32
[INFO] [stderr]     Checking wayland-cursor v0.28.6
[INFO] [stderr]     Checking wayland-egl v0.28.6
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking egui v0.22.0
[INFO] [stderr]     Checking gltf-json v1.4.1
[INFO] [stderr]     Checking simba v0.7.3
[INFO] [stderr]     Checking egui_glow v0.22.0
[INFO] [stderr]     Checking gltf v1.4.1
[INFO] [stderr]     Checking nalgebra v0.30.1
[INFO] [stderr]     Checking smithay-client-toolkit v0.12.3
[INFO] [stderr]     Checking winit v0.24.0
[INFO] [stderr]     Checking glutin v0.26.0
[INFO] [stderr]     Checking ncollide3d v0.33.0
[INFO] [stderr]     Checking starman v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Isometry3` and `Point2`
[INFO] [stdout]  --> src/main.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use nalgebra::{Isometry3, Point2, Point3, Translation3, UnitQuaternion, Vector3};
[INFO] [stdout]   |                ^^^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scene::object::Object`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use scene::object::Object;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32`
[INFO] [stdout]  --> src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::f32;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Isometry3` and `Translation3`
[INFO] [stdout]  --> src/window/window.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | use nalgebra::{Isometry3, Point2, Point3, Translation3, Vector2, Vector3};
[INFO] [stdout]   |                ^^^^^^^^^                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IndexBuffer` and `TriMesh`
[INFO] [stdout]   --> src/loader/obj.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 | use ncollide3d::procedural::{IndexBuffer, TriMesh};
[INFO] [stdout]    |                              ^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Zero`
[INFO] [stdout]   --> src/loader/obj.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use num_traits::{Bounded, Zero};
[INFO] [stdout]    |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/loader/obj.rs:21:29
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::resource::mesh::{self, Mesh};
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `vertex_index_u32`
[INFO] [stdout]  --> src/resource/vertex_index.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | #[cfg(not(feature = "vertex_index_u32"))]
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]   |
[INFO] [stdout]   = note: no expected values for `feature`
[INFO] [stdout]   = help: consider adding `vertex_index_u32` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `vertex_index_u32`
[INFO] [stdout]   --> src/resource/vertex_index.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[cfg(feature = "vertex_index_u32")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `vertex_index_u32` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]  --> src/resource/effect.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::mem;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GLintptr`
[INFO] [stdout]   --> src/resource/effect.rs:10:40
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::context::context::{Context, GLintptr, Program, Shader, UniformLocation, VertexArray};
[INFO] [stdout]    |                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::resource::gpu_vector::GPUVec`
[INFO] [stdout]   --> src/resource/effect.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::resource::gpu_vector::GPUVec;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/context/context.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::sidescroll::Sidescroll`
[INFO] [stdout]  --> src/planar_camera/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use self::sidescroll::Sidescroll;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Isometry3` and `Point2`
[INFO] [stdout]  --> src/main.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use nalgebra::{Isometry3, Point2, Point3, Translation3, UnitQuaternion, Vector3};
[INFO] [stdout]   |                ^^^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scene::object::Object`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use scene::object::Object;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32`
[INFO] [stdout]  --> src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::f32;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Isometry3` and `Translation3`
[INFO] [stdout]  --> src/window/window.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | use nalgebra::{Isometry3, Point2, Point3, Translation3, Vector2, Vector3};
[INFO] [stdout]   |                ^^^^^^^^^                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IndexBuffer` and `TriMesh`
[INFO] [stdout]   --> src/loader/obj.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 | use ncollide3d::procedural::{IndexBuffer, TriMesh};
[INFO] [stdout]    |                              ^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Zero`
[INFO] [stdout]   --> src/loader/obj.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use num_traits::{Bounded, Zero};
[INFO] [stdout]    |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/loader/obj.rs:21:29
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::resource::mesh::{self, Mesh};
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `vertex_index_u32`
[INFO] [stdout]  --> src/resource/vertex_index.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | #[cfg(not(feature = "vertex_index_u32"))]
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]   |
[INFO] [stdout]   = note: no expected values for `feature`
[INFO] [stdout]   = help: consider adding `vertex_index_u32` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `vertex_index_u32`
[INFO] [stdout]   --> src/resource/vertex_index.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[cfg(feature = "vertex_index_u32")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `vertex_index_u32` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]  --> src/resource/effect.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::mem;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GLintptr`
[INFO] [stdout]   --> src/resource/effect.rs:10:40
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::context::context::{Context, GLintptr, Program, Shader, UniformLocation, VertexArray};
[INFO] [stdout]    |                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::resource::gpu_vector::GPUVec`
[INFO] [stdout]   --> src/resource/effect.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::resource::gpu_vector::GPUVec;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/context/context.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::sidescroll::Sidescroll`
[INFO] [stdout]  --> src/planar_camera/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use self::sidescroll::Sidescroll;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buffer`
[INFO] [stdout]   --> src/loader/glb.rs:31:44
[INFO] [stdout]    |
[INFO] [stdout] 31 |             let reader = primitive.reader(|buffer| {
[INFO] [stdout]    |                                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/resource/gpu_vector.rs:109:32
[INFO] [stdout]     |
[INFO] [stdout] 109 |             .map(|&(_, ref h)| unsafe { verify!(Context::get().delete_buffer(Some(h))) });
[INFO] [stdout]     |                                ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/resource/gpu_vector.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/resource/gl_primitive.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/resource/gl_primitive.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log`
[INFO] [stdout]    --> src/resource/effect.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |     let log = ctxt.get_shader_info_log(&shader);
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/resource/texture_manager.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/resource/texture_manager.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buffer`
[INFO] [stdout]   --> src/loader/glb.rs:31:44
[INFO] [stdout]    |
[INFO] [stdout] 31 |             let reader = primitive.reader(|buffer| {
[INFO] [stdout]    |                                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/context/context.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/resource/gpu_vector.rs:109:32
[INFO] [stdout]     |
[INFO] [stdout] 109 |             .map(|&(_, ref h)| unsafe { verify!(Context::get().delete_buffer(Some(h))) });
[INFO] [stdout]     |                                ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/resource/gpu_vector.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/resource/gl_primitive.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/resource/gl_primitive.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log`
[INFO] [stdout]    --> src/resource/effect.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |     let log = ctxt.get_shader_info_log(&shader);
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/resource/texture_manager.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/resource/texture_manager.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/context/context.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/scene/scene_node.rs:733:21
[INFO] [stdout]     |
[INFO] [stdout] 733 |                 let mut object = Object::new(
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/builtin/object_material.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/builtin/uvs_material.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/builtin/normals_material.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/builtin/planar_object_material.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/window/window.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout] 79  | impl Window {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 96  |     pub fn size(&self) -> Vector2<u32> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn set_framerate_limit(&mut self, fps: Option<u64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn set_title(&mut self, title: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_icon(&mut self, icon: impl GenericImage<Pixel = impl Pixel<Subpixel = u8>>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn set_cursor_grab(&self, grab: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn set_cursor_position(&self, x: f64, y: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn hide_cursor(&self, hide: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn hide(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn show(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn set_background_color(&mut self, r: f32, g: f32, b: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn set_point_size(&mut self, pt_size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn set_line_width(&mut self, line_width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn draw_planar_line(&mut self, a: &Point2<f32>, b: &Point2<f32>, color: &Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn draw_point(&mut self, pt: &Point3<f32>, color: &Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn draw_text(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn remove(&mut self, sn: &mut SceneNode) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn remove_node(&mut self, sn: &mut SceneNode) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn remove_planar_node(&mut self, sn: &mut PlanarSceneNode) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn add_group(&mut self) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn add_planar_group(&mut self) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn add_mesh(&mut self, mesh: Rc<RefCell<Mesh>>, scale: Vector3<f32>) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn add_planar_mesh(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn add_trimesh(&mut self, descr: TriMesh<f32>, scale: Vector3<f32>) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn add_geom_with_name(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn add_sphere(&mut self, r: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn add_cone(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn add_cylinder(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn add_capsule(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn add_planar_capsule(&mut self, r: f32, h: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn add_quad(&mut self, w: f32, h: f32, usubdivs: usize, vsubdivs: usize) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |     pub fn add_quad_with_vertices(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn add_texture(&mut self, path: &Path, name: &str) -> Rc<Texture> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 316 |     pub fn add_rectangle(&mut self, wx: f32, wy: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn add_circle(&mut self, r: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub fn add_convex_polygon(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn is_closed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 336 |     pub fn scale_factor(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn new_hidden(title: &str) -> Window {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn new_with_size(title: &str, width: u32, height: u32) -> Window {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub fn new_with_setup(title: &str, width: u32, height: u32, setup: CanvasSetup) -> Window {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn scene(&self) -> &SceneNode {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn scene_mut(&mut self) -> &mut SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     pub fn snap(&self, out: &mut Vec<u8>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 437 |     pub fn snap_rect(&self, out: &mut Vec<u8>, x: usize, y: usize, width: usize, height: usize) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 459 |     pub fn snap_image(&self) -> ImageBuffer<Rgb<u8>, Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     pub fn events(&self) -> EventManager {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn get_key(&self, key: Key) -> Action {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |     pub fn cursor_pos(&self) -> Option<(f64, f64)> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn render_loop<S: State>(self, state: S) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 543 |     pub fn render_with_state<S: State>(&mut self, state: &mut S) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 547 |     fn do_render_with_state<S: State>(&mut self, state: &mut S) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     pub fn render_with_effect(&mut self, effect: &mut (dyn PostProcessingEffect)) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub fn render_with_camera(&mut self, camera: &mut (dyn Camera)) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn render_with_cameras(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn render_with_camera_and_effect(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 594 |     pub fn render_with_cameras_and_effect(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_u32` is never used
[INFO] [stdout]   --> src/window/canvas.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl NumSamples {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn from_u32(i: u32) -> Option<NumSamples> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/window/canvas.rs:58:12
[INFO] [stdout]     |
[INFO] [stdout] 44  | impl Canvas {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58  |     pub fn render_loop(data: impl FnMut(f64) -> bool + 'static) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74  |     pub fn cursor_pos(&self) -> Option<(f64, f64)> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82  |     pub fn set_title(&mut self, title: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn set_icon(&mut self, icon: impl GenericImage<Pixel = impl Pixel<Subpixel = u8>>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90  |     pub fn set_cursor_grab(&self, grab: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94  |     pub fn set_cursor_position(&self, x: f64, y: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn hide_cursor(&self, hide: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn show(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_key(&self, key: Key) -> Action {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/window/canvas.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub(crate) trait AbstractCanvas {
[INFO] [stdout]     |                  -------------- associated items in this trait
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn render_loop(data: impl FnMut(f64) -> bool + 'static);
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn cursor_pos(&self) -> Option<(f64, f64)>;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     fn set_title(&mut self, title: &str);
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 148 |     fn set_icon(&mut self, icon: impl GenericImage<Pixel = impl Pixel<Subpixel = u8>>);
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 149 |     fn set_cursor_grab(&self, grab: bool);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 150 |     fn set_cursor_position(&self, x: f64, y: f64);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 151 |     fn hide_cursor(&self, hide: bool);
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 152 |     fn hide(&mut self);
[INFO] [stdout] 153 |     fn show(&mut self);
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn get_key(&self, key: Key) -> Action;
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `State` is never used
[INFO] [stdout]  --> src/window/state.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait State: 'static {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/loader/mtl.rs:150:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl MtlMaterial {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `normals` are never read
[INFO] [stdout]   --> src/loader/glb.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout] 7  | pub struct Mesh {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 8  |     pub name: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 9  |     pub vertices: Vec<Point3<f32>>,
[INFO] [stdout] 10 |     pub normals: Vec<Vector3<f32>>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNSIGNED_INT` is never used
[INFO] [stdout]  --> src/resource/vertex_index.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const UNSIGNED_INT: u32 = 0x1405;   
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_trimesh`, `recompute_normals`, `faces`, `normals`, `coords`, and `uvs` are never used
[INFO] [stdout]    --> src/resource/mesh.rs:88:12
[INFO] [stdout]     |
[INFO] [stdout] 20  | impl Mesh {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88  |     pub fn to_trimesh(&self) -> Option<TriMesh<f32>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn recompute_normals(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn faces(&self) -> &Arc<RwLock<GPUVec<Point3<VertexIndex>>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn normals(&self) -> &Arc<RwLock<GPUVec<Vector3<f32>>>> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn coords(&self) -> &Arc<RwLock<GPUVec<Point3<f32>>>> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn uvs(&self) -> &Arc<RwLock<GPUVec<Point2<f32>>>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_on_ram`, `unload_from_gpu`, and `unload_from_ram` are never used
[INFO] [stdout]    --> src/resource/gpu_vector.rs:61:12
[INFO] [stdout]     |
[INFO] [stdout] 14  | impl<T: GLPrimitive> GPUVec<T> {
[INFO] [stdout]     | ------------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61  |     pub fn is_on_ram(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn unload_from_gpu(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn unload_from_ram(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_owned` is never used
[INFO] [stdout]    --> src/resource/gpu_vector.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl<T: Clone + GLPrimitive> GPUVec<T> {
[INFO] [stdout]     | -------------------------------------- method in this implementation
[INFO] [stdout] 126 |     #[inline]
[INFO] [stdout] 127 |     pub fn to_owned(&self) -> Option<Vec<T>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `flatten` is never used
[INFO] [stdout]   --> src/resource/gl_primitive.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub unsafe trait GLPrimitive: Copy {
[INFO] [stdout]    |                  ----------- associated function in this trait
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn flatten(array: &[Self]) -> &[Self::Element] {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/resource/effect.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Effect {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new(vshader_path: &Path, fshader_path: &Path) -> Option<Effect> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_wrapping_s` and `set_wrapping_t` are never used
[INFO] [stdout]   --> src/resource/texture_manager.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Texture {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_wrapping_s(&mut self, wrapping: TextureWrapping) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn set_wrapping_t(&mut self, wrapping: TextureWrapping) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `get_with_size`, `add_empty`, `add_image`, `add_image_from_memory`, and `set_generate_mipmaps` are never used
[INFO] [stdout]    --> src/resource/texture_manager.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 72  | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn get(&mut self, name: &str) -> Option<Rc<Texture>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn get_with_size(&mut self, name: &str) -> Option<(Rc<Texture>, (u32, u32))> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn add_empty(&mut self, name: &str) -> Rc<Texture> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn add_image(&mut self, image: DynamicImage, name: &str) -> Rc<Texture> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn add_image_from_memory(&mut self, image_data: &[u8], name: &str) -> Rc<Texture> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn set_generate_mipmaps(&mut self, enabled: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove` is never used
[INFO] [stdout]   --> src/resource/mesh_manager.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MeshManager {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn remove(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `materials` is never read
[INFO] [stdout]   --> src/resource/material_manager.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | pub struct MaterialManager {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 10 |     default_material: Rc<RefCell<Box<dyn Material + 'static>>>,
[INFO] [stdout] 11 |     materials: HashMap<String, Rc<RefCell<Box<dyn Material + 'static>>>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `add`, and `remove` are never used
[INFO] [stdout]   --> src/resource/material_manager.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MaterialManager {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn get(&mut self, name: &str) -> Option<Rc<RefCell<Box<dyn Material + 'static>>>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn add(&mut self, material: Rc<RefCell<Box<dyn Material + 'static>>>, name: &str) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn remove(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `texture_id` and `depth_id` are never used
[INFO] [stdout]   --> src/resource/framebuffer_manager.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl RenderTarget {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 18 |     pub fn texture_id(&self) -> Option<&Texture> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn depth_id(&self) -> Option<&Either<Texture, Renderbuffer>> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coords`, `faces`, `uvs`, and `edges` are never read
[INFO] [stdout]   --> src/resource/planar_mesh.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct PlanarMesh {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 11 |     coords: Arc<RwLock<GPUVec<Point2<f32>>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 12 |     faces: Arc<RwLock<GPUVec<Point3<VertexIndex>>>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 13 |     uvs: Arc<RwLock<GPUVec<Point2<f32>>>>,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 14 |     edges: Option<Arc<RwLock<GPUVec<Point2<VertexIndex>>>>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/resource/planar_mesh.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout] 17  | impl PlanarMesh {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 18  |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49  |     pub fn new_with_gpu_vectors(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62  |     pub fn bind_coords(&mut self, coords: &mut ShaderAttribute<Point2<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66  |     pub fn bind_uvs(&mut self, uvs: &mut ShaderAttribute<Point2<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70  |     pub fn bind_faces(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74  |     pub fn bind(
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     pub fn bind_edges(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn num_pts(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn faces(&self) -> &Arc<RwLock<GPUVec<Point3<VertexIndex>>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn coords(&self) -> &Arc<RwLock<GPUVec<Point2<f32>>>> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn uvs(&self) -> &Arc<RwLock<GPUVec<Point2<f32>>>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlanarMeshManager` is never constructed
[INFO] [stdout]   --> src/resource/planar_mesh_manager.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct PlanarMeshManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_global_manager`, `get`, `add`, and `remove` are never used
[INFO] [stdout]   --> src/resource/planar_mesh_manager.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl PlanarMeshManager {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> PlanarMeshManager {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_global_manager<T, F: FnMut(&mut PlanarMeshManager) -> T>(mut f: F) -> T {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get(&mut self, name: &str) -> Option<Rc<RefCell<PlanarMesh>>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn add(&mut self, mesh: Rc<RefCell<PlanarMesh>>, name: &str) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn remove(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlanarMaterialManager` is never constructed
[INFO] [stdout]  --> src/resource/planar_material_manager.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct PlanarMaterialManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_global_manager`, `get_default`, `get`, `add`, and `remove` are never used
[INFO] [stdout]   --> src/resource/planar_material_manager.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl PlanarMaterialManager {
[INFO] [stdout]    | -------------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> PlanarMaterialManager {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn get_global_manager<T, F: FnMut(&mut PlanarMaterialManager) -> T>(mut f: F) -> T {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn get_default(&self) -> Rc<RefCell<Box<dyn PlanarMaterial + 'static>>> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn get(&mut self, name: &str) -> Option<Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn add(&mut self, material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>, name: &str) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn remove(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `GLsizeiptr` is never used
[INFO] [stdout]   --> src/context/context.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub type GLsizeiptr = isize;
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/context/context.rs:55:15
[INFO] [stdout]     |
[INFO] [stdout] 41  | impl Context {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55  |     pub const RENDERBUFFER: u32 = ContextImpl::RENDERBUFFER;
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61  |     pub const UNSIGNED_BYTE: u32 = ContextImpl::UNSIGNED_BYTE;
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67  |     pub const NEAREST: u32 = ContextImpl::NEAREST;
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     pub const TRIANGLE_STRIP: u32 = ContextImpl::TRIANGLE_STRIP;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub const PACK_ALIGNMENT: u32 = ContextImpl::PACK_ALIGNMENT;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     pub const ALPHA: u32 = ContextImpl::ALPHA;
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn delete_vertex_array(&self, vertex_array: Option<&VertexArray>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn buffer_data_uninitialized(&self, target: GLenum, len: usize, usage: GLenum) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 510 |     pub fn read_pixels(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `NEAREST`, `TRIANGLE_STRIP`, `PACK_ALIGNMENT`, and `ALPHA` are never used
[INFO] [stdout]    --> src/context/context.rs:564:11
[INFO] [stdout]     |
[INFO] [stdout] 538 | pub(crate) trait AbstractContextConst {
[INFO] [stdout]     |                  -------------------- associated constants in this trait
[INFO] [stdout] ...
[INFO] [stdout] 564 |     const NEAREST: u32;
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 581 |     const TRIANGLE_STRIP: u32;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     const PACK_ALIGNMENT: u32;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 596 |     const ALPHA: u32;
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `delete_vertex_array`, `buffer_data_uninitialized`, and `read_pixels` are never used
[INFO] [stdout]    --> src/context/context.rs:638:8
[INFO] [stdout]     |
[INFO] [stdout] 600 | pub(crate) trait AbstractContext {
[INFO] [stdout]     |                  --------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 638 |     fn delete_vertex_array(&self, vertex_array: Option<&Self::VertexArray>);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 644 |     fn buffer_data_uninitialized(&self, target: GLenum, len: usize, usage: GLenum);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 764 |     fn read_pixels(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/event/event_manager.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl<'a> Event<'a> {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 24 |     #[inline]
[INFO] [stdout] 25 |     fn new(value: WindowEvent, inhibitor: &RefCell<Vec<WindowEvent>>) -> Event {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Events` is never constructed
[INFO] [stdout]   --> src/event/event_manager.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct Events<'a> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/event/event_manager.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl<'a> Events<'a> {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 40 |     #[inline]
[INFO] [stdout] 41 |     fn new(
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventManager` is never constructed
[INFO] [stdout]   --> src/event/event_manager.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct EventManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `iter` are never used
[INFO] [stdout]   --> src/event/event_manager.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl EventManager {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 67 |     #[inline]
[INFO] [stdout] 68 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn iter(&mut self) -> Events {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_keyboard_event`, `is_mouse_event`, and `is_touch_event` are never used
[INFO] [stdout]   --> src/event/window_event.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl WindowEvent {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 24 |     pub fn is_keyboard_event(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn is_mouse_event(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn is_touch_event(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `from_bytes`, and `default` are never used
[INFO] [stdout]   --> src/text/font.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Font {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] 15 |     pub fn new(path: &Path) -> Option<Rc<Font>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn from_bytes(memory: &[u8]) -> Option<Rc<Font>> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn default() -> Rc<Font> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Glyph` is never constructed
[INFO] [stdout]  --> src/text/glyph.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Glyph {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/text/glyph.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Glyph {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_text` is never used
[INFO] [stdout]    --> src/text/renderer.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 35  | impl TextRenderer {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn draw_text(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/camera/arc_ball.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl ArcBall {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn at(&self) -> Point3<f32> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 85  |     pub fn set_at(&mut self, at: Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90  |     pub fn yaw(&self) -> f32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 94  |     pub fn set_yaw(&mut self, yaw: f32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn pitch(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn set_pitch(&mut self, pitch: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn min_pitch(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn set_min_pitch(&mut self, min_pitch: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn max_pitch(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn set_max_pitch(&mut self, max_pitch: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn dist(&self) -> f32 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_dist(&mut self, dist: f32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn min_dist(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn set_min_dist(&mut self, min_dist: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn max_dist(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn set_max_dist(&mut self, max_dist: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn set_dist_step(&mut self, dist_step: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn rotate_button(&self) -> Option<MouseButton> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn rebind_rotate_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn rotate_modifiers(&self) -> Option<Modifiers> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn set_rotate_modifiers(&mut self, modifiers: Option<Modifiers>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn drag_modifiers(&self) -> Option<Modifiers> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn set_drag_modifiers(&mut self, modifiers: Option<Modifiers>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn drag_button(&self) -> Option<MouseButton> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn rebind_drag_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn reset_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn rebind_reset_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn set_up_axis(&mut self, up_axis: Vector3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn set_up_axis_dir(&mut self, up_axis: Unit<Vector3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `transformation`, `inverse_transformation`, `project`, and `unproject` are never used
[INFO] [stdout]   --> src/camera/camera.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub trait Camera {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 10 |     fn transformation(&self) -> Matrix4<f32>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     fn inverse_transformation(&self) -> Matrix4<f32>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     fn project(&self, world_coord: &Point3<f32>, size: &Vector2<f32>) -> Vector2<f32> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn unproject(
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FirstPerson` is never constructed
[INFO] [stdout]   --> src/camera/first_person.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct FirstPerson {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/camera/first_person.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl FirstPerson {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 38  |     pub fn new(eye: Point3<f32>, at: Point3<f32>) -> FirstPerson {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42  |     pub fn new_with_frustrum(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77  |     pub fn set_move_step(&mut self, step: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82  |     pub fn set_pitch_step(&mut self, step: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87  |     pub fn set_yaw_step(&mut self, step: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92  |     pub fn move_step(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97  |     pub fn pitch_step(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn yaw_step(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn look_at(&mut self, eye: Point3<f32>, at: Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn at(&self) -> Point3<f32> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn update_restrictions(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn rotate_button(&self) -> Option<MouseButton> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn rebind_rotate_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn drag_button(&self) -> Option<MouseButton> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn rebind_drag_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn up_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn down_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn left_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn right_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn rebind_up_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn rebind_down_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn rebind_left_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn rebind_right_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn unbind_movement_keys(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn handle_left_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn handle_right_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn handle_scroll(&mut self, yoff: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     fn update_projviews(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn eye_dir(&self) -> Vector3<f32> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn move_dir(&self, up: bool, down: bool, right: bool, left: bool) -> Vector3<f32> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn translate_mut(&mut self, t: &Translation3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn translate(&self, t: &Translation3<f32>) -> FirstPerson {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     fn set_eye(&mut self, eye: Point3<f32>) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn set_up_axis(&mut self, up_axis: Vector3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn set_up_axis_dir(&mut self, up_axis: Unit<Vector3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn observer_frame(&self) -> Isometry3<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_optional_key_state` is never used
[INFO] [stdout]    --> src/camera/first_person.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn check_optional_key_state(canvas: &Canvas, key: Option<Key>, key_state: Action) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoordSystemRh` is never constructed
[INFO] [stdout]    --> src/camera/first_person.rs:393:8
[INFO] [stdout]     |
[INFO] [stdout] 393 | struct CoordSystemRh {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_up_axis` is never used
[INFO] [stdout]    --> src/camera/first_person.rs:400:8
[INFO] [stdout]     |
[INFO] [stdout] 398 | impl CoordSystemRh {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 399 |     #[inline]
[INFO] [stdout] 400 |     fn from_up_axis(up_axis: Unit<Vector3<f32>>) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FirstPersonStereo` is never constructed
[INFO] [stdout]   --> src/camera/first_person_stereo.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct FirstPersonStereo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/camera/first_person_stereo.rs:33:12
[INFO] [stdout]     |
[INFO] [stdout] 32  | impl FirstPersonStereo {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 33  |     pub fn new(eye: Point3<f32>, at: Point3<f32>, ipd: f32) -> FirstPersonStereo {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37  |     pub fn new_with_frustrum(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn look_at(&mut self, eye: Point3<f32>, at: Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn at(&self) -> Point3<f32> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 89  |     fn update_restrictions(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn handle_left_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn update_eyes_location(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn handle_right_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn handle_scroll(&mut self, yoff: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn update_projviews(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     fn view_eye(&self, eye: usize) -> Matrix4<f32> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn view_transform_left(&self) -> Isometry3<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn view_transform_right(&self) -> Isometry3<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn ipd(&self) -> f32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn set_ipd(&mut self, ipd: f32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FixedView` is never constructed
[INFO] [stdout]  --> src/camera/fixed_view.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct FixedView {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_with_frustrum`, and `update_projviews` are never used
[INFO] [stdout]   --> src/camera/fixed_view.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl FixedView {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> FixedView {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn new_with_frustrum(fov: f32, znear: f32, zfar: f32) -> FixedView {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn update_projviews(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_data` is never read
[INFO] [stdout]   --> src/scene/object.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ObjectData {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     user_data: Box<dyn Any + 'static>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `user_data` is never used
[INFO] [stdout]   --> src/scene/object.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl ObjectData {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn user_data(&self) -> &dyn Any {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/object.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl Object {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn data(&self) -> &ObjectData {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn data_mut(&mut self) -> &mut ObjectData {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn set_user_data(&mut self, user_data: Box<dyn Any + 'static>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn material(&self) -> Rc<RefCell<Box<dyn Material + 'static>>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn Material + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn lines_width(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn lines_color(&self) -> Option<Point3<f32>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn points_size(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn surface_rendering_activation(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn mesh(&self) -> &Rc<RefCell<Mesh>> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn read_vertices<F: FnMut(&[Point3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn recompute_normals(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn modify_normals<F: FnMut(&mut Vec<Vector3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn read_normals<F: FnMut(&[Vector3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/scene/planar_object.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct PlanarObjectData {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 16 |     material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>,
[INFO] [stdout] 17 |     texture: Rc<Texture>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 18 |     color: Point3<f32>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     lines_color: Option<Point3<f32>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 20 |     wlines: f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 21 |     wpoints: f32,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 22 |     draw_surface: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 23 |     cull: bool,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 24 |     user_data: Box<dyn Any + 'static>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/scene/planar_object.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl PlanarObjectData {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] 28 |     #[inline]
[INFO] [stdout] 29 |     pub fn texture(&self) -> &Rc<Texture> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn color(&self) -> &Point3<f32> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn lines_width(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn lines_color(&self) -> Option<&Point3<f32>> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn points_size(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn surface_rendering_active(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn backface_culling_enabled(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn user_data(&self) -> &dyn Any {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/scene/planar_object.rs:76:12
[INFO] [stdout]     |
[INFO] [stdout] 74  | impl PlanarObject {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 75  |     #[doc(hidden)]
[INFO] [stdout] 76  |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn data(&self) -> &PlanarObjectData {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn data_mut(&mut self) -> &mut PlanarObjectData {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_user_data(&mut self, user_data: Box<dyn Any + 'static>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn material(&self) -> Rc<RefCell<Box<dyn PlanarMaterial + 'static>>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn lines_width(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn lines_color(&self) -> Option<&Point3<f32>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn points_size(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn surface_rendering_activation(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn mesh(&self) -> &Rc<RefCell<PlanarMesh>> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn read_vertices<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn set_color(&mut self, r: f32, g: f32, b: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/scene_node.rs:45:8
[INFO] [stdout]     |
[INFO] [stdout] 40  | impl SceneNodeData {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45  |     fn remove_from_parent(&mut self, to_remove: &SceneNode) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53  |     fn remove(&mut self, o: &SceneNode) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     pub fn has_object(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn object(&self) -> Option<&Object> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn object_mut(&mut self) -> Option<&mut Object> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn get_object(&self) -> &Object {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn get_object_mut(&mut self) -> &mut Object {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn Material + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn set_material_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn read_vertices<F: FnMut(&[Point3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn recompute_normals(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn modify_normals<F: FnMut(&mut Vec<Vector3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn read_normals<F: FnMut(&[Vector3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn is_visible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn set_visible(&mut self, visible: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn set_texture_from_memory(&mut self, image_data: &[u8], name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn apply_to_objects<F: FnMut(&Object)>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn set_local_scale(&mut self, sx: f32, sy: f32, sz: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn local_scale(&self) -> Vector3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn reorient(&mut self, eye: &Point3<f32>, at: &Point3<f32>, up: &Vector3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn local_transformation(&self) -> Isometry3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn inverse_local_transformation(&self) -> Isometry3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn world_transformation(&self) -> Isometry3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 336 |     pub fn inverse_world_transformation(&self) -> Isometry3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn append_transformation(&mut self, t: &Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn prepend_to_local_transformation(&mut self, t: &Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_local_transformation(&mut self, t: Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn local_translation(&self) -> Translation3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn inverse_local_translation(&self) -> Translation3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn prepend_to_local_translation(&mut self, t: &Translation3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn local_rotation(&self) -> UnitQuaternion<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn inverse_local_rotation(&self) -> UnitQuaternion<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |     pub fn append_rotation(&mut self, r: &UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     pub fn append_rotation_wrt_center(&mut self, r: &UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn set_local_rotation(&mut self, r: UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 436 |     fn update(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     pub fn is_fixed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/scene_node.rs:507:12
[INFO] [stdout]     |
[INFO] [stdout] 475 | impl SceneNode {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 507 |     pub fn is_fixed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub fn unlink(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 525 |     pub fn add_group(&mut self) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 564 |     pub fn add_sphere(&mut self, r: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn add_cone(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn add_cylinder(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 582 |     pub fn add_capsule(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 589 |     pub fn add_quad(&mut self, w: f32, h: f32, usubdivs: usize, vsubdivs: usize) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 599 |     pub fn add_quad_with_vertices(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 629 |     pub fn add_trimesh(&mut self, descr: TriMesh<f32>, scale: Vector3<f32>) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 761 |     pub fn apply_to_scene_nodes_mut<F: FnMut(&mut SceneNode)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 770 |     pub fn apply_to_scene_nodes<F: FnMut(&SceneNode)>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 778 |     pub fn render(&mut self, pass: usize, camera: &mut dyn Camera, light: &Light) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 783 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn Material + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 788 |     pub fn set_material_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 793 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 798 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 803 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 808 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 813 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 818 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 823 |     pub fn read_vertices<F: FnMut(&[Point3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 828 |     pub fn recompute_normals(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 833 |     pub fn modify_normals<F: FnMut(&mut Vec<Vector3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 838 |     pub fn read_normals<F: FnMut(&[Vector3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 843 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 848 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 853 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 858 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 863 |     pub fn is_visible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 868 |     pub fn set_visible(&mut self, visible: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 878 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 882 |     pub fn set_texture_from_memory(&mut self, image_data: &[u8], name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 887 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 896 |     pub fn set_local_scale(&mut self, sx: f32, sy: f32, sz: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 901 |     pub fn reorient(&mut self, eye: &Point3<f32>, at: &Point3<f32>, up: &Vector3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 906 |     pub fn append_transformation(&mut self, t: &Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 911 |     pub fn prepend_to_local_transformation(&mut self, t: &Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 916 |     pub fn set_local_transformation(&mut self, t: Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 926 |     pub fn prepend_to_local_translation(&mut self, t: &Translation3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 936 |     pub fn append_rotation(&mut self, r: &UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 941 |     pub fn append_rotation_wrt_center(&mut self, r: &UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 951 |     pub fn set_local_rotation(&mut self, r: UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parent` is never read
[INFO] [stdout]   --> src/scene/planar_scene_node.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct PlanarSceneNodeData {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     parent: Option<*const RefCell<PlanarSceneNodeData>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/planar_scene_node.rs:36:8
[INFO] [stdout]     |
[INFO] [stdout] 35  | impl PlanarSceneNodeData {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] 36  |     fn set_parent(&mut self, parent: *const RefCell<PlanarSceneNodeData>) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40  |     fn remove_from_parent(&mut self, to_remove: &PlanarSceneNode) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47  |     fn remove(&mut self, o: &PlanarSceneNode) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58  |     pub fn has_object(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63  |     pub fn is_root(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn object(&self) -> Option<&PlanarObject> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn object_mut(&mut self) -> Option<&mut PlanarObject> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_object(&self) -> &PlanarObject {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_object_mut(&mut self) -> &mut PlanarObject {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn set_material_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn read_vertices<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn is_visible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn set_visible(&mut self, visible: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn set_color(&mut self, r: f32, g: f32, b: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn set_texture_from_memory(&mut self, image_data: &[u8], name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn apply_to_objects_mut<F: FnMut(&mut PlanarObject)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn apply_to_objects<F: FnMut(&PlanarObject)>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn set_local_scale(&mut self, sx: f32, sy: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn local_scale(&self) -> Vector2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn local_transformation(&self) -> Isometry2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn inverse_local_transformation(&self) -> Isometry2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn world_transformation(&self) -> Isometry2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn inverse_world_transformation(&self) -> Isometry2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn append_transformation(&mut self, t: &Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn prepend_to_local_transformation(&mut self, t: &Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub fn set_local_transformation(&mut self, t: Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn local_translation(&self) -> Translation2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn inverse_local_translation(&self) -> Translation2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn append_translation(&mut self, t: &Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     pub fn prepend_to_local_translation(&mut self, t: &Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn set_local_translation(&mut self, t: Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn local_rotation(&self) -> UnitComplex<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn inverse_local_rotation(&self) -> UnitComplex<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn append_rotation(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn append_rotation_wrt_center(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn prepend_to_local_rotation(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn set_local_rotation(&mut self, r: UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     fn invalidate(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     fn update(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/planar_scene_node.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 412 | impl PlanarSceneNode {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn unlink(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub fn data(&self) -> Ref<PlanarSceneNodeData> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 453 |     pub fn add_group(&mut self) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn add_child(&mut self, node: PlanarSceneNode) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn add_object(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub fn add_rectangle(&mut self, wx: f32, wy: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 491 |     pub fn add_circle(&mut self, r: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 497 |     pub fn add_capsule(&mut self, r: f32, h: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 540 |     pub fn add_geom_with_name(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn add_mesh(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     pub fn add_convex_polygon(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 581 |     pub fn apply_to_scene_nodes_mut<F: FnMut(&mut PlanarSceneNode)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn apply_to_scene_nodes<F: FnMut(&PlanarSceneNode)>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     pub fn render(&mut self, camera: &mut dyn PlanarCamera) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 603 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 608 |     pub fn set_material_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 613 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 628 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 633 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 638 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 643 |     pub fn read_vertices<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 648 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 653 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 658 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 663 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 668 |     pub fn is_visible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 673 |     pub fn set_visible(&mut self, visible: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 678 |     pub fn set_color(&mut self, r: f32, g: f32, b: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 683 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 687 |     pub fn set_texture_from_memory(&mut self, image_data: &[u8], name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 692 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 701 |     pub fn set_local_scale(&mut self, sx: f32, sy: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 706 |     pub fn append_transformation(&mut self, t: &Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 711 |     pub fn prepend_to_local_transformation(&mut self, t: &Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     pub fn set_local_transformation(&mut self, t: Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 721 |     pub fn append_translation(&mut self, t: &Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     pub fn prepend_to_local_translation(&mut self, t: &Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 731 |     pub fn set_local_translation(&mut self, t: Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 736 |     pub fn append_rotation(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 741 |     pub fn append_rotation_wrt_center(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 746 |     pub fn prepend_to_local_rotation(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 751 |     pub fn set_local_rotation(&mut self, r: UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlanarObjectMaterial` is never constructed
[INFO] [stdout]   --> src/builtin/planar_object_material.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct PlanarObjectMaterial {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `activate`, and `deactivate` are never used
[INFO] [stdout]   --> src/builtin/planar_object_material.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl PlanarObjectMaterial {
[INFO] [stdout]    | ------------------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new() -> PlanarObjectMaterial {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     fn activate(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn deactivate(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `OBJECT_VERTEX_SRC` is never used
[INFO] [stdout]    --> src/builtin/planar_object_material.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | static OBJECT_VERTEX_SRC: &str = A_VERY_LONG_STRING;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `OBJECT_FRAGMENT_SRC` is never used
[INFO] [stdout]    --> src/builtin/planar_object_material.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | static OBJECT_FRAGMENT_SRC: &str = ANOTHER_VERY_LONG_STRING;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A_VERY_LONG_STRING` is never used
[INFO] [stdout]    --> src/builtin/planar_object_material.rs:151:7
[INFO] [stdout]     |
[INFO] [stdout] 151 | const A_VERY_LONG_STRING: &str = "#version 100
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ANOTHER_VERY_LONG_STRING` is never used
[INFO] [stdout]    --> src/builtin/planar_object_material.rs:168:7
[INFO] [stdout]     |
[INFO] [stdout] 168 | const ANOTHER_VERY_LONG_STRING: &str = "#version 100
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `needs_rendering` and `set_line_width` are never used
[INFO] [stdout]   --> src/renderer/line_renderer.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl LineRenderer {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn needs_rendering(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn set_line_width(&mut self, line_width: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `needs_rendering`, `set_point_size`, and `draw_point` are never used
[INFO] [stdout]   --> src/renderer/point_renderer.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl PointRenderer {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn needs_rendering(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn set_point_size(&mut self, pt_size: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn draw_point(&mut self, pt: Point3<f32>, color: Point3<f32>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unproject` is never used
[INFO] [stdout]   --> src/planar_camera/planar_camera.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub trait PlanarCamera {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn unproject(&self, window_coord: &Point2<f32>, window_size: &Vector2<f32>) -> Point2<f32>;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sidescroll` is never constructed
[INFO] [stdout]   --> src/planar_camera/sidescroll.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Sidescroll {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/planar_camera/sidescroll.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl Sidescroll {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 25 |     pub fn new() -> Sidescroll {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn at(&self) -> Point2<f32> {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn set_at(&mut self, at: Point2<f32>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn zoom(&self) -> f32 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn set_zoom(&mut self, zoom: f32) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn look_at(&mut self, at: Point2<f32>, zoom: f32) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn update_restrictions(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn drag_button(&self) -> Option<MouseButton> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn rebind_drag_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     fn handle_right_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     fn handle_scroll(&mut self, off: f32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     fn update_projviews(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Grayscales` is never constructed
[INFO] [stdout]   --> src/post_processing/grayscales.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Grayscales {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/post_processing/grayscales.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Grayscales {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Grayscales {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VERTEX_SHADER` is never used
[INFO] [stdout]   --> src/post_processing/grayscales.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | static VERTEX_SHADER: &str = "#version 100
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FRAGMENT_SHADER` is never used
[INFO] [stdout]   --> src/post_processing/grayscales.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | static FRAGMENT_SHADER: &str = "#version 100
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OculusStereo` is never constructed
[INFO] [stdout]   --> src/post_processing/oculus_stereo.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct OculusStereo {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/post_processing/oculus_stereo.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl OculusStereo {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 26 |     pub fn new() -> OculusStereo {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VERTEX_SHADER` is never used
[INFO] [stdout]    --> src/post_processing/oculus_stereo.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | static VERTEX_SHADER: &str = "
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FRAGMENT_SHADER` is never used
[INFO] [stdout]    --> src/post_processing/oculus_stereo.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | static FRAGMENT_SHADER: &str = "
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SobelEdgeHighlight` is never constructed
[INFO] [stdout]   --> src/post_processing/sobel_edge_highlight.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SobelEdgeHighlight {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/post_processing/sobel_edge_highlight.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl SobelEdgeHighlight {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 29 |     pub fn new(threshold: f32) -> SobelEdgeHighlight {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VERTEX_SHADER` is never used
[INFO] [stdout]    --> src/post_processing/sobel_edge_highlight.rs:109:8
[INFO] [stdout]     |
[INFO] [stdout] 109 | static VERTEX_SHADER: &str = "#version 100
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FRAGMENT_SHADER` is never used
[INFO] [stdout]    --> src/post_processing/sobel_edge_highlight.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | static FRAGMENT_SHADER: &str = "#version 100
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Waves` is never constructed
[INFO] [stdout]   --> src/post_processing/waves.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Waves {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/post_processing/waves.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Waves {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new() -> Waves {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VERTEX_SHADER` is never used
[INFO] [stdout]   --> src/post_processing/waves.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | static VERTEX_SHADER: &str = "#version 100
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FRAGMENT_SHADER` is never used
[INFO] [stdout]   --> src/post_processing/waves.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | static FRAGMENT_SHADER: &str = "#version 100
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `draw_line` and `set_line_width` are never used
[INFO] [stdout]   --> src/planar_line_renderer.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl PlanarLineRenderer {
[INFO] [stdout]    | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn draw_line(&mut self, a: Point2<f32>, b: Point2<f32>, color: Point3<f32>) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn set_line_width(&mut self, line_width: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/loader/obj.rs:28:23
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn split_words(s: &str) -> Words {
[INFO] [stdout]    |                       ^^^^     ----- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn split_words(s: &str) -> Words<'_> {
[INFO] [stdout]    |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/context/context.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 | /             CONTEXT_SINGLETON
[INFO] [stdout] 116 | |                 .clone()
[INFO] [stdout]     | |________________________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/event/event_manager.rs:25:43
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn new(value: WindowEvent, inhibitor: &RefCell<Vec<WindowEvent>>) -> Event {
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^     ----- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                                           |
[INFO] [stdout]    |                                           this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn new(value: WindowEvent, inhibitor: &RefCell<Vec<WindowEvent>>) -> Event<'_> {
[INFO] [stdout]    |                                                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/event/event_manager.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn iter(&mut self) -> Events {
[INFO] [stdout]    |                 ^^^^^^^^^     ------ the lifetime gets resolved as `'_`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn iter(&mut self) -> Events<'_> {
[INFO] [stdout]    |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Shift` should have an upper case name
[INFO] [stdout]    --> src/event/window_event.rs:235:15
[INFO] [stdout]     |
[INFO] [stdout] 235 |         const Shift       = 0b0001;
[INFO] [stdout]     |               ^^^^^ help: convert the identifier to upper case: `SHIFT`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Control` should have an upper case name
[INFO] [stdout]    --> src/event/window_event.rs:236:15
[INFO] [stdout]     |
[INFO] [stdout] 236 |         const Control     = 0b0010;
[INFO] [stdout]     |               ^^^^^^^ help: convert the identifier to upper case: `CONTROL`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Alt` should have an upper case name
[INFO] [stdout]    --> src/event/window_event.rs:237:15
[INFO] [stdout]     |
[INFO] [stdout] 237 |         const Alt         = 0b0100;
[INFO] [stdout]     |               ^^^ help: convert the identifier to upper case: `ALT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Super` should have an upper case name
[INFO] [stdout]    --> src/event/window_event.rs:238:15
[INFO] [stdout]     |
[INFO] [stdout] 238 |         const Super       = 0b1000;
[INFO] [stdout]     |               ^^^^^ help: convert the identifier to upper case: `SUPER`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/text/font.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             DEFAULT_FONT_SINGLETON.clone().unwrap()
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/scene_node.rs:517:17
[INFO] [stdout]     |
[INFO] [stdout] 517 |     pub fn data(&self) -> Ref<SceneNodeData> {
[INFO] [stdout]     |                 ^^^^^     ------------------ the lifetime gets resolved as `'_`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 517 |     pub fn data(&self) -> Ref<'_, SceneNodeData> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/scene_node.rs:521:21
[INFO] [stdout]     |
[INFO] [stdout] 521 |     pub fn data_mut(&mut self) -> RefMut<SceneNodeData> {
[INFO] [stdout]     |                     ^^^^^^^^^     --------------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 521 |     pub fn data_mut(&mut self) -> RefMut<'_, SceneNodeData> {
[INFO] [stdout]     |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/planar_scene_node.rs:445:17
[INFO] [stdout]     |
[INFO] [stdout] 445 |     pub fn data(&self) -> Ref<PlanarSceneNodeData> {
[INFO] [stdout]     |                 ^^^^^     ------------------------ the lifetime gets resolved as `'_`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 445 |     pub fn data(&self) -> Ref<'_, PlanarSceneNodeData> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/planar_scene_node.rs:449:21
[INFO] [stdout]     |
[INFO] [stdout] 449 |     pub fn data_mut(&mut self) -> RefMut<PlanarSceneNodeData> {
[INFO] [stdout]     |                     ^^^^^^^^^     --------------------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 449 |     pub fn data_mut(&mut self) -> RefMut<'_, PlanarSceneNodeData> {
[INFO] [stdout]     |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/scene/scene_node.rs:733:21
[INFO] [stdout]     |
[INFO] [stdout] 733 |                 let mut object = Object::new(
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/builtin/object_material.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/builtin/uvs_material.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/builtin/normals_material.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/builtin/planar_object_material.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/window/window.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout] 79  | impl Window {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 96  |     pub fn size(&self) -> Vector2<u32> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn set_framerate_limit(&mut self, fps: Option<u64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn set_title(&mut self, title: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_icon(&mut self, icon: impl GenericImage<Pixel = impl Pixel<Subpixel = u8>>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn set_cursor_grab(&self, grab: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn set_cursor_position(&self, x: f64, y: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn hide_cursor(&self, hide: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn hide(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn show(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn set_background_color(&mut self, r: f32, g: f32, b: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn set_point_size(&mut self, pt_size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn set_line_width(&mut self, line_width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn draw_planar_line(&mut self, a: &Point2<f32>, b: &Point2<f32>, color: &Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn draw_point(&mut self, pt: &Point3<f32>, color: &Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn draw_text(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn remove(&mut self, sn: &mut SceneNode) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn remove_node(&mut self, sn: &mut SceneNode) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn remove_planar_node(&mut self, sn: &mut PlanarSceneNode) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn add_group(&mut self) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn add_planar_group(&mut self) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn add_mesh(&mut self, mesh: Rc<RefCell<Mesh>>, scale: Vector3<f32>) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn add_planar_mesh(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn add_trimesh(&mut self, descr: TriMesh<f32>, scale: Vector3<f32>) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn add_geom_with_name(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn add_sphere(&mut self, r: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn add_cone(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn add_cylinder(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn add_capsule(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn add_planar_capsule(&mut self, r: f32, h: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn add_quad(&mut self, w: f32, h: f32, usubdivs: usize, vsubdivs: usize) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |     pub fn add_quad_with_vertices(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn add_texture(&mut self, path: &Path, name: &str) -> Rc<Texture> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 316 |     pub fn add_rectangle(&mut self, wx: f32, wy: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn add_circle(&mut self, r: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub fn add_convex_polygon(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn is_closed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 336 |     pub fn scale_factor(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn new_hidden(title: &str) -> Window {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn new_with_size(title: &str, width: u32, height: u32) -> Window {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub fn new_with_setup(title: &str, width: u32, height: u32, setup: CanvasSetup) -> Window {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn scene(&self) -> &SceneNode {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn scene_mut(&mut self) -> &mut SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     pub fn snap(&self, out: &mut Vec<u8>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 437 |     pub fn snap_rect(&self, out: &mut Vec<u8>, x: usize, y: usize, width: usize, height: usize) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 459 |     pub fn snap_image(&self) -> ImageBuffer<Rgb<u8>, Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     pub fn events(&self) -> EventManager {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn get_key(&self, key: Key) -> Action {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |     pub fn cursor_pos(&self) -> Option<(f64, f64)> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn render_loop<S: State>(self, state: S) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 543 |     pub fn render_with_state<S: State>(&mut self, state: &mut S) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 547 |     fn do_render_with_state<S: State>(&mut self, state: &mut S) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     pub fn render_with_effect(&mut self, effect: &mut (dyn PostProcessingEffect)) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub fn render_with_camera(&mut self, camera: &mut (dyn Camera)) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn render_with_cameras(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn render_with_camera_and_effect(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 594 |     pub fn render_with_cameras_and_effect(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_u32` is never used
[INFO] [stdout]   --> src/window/canvas.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl NumSamples {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn from_u32(i: u32) -> Option<NumSamples> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/window/canvas.rs:58:12
[INFO] [stdout]     |
[INFO] [stdout] 44  | impl Canvas {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58  |     pub fn render_loop(data: impl FnMut(f64) -> bool + 'static) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74  |     pub fn cursor_pos(&self) -> Option<(f64, f64)> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82  |     pub fn set_title(&mut self, title: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn set_icon(&mut self, icon: impl GenericImage<Pixel = impl Pixel<Subpixel = u8>>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90  |     pub fn set_cursor_grab(&self, grab: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94  |     pub fn set_cursor_position(&self, x: f64, y: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn hide_cursor(&self, hide: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn show(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_key(&self, key: Key) -> Action {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/window/canvas.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub(crate) trait AbstractCanvas {
[INFO] [stdout]     |                  -------------- associated items in this trait
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn render_loop(data: impl FnMut(f64) -> bool + 'static);
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn cursor_pos(&self) -> Option<(f64, f64)>;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     fn set_title(&mut self, title: &str);
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 148 |     fn set_icon(&mut self, icon: impl GenericImage<Pixel = impl Pixel<Subpixel = u8>>);
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 149 |     fn set_cursor_grab(&self, grab: bool);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 150 |     fn set_cursor_position(&self, x: f64, y: f64);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 151 |     fn hide_cursor(&self, hide: bool);
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 152 |     fn hide(&mut self);
[INFO] [stdout] 153 |     fn show(&mut self);
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn get_key(&self, key: Key) -> Action;
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `State` is never used
[INFO] [stdout]  --> src/window/state.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait State: 'static {
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/loader/mtl.rs:150:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl MtlMaterial {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `normals` are never read
[INFO] [stdout]   --> src/loader/glb.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout] 7  | pub struct Mesh {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 8  |     pub name: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 9  |     pub vertices: Vec<Point3<f32>>,
[INFO] [stdout] 10 |     pub normals: Vec<Vector3<f32>>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNSIGNED_INT` is never used
[INFO] [stdout]  --> src/resource/vertex_index.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const UNSIGNED_INT: u32 = 0x1405;   
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_trimesh`, `recompute_normals`, `faces`, `normals`, `coords`, and `uvs` are never used
[INFO] [stdout]    --> src/resource/mesh.rs:88:12
[INFO] [stdout]     |
[INFO] [stdout] 20  | impl Mesh {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88  |     pub fn to_trimesh(&self) -> Option<TriMesh<f32>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn recompute_normals(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn faces(&self) -> &Arc<RwLock<GPUVec<Point3<VertexIndex>>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn normals(&self) -> &Arc<RwLock<GPUVec<Vector3<f32>>>> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn coords(&self) -> &Arc<RwLock<GPUVec<Point3<f32>>>> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn uvs(&self) -> &Arc<RwLock<GPUVec<Point2<f32>>>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_on_ram`, `unload_from_gpu`, and `unload_from_ram` are never used
[INFO] [stdout]    --> src/resource/gpu_vector.rs:61:12
[INFO] [stdout]     |
[INFO] [stdout] 14  | impl<T: GLPrimitive> GPUVec<T> {
[INFO] [stdout]     | ------------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61  |     pub fn is_on_ram(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn unload_from_gpu(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn unload_from_ram(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_owned` is never used
[INFO] [stdout]    --> src/resource/gpu_vector.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl<T: Clone + GLPrimitive> GPUVec<T> {
[INFO] [stdout]     | -------------------------------------- method in this implementation
[INFO] [stdout] 126 |     #[inline]
[INFO] [stdout] 127 |     pub fn to_owned(&self) -> Option<Vec<T>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `flatten` is never used
[INFO] [stdout]   --> src/resource/gl_primitive.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub unsafe trait GLPrimitive: Copy {
[INFO] [stdout]    |                  ----------- associated function in this trait
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn flatten(array: &[Self]) -> &[Self::Element] {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/resource/effect.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Effect {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new(vshader_path: &Path, fshader_path: &Path) -> Option<Effect> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_wrapping_s` and `set_wrapping_t` are never used
[INFO] [stdout]   --> src/resource/texture_manager.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Texture {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn set_wrapping_s(&mut self, wrapping: TextureWrapping) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn set_wrapping_t(&mut self, wrapping: TextureWrapping) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `get_with_size`, `add_empty`, `add_image`, `add_image_from_memory`, and `set_generate_mipmaps` are never used
[INFO] [stdout]    --> src/resource/texture_manager.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 72  | impl TextureManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn get(&mut self, name: &str) -> Option<Rc<Texture>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn get_with_size(&mut self, name: &str) -> Option<(Rc<Texture>, (u32, u32))> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn add_empty(&mut self, name: &str) -> Rc<Texture> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn add_image(&mut self, image: DynamicImage, name: &str) -> Rc<Texture> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn add_image_from_memory(&mut self, image_data: &[u8], name: &str) -> Rc<Texture> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn set_generate_mipmaps(&mut self, enabled: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove` is never used
[INFO] [stdout]   --> src/resource/mesh_manager.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MeshManager {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn remove(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `materials` is never read
[INFO] [stdout]   --> src/resource/material_manager.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | pub struct MaterialManager {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 10 |     default_material: Rc<RefCell<Box<dyn Material + 'static>>>,
[INFO] [stdout] 11 |     materials: HashMap<String, Rc<RefCell<Box<dyn Material + 'static>>>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `add`, and `remove` are never used
[INFO] [stdout]   --> src/resource/material_manager.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MaterialManager {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn get(&mut self, name: &str) -> Option<Rc<RefCell<Box<dyn Material + 'static>>>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn add(&mut self, material: Rc<RefCell<Box<dyn Material + 'static>>>, name: &str) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn remove(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `texture_id` and `depth_id` are never used
[INFO] [stdout]   --> src/resource/framebuffer_manager.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl RenderTarget {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 18 |     pub fn texture_id(&self) -> Option<&Texture> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn depth_id(&self) -> Option<&Either<Texture, Renderbuffer>> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coords`, `faces`, `uvs`, and `edges` are never read
[INFO] [stdout]   --> src/resource/planar_mesh.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct PlanarMesh {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 11 |     coords: Arc<RwLock<GPUVec<Point2<f32>>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 12 |     faces: Arc<RwLock<GPUVec<Point3<VertexIndex>>>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 13 |     uvs: Arc<RwLock<GPUVec<Point2<f32>>>>,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 14 |     edges: Option<Arc<RwLock<GPUVec<Point2<VertexIndex>>>>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/resource/planar_mesh.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout] 17  | impl PlanarMesh {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 18  |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49  |     pub fn new_with_gpu_vectors(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62  |     pub fn bind_coords(&mut self, coords: &mut ShaderAttribute<Point2<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66  |     pub fn bind_uvs(&mut self, uvs: &mut ShaderAttribute<Point2<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70  |     pub fn bind_faces(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74  |     pub fn bind(
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     pub fn bind_edges(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn num_pts(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn faces(&self) -> &Arc<RwLock<GPUVec<Point3<VertexIndex>>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn coords(&self) -> &Arc<RwLock<GPUVec<Point2<f32>>>> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn uvs(&self) -> &Arc<RwLock<GPUVec<Point2<f32>>>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlanarMeshManager` is never constructed
[INFO] [stdout]   --> src/resource/planar_mesh_manager.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct PlanarMeshManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_global_manager`, `get`, `add`, and `remove` are never used
[INFO] [stdout]   --> src/resource/planar_mesh_manager.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl PlanarMeshManager {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> PlanarMeshManager {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_global_manager<T, F: FnMut(&mut PlanarMeshManager) -> T>(mut f: F) -> T {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get(&mut self, name: &str) -> Option<Rc<RefCell<PlanarMesh>>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn add(&mut self, mesh: Rc<RefCell<PlanarMesh>>, name: &str) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn remove(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlanarMaterialManager` is never constructed
[INFO] [stdout]  --> src/resource/planar_material_manager.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct PlanarMaterialManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_global_manager`, `get_default`, `get`, `add`, and `remove` are never used
[INFO] [stdout]   --> src/resource/planar_material_manager.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl PlanarMaterialManager {
[INFO] [stdout]    | -------------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> PlanarMaterialManager {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn get_global_manager<T, F: FnMut(&mut PlanarMaterialManager) -> T>(mut f: F) -> T {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn get_default(&self) -> Rc<RefCell<Box<dyn PlanarMaterial + 'static>>> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn get(&mut self, name: &str) -> Option<Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn add(&mut self, material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>, name: &str) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn remove(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `GLsizeiptr` is never used
[INFO] [stdout]   --> src/context/context.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub type GLsizeiptr = isize;
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/context/context.rs:55:15
[INFO] [stdout]     |
[INFO] [stdout] 41  | impl Context {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55  |     pub const RENDERBUFFER: u32 = ContextImpl::RENDERBUFFER;
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61  |     pub const UNSIGNED_BYTE: u32 = ContextImpl::UNSIGNED_BYTE;
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67  |     pub const NEAREST: u32 = ContextImpl::NEAREST;
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     pub const TRIANGLE_STRIP: u32 = ContextImpl::TRIANGLE_STRIP;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub const PACK_ALIGNMENT: u32 = ContextImpl::PACK_ALIGNMENT;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     pub const ALPHA: u32 = ContextImpl::ALPHA;
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn delete_vertex_array(&self, vertex_array: Option<&VertexArray>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn buffer_data_uninitialized(&self, target: GLenum, len: usize, usage: GLenum) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 510 |     pub fn read_pixels(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `NEAREST`, `TRIANGLE_STRIP`, `PACK_ALIGNMENT`, and `ALPHA` are never used
[INFO] [stdout]    --> src/context/context.rs:564:11
[INFO] [stdout]     |
[INFO] [stdout] 538 | pub(crate) trait AbstractContextConst {
[INFO] [stdout]     |                  -------------------- associated constants in this trait
[INFO] [stdout] ...
[INFO] [stdout] 564 |     const NEAREST: u32;
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 581 |     const TRIANGLE_STRIP: u32;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     const PACK_ALIGNMENT: u32;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 596 |     const ALPHA: u32;
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `delete_vertex_array`, `buffer_data_uninitialized`, and `read_pixels` are never used
[INFO] [stdout]    --> src/context/context.rs:638:8
[INFO] [stdout]     |
[INFO] [stdout] 600 | pub(crate) trait AbstractContext {
[INFO] [stdout]     |                  --------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 638 |     fn delete_vertex_array(&self, vertex_array: Option<&Self::VertexArray>);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 644 |     fn buffer_data_uninitialized(&self, target: GLenum, len: usize, usage: GLenum);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 764 |     fn read_pixels(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/event/event_manager.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl<'a> Event<'a> {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 24 |     #[inline]
[INFO] [stdout] 25 |     fn new(value: WindowEvent, inhibitor: &RefCell<Vec<WindowEvent>>) -> Event {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Events` is never constructed
[INFO] [stdout]   --> src/event/event_manager.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct Events<'a> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/event/event_manager.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl<'a> Events<'a> {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 40 |     #[inline]
[INFO] [stdout] 41 |     fn new(
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventManager` is never constructed
[INFO] [stdout]   --> src/event/event_manager.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct EventManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `iter` are never used
[INFO] [stdout]   --> src/event/event_manager.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl EventManager {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 67 |     #[inline]
[INFO] [stdout] 68 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn iter(&mut self) -> Events {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_keyboard_event`, `is_mouse_event`, and `is_touch_event` are never used
[INFO] [stdout]   --> src/event/window_event.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl WindowEvent {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 24 |     pub fn is_keyboard_event(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn is_mouse_event(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn is_touch_event(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `from_bytes`, and `default` are never used
[INFO] [stdout]   --> src/text/font.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Font {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] 15 |     pub fn new(path: &Path) -> Option<Rc<Font>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn from_bytes(memory: &[u8]) -> Option<Rc<Font>> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn default() -> Rc<Font> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Glyph` is never constructed
[INFO] [stdout]  --> src/text/glyph.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Glyph {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/text/glyph.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Glyph {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_text` is never used
[INFO] [stdout]    --> src/text/renderer.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 35  | impl TextRenderer {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn draw_text(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/camera/arc_ball.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl ArcBall {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn at(&self) -> Point3<f32> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 85  |     pub fn set_at(&mut self, at: Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90  |     pub fn yaw(&self) -> f32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 94  |     pub fn set_yaw(&mut self, yaw: f32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn pitch(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn set_pitch(&mut self, pitch: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn min_pitch(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn set_min_pitch(&mut self, min_pitch: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn max_pitch(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn set_max_pitch(&mut self, max_pitch: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn dist(&self) -> f32 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_dist(&mut self, dist: f32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn min_dist(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn set_min_dist(&mut self, min_dist: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn max_dist(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn set_max_dist(&mut self, max_dist: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn set_dist_step(&mut self, dist_step: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn rotate_button(&self) -> Option<MouseButton> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn rebind_rotate_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn rotate_modifiers(&self) -> Option<Modifiers> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn set_rotate_modifiers(&mut self, modifiers: Option<Modifiers>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn drag_modifiers(&self) -> Option<Modifiers> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn set_drag_modifiers(&mut self, modifiers: Option<Modifiers>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn drag_button(&self) -> Option<MouseButton> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn rebind_drag_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn reset_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn rebind_reset_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn set_up_axis(&mut self, up_axis: Vector3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn set_up_axis_dir(&mut self, up_axis: Unit<Vector3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `transformation`, `inverse_transformation`, `project`, and `unproject` are never used
[INFO] [stdout]   --> src/camera/camera.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub trait Camera {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 10 |     fn transformation(&self) -> Matrix4<f32>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     fn inverse_transformation(&self) -> Matrix4<f32>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     fn project(&self, world_coord: &Point3<f32>, size: &Vector2<f32>) -> Vector2<f32> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn unproject(
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FirstPerson` is never constructed
[INFO] [stdout]   --> src/camera/first_person.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct FirstPerson {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/camera/first_person.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl FirstPerson {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 38  |     pub fn new(eye: Point3<f32>, at: Point3<f32>) -> FirstPerson {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42  |     pub fn new_with_frustrum(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77  |     pub fn set_move_step(&mut self, step: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82  |     pub fn set_pitch_step(&mut self, step: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87  |     pub fn set_yaw_step(&mut self, step: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92  |     pub fn move_step(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97  |     pub fn pitch_step(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn yaw_step(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn look_at(&mut self, eye: Point3<f32>, at: Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn at(&self) -> Point3<f32> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn update_restrictions(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn rotate_button(&self) -> Option<MouseButton> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn rebind_rotate_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn drag_button(&self) -> Option<MouseButton> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn rebind_drag_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn up_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn down_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn left_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn right_key(&self) -> Option<Key> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn rebind_up_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn rebind_down_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn rebind_left_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn rebind_right_key(&mut self, new_key: Option<Key>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn unbind_movement_keys(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn handle_left_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn handle_right_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn handle_scroll(&mut self, yoff: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     fn update_projviews(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn eye_dir(&self) -> Vector3<f32> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn move_dir(&self, up: bool, down: bool, right: bool, left: bool) -> Vector3<f32> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn translate_mut(&mut self, t: &Translation3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn translate(&self, t: &Translation3<f32>) -> FirstPerson {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     fn set_eye(&mut self, eye: Point3<f32>) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn set_up_axis(&mut self, up_axis: Vector3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn set_up_axis_dir(&mut self, up_axis: Unit<Vector3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn observer_frame(&self) -> Isometry3<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_optional_key_state` is never used
[INFO] [stdout]    --> src/camera/first_person.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn check_optional_key_state(canvas: &Canvas, key: Option<Key>, key_state: Action) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoordSystemRh` is never constructed
[INFO] [stdout]    --> src/camera/first_person.rs:393:8
[INFO] [stdout]     |
[INFO] [stdout] 393 | struct CoordSystemRh {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_up_axis` is never used
[INFO] [stdout]    --> src/camera/first_person.rs:400:8
[INFO] [stdout]     |
[INFO] [stdout] 398 | impl CoordSystemRh {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 399 |     #[inline]
[INFO] [stdout] 400 |     fn from_up_axis(up_axis: Unit<Vector3<f32>>) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FirstPersonStereo` is never constructed
[INFO] [stdout]   --> src/camera/first_person_stereo.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct FirstPersonStereo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/camera/first_person_stereo.rs:33:12
[INFO] [stdout]     |
[INFO] [stdout] 32  | impl FirstPersonStereo {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 33  |     pub fn new(eye: Point3<f32>, at: Point3<f32>, ipd: f32) -> FirstPersonStereo {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37  |     pub fn new_with_frustrum(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn look_at(&mut self, eye: Point3<f32>, at: Point3<f32>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn at(&self) -> Point3<f32> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 89  |     fn update_restrictions(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn handle_left_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn update_eyes_location(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn handle_right_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn handle_scroll(&mut self, yoff: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn update_projviews(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     fn view_eye(&self, eye: usize) -> Matrix4<f32> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn view_transform_left(&self) -> Isometry3<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn view_transform_right(&self) -> Isometry3<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn ipd(&self) -> f32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn set_ipd(&mut self, ipd: f32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FixedView` is never constructed
[INFO] [stdout]  --> src/camera/fixed_view.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct FixedView {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_with_frustrum`, and `update_projviews` are never used
[INFO] [stdout]   --> src/camera/fixed_view.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl FixedView {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> FixedView {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn new_with_frustrum(fov: f32, znear: f32, zfar: f32) -> FixedView {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn update_projviews(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_data` is never read
[INFO] [stdout]   --> src/scene/object.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ObjectData {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     user_data: Box<dyn Any + 'static>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `user_data` is never used
[INFO] [stdout]   --> src/scene/object.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl ObjectData {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn user_data(&self) -> &dyn Any {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/object.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl Object {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn data(&self) -> &ObjectData {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn data_mut(&mut self) -> &mut ObjectData {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn set_user_data(&mut self, user_data: Box<dyn Any + 'static>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn material(&self) -> Rc<RefCell<Box<dyn Material + 'static>>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn Material + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn lines_width(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn lines_color(&self) -> Option<Point3<f32>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn points_size(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn surface_rendering_activation(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn mesh(&self) -> &Rc<RefCell<Mesh>> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn read_vertices<F: FnMut(&[Point3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn recompute_normals(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn modify_normals<F: FnMut(&mut Vec<Vector3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn read_normals<F: FnMut(&[Vector3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/scene/planar_object.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct PlanarObjectData {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 16 |     material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>,
[INFO] [stdout] 17 |     texture: Rc<Texture>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 18 |     color: Point3<f32>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     lines_color: Option<Point3<f32>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 20 |     wlines: f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 21 |     wpoints: f32,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 22 |     draw_surface: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 23 |     cull: bool,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 24 |     user_data: Box<dyn Any + 'static>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/scene/planar_object.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl PlanarObjectData {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] 28 |     #[inline]
[INFO] [stdout] 29 |     pub fn texture(&self) -> &Rc<Texture> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn color(&self) -> &Point3<f32> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn lines_width(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn lines_color(&self) -> Option<&Point3<f32>> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn points_size(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn surface_rendering_active(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn backface_culling_enabled(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn user_data(&self) -> &dyn Any {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/scene/planar_object.rs:76:12
[INFO] [stdout]     |
[INFO] [stdout] 74  | impl PlanarObject {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 75  |     #[doc(hidden)]
[INFO] [stdout] 76  |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn data(&self) -> &PlanarObjectData {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn data_mut(&mut self) -> &mut PlanarObjectData {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_user_data(&mut self, user_data: Box<dyn Any + 'static>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn material(&self) -> Rc<RefCell<Box<dyn PlanarMaterial + 'static>>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn lines_width(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn lines_color(&self) -> Option<&Point3<f32>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn points_size(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn surface_rendering_activation(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn mesh(&self) -> &Rc<RefCell<PlanarMesh>> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn read_vertices<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn set_color(&mut self, r: f32, g: f32, b: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/scene_node.rs:45:8
[INFO] [stdout]     |
[INFO] [stdout] 40  | impl SceneNodeData {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45  |     fn remove_from_parent(&mut self, to_remove: &SceneNode) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53  |     fn remove(&mut self, o: &SceneNode) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     pub fn has_object(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn object(&self) -> Option<&Object> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn object_mut(&mut self) -> Option<&mut Object> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn get_object(&self) -> &Object {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn get_object_mut(&mut self) -> &mut Object {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn Material + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn set_material_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn read_vertices<F: FnMut(&[Point3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn recompute_normals(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn modify_normals<F: FnMut(&mut Vec<Vector3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn read_normals<F: FnMut(&[Vector3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn is_visible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn set_visible(&mut self, visible: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn set_texture_from_memory(&mut self, image_data: &[u8], name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn apply_to_objects<F: FnMut(&Object)>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn set_local_scale(&mut self, sx: f32, sy: f32, sz: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn local_scale(&self) -> Vector3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn reorient(&mut self, eye: &Point3<f32>, at: &Point3<f32>, up: &Vector3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn local_transformation(&self) -> Isometry3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn inverse_local_transformation(&self) -> Isometry3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn world_transformation(&self) -> Isometry3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 336 |     pub fn inverse_world_transformation(&self) -> Isometry3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn append_transformation(&mut self, t: &Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn prepend_to_local_transformation(&mut self, t: &Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn set_local_transformation(&mut self, t: Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn local_translation(&self) -> Translation3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn inverse_local_translation(&self) -> Translation3<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn prepend_to_local_translation(&mut self, t: &Translation3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn local_rotation(&self) -> UnitQuaternion<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn inverse_local_rotation(&self) -> UnitQuaternion<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |     pub fn append_rotation(&mut self, r: &UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     pub fn append_rotation_wrt_center(&mut self, r: &UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn set_local_rotation(&mut self, r: UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 436 |     fn update(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     pub fn is_fixed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/scene_node.rs:507:12
[INFO] [stdout]     |
[INFO] [stdout] 475 | impl SceneNode {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 507 |     pub fn is_fixed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub fn unlink(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 525 |     pub fn add_group(&mut self) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 564 |     pub fn add_sphere(&mut self, r: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn add_cone(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn add_cylinder(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 582 |     pub fn add_capsule(&mut self, r: f32, h: f32) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 589 |     pub fn add_quad(&mut self, w: f32, h: f32, usubdivs: usize, vsubdivs: usize) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 599 |     pub fn add_quad_with_vertices(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 629 |     pub fn add_trimesh(&mut self, descr: TriMesh<f32>, scale: Vector3<f32>) -> SceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 761 |     pub fn apply_to_scene_nodes_mut<F: FnMut(&mut SceneNode)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 770 |     pub fn apply_to_scene_nodes<F: FnMut(&SceneNode)>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 778 |     pub fn render(&mut self, pass: usize, camera: &mut dyn Camera, light: &Light) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 783 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn Material + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 788 |     pub fn set_material_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 793 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 798 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 803 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 808 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 813 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 818 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 823 |     pub fn read_vertices<F: FnMut(&[Point3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 828 |     pub fn recompute_normals(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 833 |     pub fn modify_normals<F: FnMut(&mut Vec<Vector3<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 838 |     pub fn read_normals<F: FnMut(&[Vector3<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 843 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 848 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 853 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 858 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 863 |     pub fn is_visible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 868 |     pub fn set_visible(&mut self, visible: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 878 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 882 |     pub fn set_texture_from_memory(&mut self, image_data: &[u8], name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 887 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 896 |     pub fn set_local_scale(&mut self, sx: f32, sy: f32, sz: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 901 |     pub fn reorient(&mut self, eye: &Point3<f32>, at: &Point3<f32>, up: &Vector3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 906 |     pub fn append_transformation(&mut self, t: &Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 911 |     pub fn prepend_to_local_transformation(&mut self, t: &Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 916 |     pub fn set_local_transformation(&mut self, t: Isometry3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 926 |     pub fn prepend_to_local_translation(&mut self, t: &Translation3<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 936 |     pub fn append_rotation(&mut self, r: &UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 941 |     pub fn append_rotation_wrt_center(&mut self, r: &UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 951 |     pub fn set_local_rotation(&mut self, r: UnitQuaternion<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parent` is never read
[INFO] [stdout]   --> src/scene/planar_scene_node.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct PlanarSceneNodeData {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     parent: Option<*const RefCell<PlanarSceneNodeData>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/planar_scene_node.rs:36:8
[INFO] [stdout]     |
[INFO] [stdout] 35  | impl PlanarSceneNodeData {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] 36  |     fn set_parent(&mut self, parent: *const RefCell<PlanarSceneNodeData>) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40  |     fn remove_from_parent(&mut self, to_remove: &PlanarSceneNode) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47  |     fn remove(&mut self, o: &PlanarSceneNode) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58  |     pub fn has_object(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63  |     pub fn is_root(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn object(&self) -> Option<&PlanarObject> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn object_mut(&mut self) -> Option<&mut PlanarObject> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_object(&self) -> &PlanarObject {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_object_mut(&mut self) -> &mut PlanarObject {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn set_material_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn read_vertices<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn is_visible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn set_visible(&mut self, visible: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn set_color(&mut self, r: f32, g: f32, b: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn set_texture_from_memory(&mut self, image_data: &[u8], name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn apply_to_objects_mut<F: FnMut(&mut PlanarObject)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn apply_to_objects<F: FnMut(&PlanarObject)>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn set_local_scale(&mut self, sx: f32, sy: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn local_scale(&self) -> Vector2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn local_transformation(&self) -> Isometry2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn inverse_local_transformation(&self) -> Isometry2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn world_transformation(&self) -> Isometry2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn inverse_world_transformation(&self) -> Isometry2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn append_transformation(&mut self, t: &Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn prepend_to_local_transformation(&mut self, t: &Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub fn set_local_transformation(&mut self, t: Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn local_translation(&self) -> Translation2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn inverse_local_translation(&self) -> Translation2<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn append_translation(&mut self, t: &Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     pub fn prepend_to_local_translation(&mut self, t: &Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn set_local_translation(&mut self, t: Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn local_rotation(&self) -> UnitComplex<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn inverse_local_rotation(&self) -> UnitComplex<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn append_rotation(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn append_rotation_wrt_center(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn prepend_to_local_rotation(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn set_local_rotation(&mut self, r: UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     fn invalidate(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     fn update(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/scene/planar_scene_node.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 412 | impl PlanarSceneNode {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn unlink(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub fn data(&self) -> Ref<PlanarSceneNodeData> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 453 |     pub fn add_group(&mut self) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn add_child(&mut self, node: PlanarSceneNode) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn add_object(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     pub fn add_rectangle(&mut self, wx: f32, wy: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 491 |     pub fn add_circle(&mut self, r: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 497 |     pub fn add_capsule(&mut self, r: f32, h: f32) -> PlanarSceneNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 540 |     pub fn add_geom_with_name(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn add_mesh(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     pub fn add_convex_polygon(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 581 |     pub fn apply_to_scene_nodes_mut<F: FnMut(&mut PlanarSceneNode)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn apply_to_scene_nodes<F: FnMut(&PlanarSceneNode)>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     pub fn render(&mut self, camera: &mut dyn PlanarCamera) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 603 |     pub fn set_material(&mut self, material: Rc<RefCell<Box<dyn PlanarMaterial + 'static>>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 608 |     pub fn set_material_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 613 |     pub fn set_lines_width(&mut self, width: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |     pub fn set_lines_color(&mut self, color: Option<Point3<f32>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     pub fn set_points_size(&mut self, size: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 628 |     pub fn set_surface_rendering_activation(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 633 |     pub fn enable_backface_culling(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 638 |     pub fn modify_vertices<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 643 |     pub fn read_vertices<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 648 |     pub fn modify_faces<F: FnMut(&mut Vec<Point3<VertexIndex>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 653 |     pub fn read_faces<F: FnMut(&[Point3<VertexIndex>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 658 |     pub fn modify_uvs<F: FnMut(&mut Vec<Point2<f32>>)>(&mut self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 663 |     pub fn read_uvs<F: FnMut(&[Point2<f32>])>(&self, f: &mut F) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 668 |     pub fn is_visible(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 673 |     pub fn set_visible(&mut self, visible: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 678 |     pub fn set_color(&mut self, r: f32, g: f32, b: f32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 683 |     pub fn set_texture_from_file(&mut self, path: &Path, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 687 |     pub fn set_texture_from_memory(&mut self, image_data: &[u8], name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 692 |     pub fn set_texture_with_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     pub fn set_texture(&mut self, texture: Rc<Texture>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 701 |     pub fn set_local_scale(&mut self, sx: f32, sy: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 706 |     pub fn append_transformation(&mut self, t: &Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 711 |     pub fn prepend_to_local_transformation(&mut self, t: &Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     pub fn set_local_transformation(&mut self, t: Isometry2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 721 |     pub fn append_translation(&mut self, t: &Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     pub fn prepend_to_local_translation(&mut self, t: &Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 731 |     pub fn set_local_translation(&mut self, t: Translation2<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 736 |     pub fn append_rotation(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 741 |     pub fn append_rotation_wrt_center(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 746 |     pub fn prepend_to_local_rotation(&mut self, r: &UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 751 |     pub fn set_local_rotation(&mut self, r: UnitComplex<f32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlanarObjectMaterial` is never constructed
[INFO] [stdout]   --> src/builtin/planar_object_material.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct PlanarObjectMaterial {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `activate`, and `deactivate` are never used
[INFO] [stdout]   --> src/builtin/planar_object_material.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl PlanarObjectMaterial {
[INFO] [stdout]    | ------------------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new() -> PlanarObjectMaterial {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     fn activate(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn deactivate(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `OBJECT_VERTEX_SRC` is never used
[INFO] [stdout]    --> src/builtin/planar_object_material.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | static OBJECT_VERTEX_SRC: &str = A_VERY_LONG_STRING;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `OBJECT_FRAGMENT_SRC` is never used
[INFO] [stdout]    --> src/builtin/planar_object_material.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | static OBJECT_FRAGMENT_SRC: &str = ANOTHER_VERY_LONG_STRING;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A_VERY_LONG_STRING` is never used
[INFO] [stdout]    --> src/builtin/planar_object_material.rs:151:7
[INFO] [stdout]     |
[INFO] [stdout] 151 | const A_VERY_LONG_STRING: &str = "#version 100
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ANOTHER_VERY_LONG_STRING` is never used
[INFO] [stdout]    --> src/builtin/planar_object_material.rs:168:7
[INFO] [stdout]     |
[INFO] [stdout] 168 | const ANOTHER_VERY_LONG_STRING: &str = "#version 100
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `needs_rendering` and `set_line_width` are never used
[INFO] [stdout]   --> src/renderer/line_renderer.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl LineRenderer {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn needs_rendering(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn set_line_width(&mut self, line_width: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `needs_rendering`, `set_point_size`, and `draw_point` are never used
[INFO] [stdout]   --> src/renderer/point_renderer.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl PointRenderer {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn needs_rendering(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn set_point_size(&mut self, pt_size: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn draw_point(&mut self, pt: Point3<f32>, color: Point3<f32>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unproject` is never used
[INFO] [stdout]   --> src/planar_camera/planar_camera.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub trait PlanarCamera {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn unproject(&self, window_coord: &Point2<f32>, window_size: &Vector2<f32>) -> Point2<f32>;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sidescroll` is never constructed
[INFO] [stdout]   --> src/planar_camera/sidescroll.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Sidescroll {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/planar_camera/sidescroll.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl Sidescroll {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 25 |     pub fn new() -> Sidescroll {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn at(&self) -> Point2<f32> {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn set_at(&mut self, at: Point2<f32>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn zoom(&self) -> f32 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn set_zoom(&mut self, zoom: f32) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn look_at(&mut self, at: Point2<f32>, zoom: f32) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn update_restrictions(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn drag_button(&self) -> Option<MouseButton> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn rebind_drag_button(&mut self, new_button: Option<MouseButton>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     fn handle_right_button_displacement(&mut self, dpos: &Vector2<f32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     fn handle_scroll(&mut self, off: f32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     fn update_projviews(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Grayscales` is never constructed
[INFO] [stdout]   --> src/post_processing/grayscales.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Grayscales {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/post_processing/grayscales.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Grayscales {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Grayscales {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VERTEX_SHADER` is never used
[INFO] [stdout]   --> src/post_processing/grayscales.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | static VERTEX_SHADER: &str = "#version 100
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FRAGMENT_SHADER` is never used
[INFO] [stdout]   --> src/post_processing/grayscales.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | static FRAGMENT_SHADER: &str = "#version 100
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OculusStereo` is never constructed
[INFO] [stdout]   --> src/post_processing/oculus_stereo.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct OculusStereo {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/post_processing/oculus_stereo.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl OculusStereo {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 26 |     pub fn new() -> OculusStereo {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VERTEX_SHADER` is never used
[INFO] [stdout]    --> src/post_processing/oculus_stereo.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | static VERTEX_SHADER: &str = "
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FRAGMENT_SHADER` is never used
[INFO] [stdout]    --> src/post_processing/oculus_stereo.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | static FRAGMENT_SHADER: &str = "
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SobelEdgeHighlight` is never constructed
[INFO] [stdout]   --> src/post_processing/sobel_edge_highlight.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SobelEdgeHighlight {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/post_processing/sobel_edge_highlight.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl SobelEdgeHighlight {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 29 |     pub fn new(threshold: f32) -> SobelEdgeHighlight {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VERTEX_SHADER` is never used
[INFO] [stdout]    --> src/post_processing/sobel_edge_highlight.rs:109:8
[INFO] [stdout]     |
[INFO] [stdout] 109 | static VERTEX_SHADER: &str = "#version 100
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FRAGMENT_SHADER` is never used
[INFO] [stdout]    --> src/post_processing/sobel_edge_highlight.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | static FRAGMENT_SHADER: &str = "#version 100
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Waves` is never constructed
[INFO] [stdout]   --> src/post_processing/waves.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Waves {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/post_processing/waves.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Waves {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new() -> Waves {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VERTEX_SHADER` is never used
[INFO] [stdout]   --> src/post_processing/waves.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | static VERTEX_SHADER: &str = "#version 100
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FRAGMENT_SHADER` is never used
[INFO] [stdout]   --> src/post_processing/waves.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | static FRAGMENT_SHADER: &str = "#version 100
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `draw_line` and `set_line_width` are never used
[INFO] [stdout]   --> src/planar_line_renderer.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl PlanarLineRenderer {
[INFO] [stdout]    | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn draw_line(&mut self, a: Point2<f32>, b: Point2<f32>, color: Point3<f32>) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn set_line_width(&mut self, line_width: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/loader/obj.rs:28:23
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn split_words(s: &str) -> Words {
[INFO] [stdout]    |                       ^^^^     ----- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn split_words(s: &str) -> Words<'_> {
[INFO] [stdout]    |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/context/context.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 | /             CONTEXT_SINGLETON
[INFO] [stdout] 116 | |                 .clone()
[INFO] [stdout]     | |________________________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/event/event_manager.rs:25:43
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn new(value: WindowEvent, inhibitor: &RefCell<Vec<WindowEvent>>) -> Event {
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^     ----- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                                           |
[INFO] [stdout]    |                                           this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn new(value: WindowEvent, inhibitor: &RefCell<Vec<WindowEvent>>) -> Event<'_> {
[INFO] [stdout]    |                                                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/event/event_manager.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn iter(&mut self) -> Events {
[INFO] [stdout]    |                 ^^^^^^^^^     ------ the lifetime gets resolved as `'_`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn iter(&mut self) -> Events<'_> {
[INFO] [stdout]    |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Shift` should have an upper case name
[INFO] [stdout]    --> src/event/window_event.rs:235:15
[INFO] [stdout]     |
[INFO] [stdout] 235 |         const Shift       = 0b0001;
[INFO] [stdout]     |               ^^^^^ help: convert the identifier to upper case: `SHIFT`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Control` should have an upper case name
[INFO] [stdout]    --> src/event/window_event.rs:236:15
[INFO] [stdout]     |
[INFO] [stdout] 236 |         const Control     = 0b0010;
[INFO] [stdout]     |               ^^^^^^^ help: convert the identifier to upper case: `CONTROL`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Alt` should have an upper case name
[INFO] [stdout]    --> src/event/window_event.rs:237:15
[INFO] [stdout]     |
[INFO] [stdout] 237 |         const Alt         = 0b0100;
[INFO] [stdout]     |               ^^^ help: convert the identifier to upper case: `ALT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `Super` should have an upper case name
[INFO] [stdout]    --> src/event/window_event.rs:238:15
[INFO] [stdout]     |
[INFO] [stdout] 238 |         const Super       = 0b1000;
[INFO] [stdout]     |               ^^^^^ help: convert the identifier to upper case: `SUPER`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/text/font.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             DEFAULT_FONT_SINGLETON.clone().unwrap()
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/scene_node.rs:517:17
[INFO] [stdout]     |
[INFO] [stdout] 517 |     pub fn data(&self) -> Ref<SceneNodeData> {
[INFO] [stdout]     |                 ^^^^^     ------------------ the lifetime gets resolved as `'_`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 517 |     pub fn data(&self) -> Ref<'_, SceneNodeData> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/scene_node.rs:521:21
[INFO] [stdout]     |
[INFO] [stdout] 521 |     pub fn data_mut(&mut self) -> RefMut<SceneNodeData> {
[INFO] [stdout]     |                     ^^^^^^^^^     --------------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 521 |     pub fn data_mut(&mut self) -> RefMut<'_, SceneNodeData> {
[INFO] [stdout]     |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/planar_scene_node.rs:445:17
[INFO] [stdout]     |
[INFO] [stdout] 445 |     pub fn data(&self) -> Ref<PlanarSceneNodeData> {
[INFO] [stdout]     |                 ^^^^^     ------------------------ the lifetime gets resolved as `'_`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 445 |     pub fn data(&self) -> Ref<'_, PlanarSceneNodeData> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/planar_scene_node.rs:449:21
[INFO] [stdout]     |
[INFO] [stdout] 449 |     pub fn data_mut(&mut self) -> RefMut<PlanarSceneNodeData> {
[INFO] [stdout]     |                     ^^^^^^^^^     --------------------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 449 |     pub fn data_mut(&mut self) -> RefMut<'_, PlanarSceneNodeData> {
[INFO] [stdout]     |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 10s
[INFO] running `Command { std: "docker" "inspect" "568440dbfb3204a1145d2c204226c46b4b977ba9b921caf0f872cfdeb9576463", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "568440dbfb3204a1145d2c204226c46b4b977ba9b921caf0f872cfdeb9576463", kill_on_drop: false }`
[INFO] [stdout] 568440dbfb3204a1145d2c204226c46b4b977ba9b921caf0f872cfdeb9576463
