[INFO] cloning repository https://github.com/tobymoreno/ascii-3d
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tobymoreno/ascii-3d" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftobymoreno%2Fascii-3d", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftobymoreno%2Fascii-3d'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c5db540d39acef1da278b20c1143ae0ce119d980
[INFO] checking tobymoreno/ascii-3d against 49a6044d37d694890450f52ceaceb66277a36b1e for pr-161154
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftobymoreno%2Fascii-3d" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tobymoreno/ascii-3d
[INFO] finished tweaking git repo https://github.com/tobymoreno/ascii-3d
[INFO] tweaked toml for git repo https://github.com/tobymoreno/ascii-3d written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tobymoreno/ascii-3d on toolchain 49a6044d37d694890450f52ceaceb66277a36b1e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tobymoreno/ascii-3d 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" "+49a6044d37d694890450f52ceaceb66277a36b1e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b
[INFO] running `Command { std: "docker" "start" "6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b" "/opt/rustwide/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b" "/opt/rustwide/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling wayland-sys v0.31.11
[INFO] [stderr]    Compiling bytemuck_derive v1.11.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]    Compiling quick-xml v0.39.4
[INFO] [stderr]     Checking arrayvec v0.7.8
[INFO] [stderr]    Compiling zerocopy v0.8.54
[INFO] [stderr]    Compiling zerocopy-derive v0.8.54
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking polycool v0.4.0
[INFO] [stderr]    Compiling naga v29.0.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling wayland-scanner v0.31.10
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]    Compiling cc v1.2.66
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking font-types v0.11.3
[INFO] [stderr]     Checking color v0.3.3
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]     Checking euclid v0.22.14
[INFO] [stderr]     Checking kurbo v0.13.1
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking memmap2 v0.9.11
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]     Checking simd-adler32 v0.3.10
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]    Compiling wayland-backend v0.3.15
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]     Checking peniko v0.6.1
[INFO] [stderr]     Checking guillotiere v0.7.0
[INFO] [stderr]     Checking read-fonts v0.39.2
[INFO] [stderr]     Checking wgpu-types v29.0.4
[INFO] [stderr]    Compiling wgpu-hal v29.0.4
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking fearless_simd v0.4.1
[INFO] [stderr]     Checking presser v0.3.1
[INFO] [stderr]    Compiling unicode-general-category v1.1.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]     Checking wayland-client v0.31.14
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking gpu-allocator v0.28.0
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking wayland-protocols v0.32.13
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking wayland-cursor v0.31.14
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]     Checking emath v0.35.0
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking glow v0.17.0
[INFO] [stderr]    Compiling bindgen v0.72.1
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.10
[INFO] [stderr]     Checking compact_str v0.9.1
[INFO] [stderr]     Checking vello_common v0.0.9
[INFO] [stderr]     Checking strum v0.28.0
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]     Checking nix v0.24.3
[INFO] [stderr]     Checking ecolor v0.35.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking vello_cpu v0.0.9
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]     Checking harfrust v0.7.0
[INFO] [stderr]     Checking skrifa v0.42.1
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]     Checking calloop v0.14.4
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking lru v0.18.0
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.12
[INFO] [stderr]     Checking unicode-truncate v2.0.1
[INFO] [stderr]     Checking kasuari v0.4.12
[INFO] [stderr]    Compiling wgpu-core v29.0.4
[INFO] [stderr]    Compiling winit v0.30.13
[INFO] [stderr]     Checking epaint_default_fonts v0.35.0
[INFO] [stderr]    Compiling rustc-hash v2.1.3
[INFO] [stderr]     Checking pxfm v0.1.30
[INFO] [stderr]    Compiling smithay-client-toolkit v0.20.0
[INFO] [stderr]     Checking self_cell v1.3.0
[INFO] [stderr]     Checking critical-section v1.2.0
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]     Checking uuid v1.23.4
[INFO] [stderr]     Checking accesskit v0.24.1
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking epaint v0.35.0
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]     Checking ratatui-core v0.1.2
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.12
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.12
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]     Checking wayland-commons v0.29.5
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]    Compiling wgpu v29.0.4
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]     Checking time v0.3.53
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking wgpu-naga-bridge v29.0.4
[INFO] [stderr]     Checking egui v0.35.0
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]     Checking line-clipping v0.3.7
[INFO] [stderr]     Checking type-map v0.5.1
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]     Checking ratatui-widgets v0.3.2
[INFO] [stderr]     Checking webbrowser v1.2.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]    Compiling minifb v0.28.0
[INFO] [stderr]    Compiling rfd v0.17.2
[INFO] [stderr]     Checking pollster v0.4.0
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking ratatui-macros v0.7.2
[INFO] [stderr]     Checking ratatui-crossterm v0.1.2
[INFO] [stderr]     Checking wayland-cursor v0.29.5
[INFO] [stderr]    Compiling seq-macro v0.3.6
[INFO] [stderr]     Checking memchr v2.8.2
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking wgpu-core-deps-windows-linux-android v29.0.4
[INFO] [stderr]    Compiling raylib-sys v6.0.0
[INFO] [stderr]     Checking ratatui v0.30.2
[INFO] [stderr]     Checking earcutr v0.5.0
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking egui-winit v0.35.0
[INFO] [stderr]     Checking egui-wgpu v0.35.0
[INFO] [stderr]     Checking eframe v0.35.0
[INFO] [stderr]     Checking raylib v6.0.0
[INFO] [stderr]     Checking ascii-3d v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `overlap`
[INFO] [stdout]    --> src/native_editor/clouds.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 154 |         for overlap in 0..overlap_count {
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_overlap`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `overlap`
[INFO] [stdout]    --> src/native_editor/clouds.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 154 |         for overlap in 0..overlap_count {
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_overlap`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `look_at` is never used
[INFO] [stdout]    --> src/native_editor/app.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl NativeCamera {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 119 |     fn look_at(&mut self, target: Vec3) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ViewportLine` is never constructed
[INFO] [stdout]    --> src/native_editor/app.rs:165:19
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub(crate) struct ViewportLine {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `viewport_lines` is never used
[INFO] [stdout]     --> src/native_editor/app.rs:1533:19
[INFO] [stdout]      |
[INFO] [stdout]  230 | impl NativeEditorApp {
[INFO] [stdout]      | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1533 |     pub(crate) fn viewport_lines(&self, width: f32, height: f32) -> Vec<ViewportLine> {
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrapped_longitude_delta` is never used
[INFO] [stdout]     --> src/native_editor/app.rs:2108:4
[INFO] [stdout]      |
[INFO] [stdout] 2108 | fn wrapped_longitude_delta(longitude: f32, reference: f32) -> f32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_puff` is never used
[INFO] [stdout]    --> src/native_editor/clouds.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn make_puff(normal: Vec3, rotation: f32, size: [f32; 2], opacity: f32, seed: f32) -> CloudPuff {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `morph` is never read
[INFO] [stdout]   --> src/native_editor/labels.rs:26:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) struct GlobeLabel {
[INFO] [stdout]    |                   ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub(crate) morph: f32,
[INFO] [stdout]    |                ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlobeLabel` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `softness` and `halo_scale` are never read
[INFO] [stdout]    --> src/native_editor/starfield.rs:203:16
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(crate) struct ViewportStar {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub(crate) softness: f32,
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub(crate) halo_scale: f32,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ViewportStar` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `process::Command`
[INFO] [stdout]  --> src/bin/macos_window_probe.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{error::Error, process::Command};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mat4::Mat4`
[INFO] [stdout]  --> src/bin/../math/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use mat4::Mat4;
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WindowBounds` is never constructed
[INFO] [stdout]  --> src/bin/macos_window_probe.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | struct WindowBounds {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unit_box_is_centered_and_normalized` is never used
[INFO] [stdout]    --> src/mesh.rs:374:8
[INFO] [stdout]     |
[INFO] [stdout] 374 |     fn unit_box_is_centered_and_normalized() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `look_at` is never used
[INFO] [stdout]    --> src/native_editor/app.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl NativeCamera {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 119 |     fn look_at(&mut self, target: Vec3) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrapped_longitude_delta` is never used
[INFO] [stdout]     --> src/native_editor/app.rs:2108:4
[INFO] [stdout]      |
[INFO] [stdout] 2108 | fn wrapped_longitude_delta(longitude: f32, reference: f32) -> f32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_puff` is never used
[INFO] [stdout]    --> src/native_editor/clouds.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn make_puff(normal: Vec3, rotation: f32, size: [f32; 2], opacity: f32, seed: f32) -> CloudPuff {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `morph` is never read
[INFO] [stdout]   --> src/native_editor/labels.rs:26:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) struct GlobeLabel {
[INFO] [stdout]    |                   ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub(crate) morph: f32,
[INFO] [stdout]    |                ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlobeLabel` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `softness` and `halo_scale` are never read
[INFO] [stdout]    --> src/native_editor/starfield.rs:203:16
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(crate) struct ViewportStar {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub(crate) softness: f32,
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub(crate) halo_scale: f32,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ViewportStar` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mat4::Mat4`
[INFO] [stdout]  --> src/bin/../math/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use mat4::Mat4;
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_raylib_overlay_demo` is never used
[INFO] [stdout]  --> src/bin/../graphics/raylib_overlay.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn spawn_raylib_overlay_demo() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_overlay_process` is never used
[INFO] [stdout]   --> src/bin/../graphics/raylib_overlay.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn spawn_overlay_process() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `overlay_command` is never used
[INFO] [stdout]   --> src/bin/../graphics/raylib_overlay.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn overlay_command() -> Command {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sibling_overlay_binary` is never used
[INFO] [stdout]   --> src/bin/../graphics/raylib_overlay.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn sibling_overlay_binary() -> Option<PathBuf> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `binary_name` is never used
[INFO] [stdout]   --> src/bin/../graphics/raylib_overlay.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn binary_name() -> &'static str {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `lerp` is never used
[INFO] [stdout]   --> src/bin/view-earth.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl Vec3 {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 97 |     fn lerp(self, other: Self, t: f32) -> Self {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `translation_vec3` is never used
[INFO] [stdout]   --> src/bin/../math/mat4.rs:33:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Mat4 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub const fn translation_vec3(translation: Vec3) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `simplify_to_target_vertices` and `write_obj` are never used
[INFO] [stdout]    --> src/bin/../mesh.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl Mesh {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn simplify_to_target_vertices(&self, target_vertices: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn write_obj(&self, path: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unit_box_is_centered_and_normalized` is never used
[INFO] [stdout]    --> src/bin/../mesh.rs:374:8
[INFO] [stdout]     |
[INFO] [stdout] 374 |     fn unit_box_is_centered_and_normalized() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_raylib_overlay_demo` is never used
[INFO] [stdout]  --> src/bin/../graphics/raylib_overlay.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn spawn_raylib_overlay_demo() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_overlay_process` is never used
[INFO] [stdout]   --> src/bin/../graphics/raylib_overlay.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn spawn_overlay_process() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `overlay_command` is never used
[INFO] [stdout]   --> src/bin/../graphics/raylib_overlay.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn overlay_command() -> Command {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sibling_overlay_binary` is never used
[INFO] [stdout]   --> src/bin/../graphics/raylib_overlay.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn sibling_overlay_binary() -> Option<PathBuf> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mat4` is never constructed
[INFO] [stdout]  --> src/bin/../math/mat4.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Mat4 {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/bin/../math/mat4.rs:11:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl Mat4 {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  11 |     pub const fn new(m: [[f32; 4]; 4]) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  15 |     pub const fn identity() -> Self {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  24 |     pub const fn translation(x: f32, y: f32, z: f32) -> Self {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub const fn translation_vec3(translation: Vec3) -> Self {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub const fn scale(x: f32, y: f32, z: f32) -> Self {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub const fn uniform_scale(scale: f32) -> Self {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn rotation_x(angle_radians: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn rotation_y(angle_radians: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn rotation_z(angle_radians: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn look_at(eye: Vec3, target: Vec3, up: Vec3) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn transform_point(self, point: Vec3) -> Vec3 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn transform_vector(self, vector: Vec3) -> Vec3 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/bin/../math/vec3.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Vec3 {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub const fn zero() -> Self {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn length_squared(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn length(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn normalized(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn dot(self, other: Self) -> f32 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn cross(self, other: Self) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn rotate_x(self, angle_radians: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn rotate_y(self, angle_radians: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn rotate_z(self, angle_radians: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MeshBounds` is never constructed
[INFO] [stdout]   --> src/bin/../mesh.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct MeshBounds {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `center`, `size`, and `largest_dimension` are never used
[INFO] [stdout]   --> src/bin/../mesh.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl MeshBounds {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 32 |     pub fn center(self) -> Vec3 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn size(self) -> Vec3 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn largest_dimension(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `unit_box`, `bounds`, `normalize_to_size`, `simplify_by_vertex_grid`, `simplify_to_target_vertices`, and `write_obj` are never used
[INFO] [stdout]    --> src/bin/../mesh.rs:59:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl Mesh {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn unit_box() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn bounds(&self) -> Option<MeshBounds> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn normalize_to_size(&mut self, target_size: f32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn simplify_by_vertex_grid(&self, grid_size: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn simplify_to_target_vertices(&self, target_vertices: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn write_obj(&self, path: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `window::run_primitives_demo`
[INFO] [stdout]  --> src/graphics/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use window::run_primitives_demo;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `process::Command`
[INFO] [stdout]  --> src/bin/macos_window_probe.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{error::Error, process::Command};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MenuItem` and `draw_menu`
[INFO] [stdout]  --> src/menu/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     MenuItem, MenuKind, MenuState, VISIBLE_MENU_KINDS, draw_menu, visible_menu_definitions,
[INFO] [stdout]   |     ^^^^^^^^                                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WindowBounds` is never constructed
[INFO] [stdout]  --> src/bin/macos_window_probe.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | struct WindowBounds {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `lerp` is never used
[INFO] [stdout]   --> src/bin/view-earth.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl Vec3 {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 97 |     fn lerp(self, other: Self, t: f32) -> Self {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scenes::Scene`
[INFO] [stdout]     --> src/app.rs:4798:9
[INFO] [stdout]      |
[INFO] [stdout] 4798 |     use crate::scenes::Scene;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `window::run_primitives_demo`
[INFO] [stdout]  --> src/graphics/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use window::run_primitives_demo;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MenuItem` and `draw_menu`
[INFO] [stdout]  --> src/menu/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     MenuItem, MenuKind, MenuState, VISIBLE_MENU_KINDS, draw_menu, visible_menu_definitions,
[INFO] [stdout]   |     ^^^^^^^^                                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ViewportRect` is never constructed
[INFO] [stdout]   --> src/app.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | struct ViewportRect {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CAMERA_VIEWPORT` is never used
[INFO] [stdout]   --> src/app.rs:94:7
[INFO] [stdout]    |
[INFO] [stdout] 94 | const CAMERA_VIEWPORT: ViewportRect = ViewportRect {
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `menu_kind_for_hotkey` is never used
[INFO] [stdout]    --> src/app.rs:317:4
[INFO] [stdout]     |
[INFO] [stdout] 317 | fn menu_kind_for_hotkey(key_code: KeyCode) -> Option<crate::menu::MenuKind> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/app.rs:783:8
[INFO] [stdout]      |
[INFO] [stdout]  569 | impl AppState {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  783 |     fn glyph_stroke_position(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  787 |     fn glyph_stroke_character_count(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  835 |     fn toggle_menu_bar(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  843 |     fn open_menu_for_hotkey(&mut self, key_code: KeyCode) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1195 |     fn loaded_a3d_manifest_path_for_edit(&self) -> Option<PathBuf> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1203 |     fn edit_loaded_a3d_manifest<F>(&mut self, edit: F) -> bool
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1299 |     fn reset_loaded_a3d_world_object(&mut self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1492 |     fn sync_loaded_a3d_editor_objects(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_default_a3d_world` is never used
[INFO] [stdout]     --> src/app.rs:1715:4
[INFO] [stdout]      |
[INFO] [stdout] 1715 | fn load_default_a3d_world() -> io::Result<LoadedWorld> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_frame` is never used
[INFO] [stdout]     --> src/app.rs:1823:4
[INFO] [stdout]      |
[INFO] [stdout] 1823 | fn write_frame(output: &mut impl Write, frame: &str) -> io::Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_horizontal_span` is never used
[INFO] [stdout]     --> src/app.rs:1842:4
[INFO] [stdout]      |
[INFO] [stdout] 1842 | fn draw_horizontal_span(canvas: &mut Canvas, y: i32, character: char) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_viewport_content_rect` is never used
[INFO] [stdout]     --> src/app.rs:1850:4
[INFO] [stdout]      |
[INFO] [stdout] 1850 | fn camera_viewport_content_rect() -> ClipRect {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_camera_viewport` is never used
[INFO] [stdout]     --> src/app.rs:2265:4
[INFO] [stdout]      |
[INFO] [stdout] 2265 | fn draw_camera_viewport(canvas: &mut Canvas, state: &AppState) -> io::Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loaded_a3d_object_render_usize` is never used
[INFO] [stdout]     --> src/app.rs:2394:4
[INFO] [stdout]      |
[INFO] [stdout] 2394 | fn loaded_a3d_object_render_usize(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_loaded_a3d_light_gizmos` is never used
[INFO] [stdout]     --> src/app.rs:2501:4
[INFO] [stdout]      |
[INFO] [stdout] 2501 | fn draw_loaded_a3d_light_gizmos(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross_vec3` is never used
[INFO] [stdout]     --> src/app.rs:2623:4
[INFO] [stdout]      |
[INFO] [stdout] 2623 | fn cross_vec3(a: Vec3, b: Vec3) -> Vec3 {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_vec3` is never used
[INFO] [stdout]     --> src/app.rs:2631:4
[INFO] [stdout]      |
[INFO] [stdout] 2631 | fn normalize_vec3(value: Vec3) -> Option<Vec3> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `edge_function` is never used
[INFO] [stdout]     --> src/app.rs:2641:4
[INFO] [stdout]      |
[INFO] [stdout] 2641 | fn edge_function(a: Point2, b: Point2, point: Point2) -> f32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_loaded_a3d_world` is never used
[INFO] [stdout]     --> src/app.rs:2982:4
[INFO] [stdout]      |
[INFO] [stdout] 2982 | fn render_loaded_a3d_world(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `world_objects_popup_lines` is never used
[INFO] [stdout]     --> src/app.rs:3665:4
[INFO] [stdout]      |
[INFO] [stdout] 3665 | fn world_objects_popup_lines(state: &AppState) -> Option<Vec<String>> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loaded_a3d_debug_popup_lines` is never used
[INFO] [stdout]     --> src/app.rs:3702:4
[INFO] [stdout]      |
[INFO] [stdout] 3702 | fn loaded_a3d_debug_popup_lines(state: &AppState) -> Option<Vec<String>> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace_command_event` is never used
[INFO] [stdout]     --> src/app.rs:3918:4
[INFO] [stdout]      |
[INFO] [stdout] 3918 | fn trace_command_event(state: &mut AppState, route: &str, command: AppCommand) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `describe_key_code_for_debug_console` is never used
[INFO] [stdout]     --> src/app.rs:3931:4
[INFO] [stdout]      |
[INFO] [stdout] 3931 | fn describe_key_code_for_debug_console(key_code: KeyCode) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_key_debug_trace` is never used
[INFO] [stdout]     --> src/app.rs:3954:4
[INFO] [stdout]      |
[INFO] [stdout] 3954 | fn push_key_debug_trace(state: &mut AppState, route: &str, key_code: KeyCode) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_command_debug_trace` is never used
[INFO] [stdout]     --> src/app.rs:3968:4
[INFO] [stdout]      |
[INFO] [stdout] 3968 | fn push_command_debug_trace(state: &mut AppState, route: &str, command: AppCommand) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]   --> src/canvas.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl Canvas {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty` and `len` are never used
[INFO] [stdout]   --> src/curves/cubic_bezier.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl SampledCurve3 {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] 13 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `tangent_at` and `direction_at` are never used
[INFO] [stdout]   --> src/curves/cubic_bezier.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl CubicBezier3 {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn tangent_at(self, t: f32) -> Vec3 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn direction_at(self, t: f32) -> Option<Vec3> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `closed` are never read
[INFO] [stdout]   --> src/glyphs/mod.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct GlyphPath {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 32 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 33 |     pub closed: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphPath` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `version` are never read
[INFO] [stdout]   --> src/glyphs/mod.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct GlyphMetadata {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 54 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 55 |     pub version: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `show_labels` is never read
[INFO] [stdout]   --> src/glyphs/mod.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct GlyphDisplay {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub show_labels: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphDisplay` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `child_type` is never read
[INFO] [stdout]   --> src/glyphs/mod.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct WordChild {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub child_type: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WordChild` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `version` are never read
[INFO] [stdout]   --> src/glyphs/mod.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct WordMetadata {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 94 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 95 |     pub version: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WordMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stroke_character`, `show_glyph_bounds`, and `glyph_bounds_character` are never read
[INFO] [stdout]    --> src/glyphs/mod.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct WordDisplay {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] 101 |     pub stroke_character: char,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub show_glyph_bounds: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 105 |     pub glyph_bounds_character: char,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WordDisplay` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_word` is never used
[INFO] [stdout]    --> src/glyphs/mod.rs:320:8
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub fn render_word(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rgb` is never constructed
[INFO] [stdout]  --> src/graphics/primitives.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Rgb(pub u8, pub u8, pub u8);
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/graphics/primitives.rs:5:15
[INFO] [stdout]    |
[INFO] [stdout]  4 | impl Rgb {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout]  5 |     pub const BLACK: Self = Self(0, 0, 0);
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout]  6 |     pub const GREEN: Self = Self(80, 255, 120);
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout]  7 |     pub const WHITE: Self = Self(230, 230, 230);
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout]  8 |     pub const BLUE: Self = Self(90, 160, 255);
[INFO] [stdout]    |               ^^^^
[INFO] [stdout]  9 |     pub const RED: Self = Self(255, 90, 90);
[INFO] [stdout]    |               ^^^
[INFO] [stdout] 10 |     pub const YELLOW: Self = Self(255, 220, 80);
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 11 |
[INFO] [stdout] 12 |     pub fn to_u32(self) -> u32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PixelSurface` is never constructed
[INFO] [stdout]   --> src/graphics/primitives.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct PixelSurface {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/graphics/primitives.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl PixelSurface {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  27 |     pub fn new(width: usize, height: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn width(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn height(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn buffer(&self) -> &[u32] {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     pub fn clear(&mut self, color: Rgb) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn set_pixel(&mut self, x: i32, y: i32, color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn draw_line(&mut self, start: (i32, i32), end: (i32, i32), color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn draw_rect(&mut self, x: i32, y: i32, width: i32, height: i32, color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn fill_rect(&mut self, x: i32, y: i32, width: i32, height: i32, color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn draw_circle(&mut self, center_x: i32, center_y: i32, radius: i32, color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn draw_polyline(&mut self, points: &[(i32, i32)], color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WIDTH` is never used
[INFO] [stdout]  --> src/graphics/window.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const WIDTH: usize = 960;
[INFO] [stdout]   |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEIGHT` is never used
[INFO] [stdout]  --> src/graphics/window.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const HEIGHT: usize = 540;
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_primitives_demo` is never used
[INFO] [stdout]   --> src/graphics/window.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn run_primitives_demo() -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_demo_frame` is never used
[INFO] [stdout]   --> src/graphics/window.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn draw_demo_frame(surface: &mut PixelSurface, elapsed: f32) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotated_box_points` is never used
[INFO] [stdout]   --> src/graphics/window.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn rotated_box_points(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyBinding` is never constructed
[INFO] [stdout]  --> src/input/binding.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct KeyBinding {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ResetWorldCamera`, `ToggleCameraDebug`, `ResetCamera`, and `ToggleNearPlaneDebug` are never constructed
[INFO] [stdout]   --> src/input/command.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum AppCommand {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     ResetWorldCamera,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     ToggleCameraDebug,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     ResetCamera,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 66 |     ToggleNearPlaneDebug,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `bindings` are never used
[INFO] [stdout]    --> src/menu/model.rs:165:18
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl MenuState {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 165 |     pub const fn new(kind: MenuKind) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn bindings() -> &'static [KeyBinding] {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MENU_BINDINGS` is never used
[INFO] [stdout]    --> src/menu/model.rs:341:7
[INFO] [stdout]     |
[INFO] [stdout] 341 | const MENU_BINDINGS: &[KeyBinding] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_menu` is never used
[INFO] [stdout]    --> src/menu/model.rs:364:8
[INFO] [stdout]     |
[INFO] [stdout] 364 | pub fn draw_menu(canvas: &mut Canvas, state: &MenuState, origin: Point2) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `unit_box`, `simplify_by_vertex_grid`, `simplify_to_target_vertices`, and `write_obj` are never used
[INFO] [stdout]    --> src/mesh.rs:59:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl Mesh {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn unit_box() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn simplify_by_vertex_grid(&self, grid_size: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn simplify_to_target_vertices(&self, target_vertices: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn write_obj(&self, path: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/projection.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl ObliqueProjector {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn new(screen_origin: Point2) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `notes` is never read
[INFO] [stdout]   --> src/projection_config.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct ProjectionConfig {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub notes: Vec<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProjectionConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scene_at` is never used
[INFO] [stdout]    --> src/scenes/mod.rs:345:8
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub fn scene_at(index: usize) -> Scene {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CAMERA_GIZMO_SCREEN_LEG` is never used
[INFO] [stdout]   --> src/scenes/world_camera_spaces.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const CAMERA_GIZMO_SCREEN_LEG: f32 = 10.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `top_right_rect` is never used
[INFO] [stdout]    --> src/tui/mod.rs:187:4
[INFO] [stdout]     |
[INFO] [stdout] 187 | fn top_right_rect(width: u16, height: u16, area: Rect) -> Rect {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SceneWorkspace` is never used
[INFO] [stdout]   --> src/workspace/mod.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub trait SceneWorkspace {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WorkspaceEvent` is never used
[INFO] [stdout]  --> src/workspace/event.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum WorkspaceEvent {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loaded_a3d_primary_light_direction` is never used
[INFO] [stdout]    --> src/workspace/gizmo.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub fn loaded_a3d_primary_light_direction(root: &Path) -> io::Result<Vec3> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `runtime_only` is never used
[INFO] [stdout]   --> src/workspace/loaded_a3d.rs:31:18
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl WorldEditorTarget {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub const fn runtime_only(&self) -> bool {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/workspace/loaded_a3d.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl LoadedA3dWorkspace {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn inspected_target(&self) -> Option<&WorldEditorTarget> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub const fn selected_entry(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub const fn objects_panel_open(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn open_objects_panel(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn close_objects_panel(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn set_selected_entry(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn move_selection_up(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn move_selection_down(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn inspect_selected(&mut self) -> Option<&WorldEditorTarget> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn activate_inspected_xyz_target(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn is_xyz_active(&self, target: &WorldEditorTarget) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn visibility(&self, target: &WorldEditorTarget) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WorkspaceResponse` is never used
[INFO] [stdout]  --> src/workspace/response.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum WorkspaceResponse {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `handled` and `is_handled` are never used
[INFO] [stdout]   --> src/workspace/response.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl WorkspaceResponse {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 18 |     pub const fn handled(handled: bool) -> Self {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub const fn is_handled(&self) -> bool {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Reset` is never constructed
[INFO] [stdout]   --> src/xyz_control.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum XyzControlEvent {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 52 |     Reset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `XyzControlEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ViewportRect` is never constructed
[INFO] [stdout]   --> src/app.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | struct ViewportRect {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CAMERA_VIEWPORT` is never used
[INFO] [stdout]   --> src/app.rs:94:7
[INFO] [stdout]    |
[INFO] [stdout] 94 | const CAMERA_VIEWPORT: ViewportRect = ViewportRect {
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `menu_kind_for_hotkey` is never used
[INFO] [stdout]    --> src/app.rs:317:4
[INFO] [stdout]     |
[INFO] [stdout] 317 | fn menu_kind_for_hotkey(key_code: KeyCode) -> Option<crate::menu::MenuKind> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/app.rs:783:8
[INFO] [stdout]      |
[INFO] [stdout]  569 | impl AppState {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  783 |     fn glyph_stroke_position(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  787 |     fn glyph_stroke_character_count(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  835 |     fn toggle_menu_bar(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  843 |     fn open_menu_for_hotkey(&mut self, key_code: KeyCode) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1195 |     fn loaded_a3d_manifest_path_for_edit(&self) -> Option<PathBuf> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1203 |     fn edit_loaded_a3d_manifest<F>(&mut self, edit: F) -> bool
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1299 |     fn reset_loaded_a3d_world_object(&mut self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1492 |     fn sync_loaded_a3d_editor_objects(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_frame` is never used
[INFO] [stdout]     --> src/app.rs:1823:4
[INFO] [stdout]      |
[INFO] [stdout] 1823 | fn write_frame(output: &mut impl Write, frame: &str) -> io::Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_horizontal_span` is never used
[INFO] [stdout]     --> src/app.rs:1842:4
[INFO] [stdout]      |
[INFO] [stdout] 1842 | fn draw_horizontal_span(canvas: &mut Canvas, y: i32, character: char) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_viewport_content_rect` is never used
[INFO] [stdout]     --> src/app.rs:1850:4
[INFO] [stdout]      |
[INFO] [stdout] 1850 | fn camera_viewport_content_rect() -> ClipRect {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_camera_viewport` is never used
[INFO] [stdout]     --> src/app.rs:2265:4
[INFO] [stdout]      |
[INFO] [stdout] 2265 | fn draw_camera_viewport(canvas: &mut Canvas, state: &AppState) -> io::Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loaded_a3d_object_render_usize` is never used
[INFO] [stdout]     --> src/app.rs:2394:4
[INFO] [stdout]      |
[INFO] [stdout] 2394 | fn loaded_a3d_object_render_usize(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_loaded_a3d_light_gizmos` is never used
[INFO] [stdout]     --> src/app.rs:2501:4
[INFO] [stdout]      |
[INFO] [stdout] 2501 | fn draw_loaded_a3d_light_gizmos(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross_vec3` is never used
[INFO] [stdout]     --> src/app.rs:2623:4
[INFO] [stdout]      |
[INFO] [stdout] 2623 | fn cross_vec3(a: Vec3, b: Vec3) -> Vec3 {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_vec3` is never used
[INFO] [stdout]     --> src/app.rs:2631:4
[INFO] [stdout]      |
[INFO] [stdout] 2631 | fn normalize_vec3(value: Vec3) -> Option<Vec3> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `edge_function` is never used
[INFO] [stdout]     --> src/app.rs:2641:4
[INFO] [stdout]      |
[INFO] [stdout] 2641 | fn edge_function(a: Point2, b: Point2, point: Point2) -> f32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_loaded_a3d_world` is never used
[INFO] [stdout]     --> src/app.rs:2982:4
[INFO] [stdout]      |
[INFO] [stdout] 2982 | fn render_loaded_a3d_world(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `world_objects_popup_lines` is never used
[INFO] [stdout]     --> src/app.rs:3665:4
[INFO] [stdout]      |
[INFO] [stdout] 3665 | fn world_objects_popup_lines(state: &AppState) -> Option<Vec<String>> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loaded_a3d_debug_popup_lines` is never used
[INFO] [stdout]     --> src/app.rs:3702:4
[INFO] [stdout]      |
[INFO] [stdout] 3702 | fn loaded_a3d_debug_popup_lines(state: &AppState) -> Option<Vec<String>> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace_command_event` is never used
[INFO] [stdout]     --> src/app.rs:3918:4
[INFO] [stdout]      |
[INFO] [stdout] 3918 | fn trace_command_event(state: &mut AppState, route: &str, command: AppCommand) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `describe_key_code_for_debug_console` is never used
[INFO] [stdout]     --> src/app.rs:3931:4
[INFO] [stdout]      |
[INFO] [stdout] 3931 | fn describe_key_code_for_debug_console(key_code: KeyCode) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_key_debug_trace` is never used
[INFO] [stdout]     --> src/app.rs:3954:4
[INFO] [stdout]      |
[INFO] [stdout] 3954 | fn push_key_debug_trace(state: &mut AppState, route: &str, key_code: KeyCode) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_command_debug_trace` is never used
[INFO] [stdout]     --> src/app.rs:3968:4
[INFO] [stdout]      |
[INFO] [stdout] 3968 | fn push_command_debug_trace(state: &mut AppState, route: &str, command: AppCommand) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]   --> src/canvas.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl Canvas {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_empty` is never used
[INFO] [stdout]   --> src/curves/cubic_bezier.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl SampledCurve3 {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 13 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `closed` are never read
[INFO] [stdout]   --> src/glyphs/mod.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct GlyphPath {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 32 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 33 |     pub closed: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphPath` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `version` are never read
[INFO] [stdout]   --> src/glyphs/mod.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct GlyphMetadata {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 54 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 55 |     pub version: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `show_labels` is never read
[INFO] [stdout]   --> src/glyphs/mod.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct GlyphDisplay {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub show_labels: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphDisplay` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `child_type` is never read
[INFO] [stdout]   --> src/glyphs/mod.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct WordChild {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub child_type: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WordChild` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `version` are never read
[INFO] [stdout]   --> src/glyphs/mod.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct WordMetadata {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 94 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 95 |     pub version: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WordMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stroke_character`, `show_glyph_bounds`, and `glyph_bounds_character` are never read
[INFO] [stdout]    --> src/glyphs/mod.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct WordDisplay {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] 101 |     pub stroke_character: char,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub show_glyph_bounds: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 105 |     pub glyph_bounds_character: char,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WordDisplay` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_word` is never used
[INFO] [stdout]    --> src/glyphs/mod.rs:320:8
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub fn render_word(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `WHITE`, `BLUE`, `RED`, and `YELLOW` are never used
[INFO] [stdout]   --> src/graphics/primitives.rs:7:15
[INFO] [stdout]    |
[INFO] [stdout]  4 | impl Rgb {
[INFO] [stdout]    | -------- associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  7 |     pub const WHITE: Self = Self(230, 230, 230);
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout]  8 |     pub const BLUE: Self = Self(90, 160, 255);
[INFO] [stdout]    |               ^^^^
[INFO] [stdout]  9 |     pub const RED: Self = Self(255, 90, 90);
[INFO] [stdout]    |               ^^^
[INFO] [stdout] 10 |     pub const YELLOW: Self = Self(255, 220, 80);
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/graphics/primitives.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl PixelSurface {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn width(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn height(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     pub fn clear(&mut self, color: Rgb) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn draw_line(&mut self, start: (i32, i32), end: (i32, i32), color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn draw_rect(&mut self, x: i32, y: i32, width: i32, height: i32, color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn fill_rect(&mut self, x: i32, y: i32, width: i32, height: i32, color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn draw_circle(&mut self, center_x: i32, center_y: i32, radius: i32, color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn draw_polyline(&mut self, points: &[(i32, i32)], color: Rgb) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WIDTH` is never used
[INFO] [stdout]  --> src/graphics/window.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const WIDTH: usize = 960;
[INFO] [stdout]   |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEIGHT` is never used
[INFO] [stdout]  --> src/graphics/window.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const HEIGHT: usize = 540;
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_primitives_demo` is never used
[INFO] [stdout]   --> src/graphics/window.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn run_primitives_demo() -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_demo_frame` is never used
[INFO] [stdout]   --> src/graphics/window.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn draw_demo_frame(surface: &mut PixelSurface, elapsed: f32) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotated_box_points` is never used
[INFO] [stdout]   --> src/graphics/window.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn rotated_box_points(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyBinding` is never constructed
[INFO] [stdout]  --> src/input/binding.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct KeyBinding {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ResetWorldCamera`, `ToggleCameraDebug`, `ResetCamera`, and `ToggleNearPlaneDebug` are never constructed
[INFO] [stdout]   --> src/input/command.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum AppCommand {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     ResetWorldCamera,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     ToggleCameraDebug,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     ResetCamera,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 66 |     ToggleNearPlaneDebug,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `bindings` are never used
[INFO] [stdout]    --> src/menu/model.rs:165:18
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl MenuState {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 165 |     pub const fn new(kind: MenuKind) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn bindings() -> &'static [KeyBinding] {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MENU_BINDINGS` is never used
[INFO] [stdout]    --> src/menu/model.rs:341:7
[INFO] [stdout]     |
[INFO] [stdout] 341 | const MENU_BINDINGS: &[KeyBinding] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_menu` is never used
[INFO] [stdout]    --> src/menu/model.rs:364:8
[INFO] [stdout]     |
[INFO] [stdout] 364 | pub fn draw_menu(canvas: &mut Canvas, state: &MenuState, origin: Point2) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `simplify_to_target_vertices` and `write_obj` are never used
[INFO] [stdout]    --> src/mesh.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl Mesh {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn simplify_to_target_vertices(&self, target_vertices: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn write_obj(&self, path: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unit_box_is_centered_and_normalized` is never used
[INFO] [stdout]    --> src/mesh.rs:374:8
[INFO] [stdout]     |
[INFO] [stdout] 374 |     fn unit_box_is_centered_and_normalized() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `notes` is never read
[INFO] [stdout]   --> src/projection_config.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct ProjectionConfig {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub notes: Vec<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProjectionConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scene_at` is never used
[INFO] [stdout]    --> src/scenes/mod.rs:345:8
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub fn scene_at(index: usize) -> Scene {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `top_right_rect` is never used
[INFO] [stdout]    --> src/tui/mod.rs:187:4
[INFO] [stdout]     |
[INFO] [stdout] 187 | fn top_right_rect(width: u16, height: u16, area: Rect) -> Rect {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loaded_a3d_primary_light_direction` is never used
[INFO] [stdout]    --> src/workspace/gizmo.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub fn loaded_a3d_primary_light_direction(root: &Path) -> io::Result<Vec3> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `runtime_only` is never used
[INFO] [stdout]   --> src/workspace/loaded_a3d.rs:31:18
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl WorldEditorTarget {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub const fn runtime_only(&self) -> bool {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `selected_entry`, `move_selection_up`, `move_selection_down`, and `is_xyz_active` are never used
[INFO] [stdout]    --> src/workspace/loaded_a3d.rs:88:18
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl LoadedA3dWorkspace {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub const fn selected_entry(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn move_selection_up(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn move_selection_down(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn is_xyz_active(&self, target: &WorldEditorTarget) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RequestAppCommand` and `RequestDebugLine` are never constructed
[INFO] [stdout]   --> src/workspace/response.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub enum WorkspaceResponse {
[INFO] [stdout]    |          ----------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     RequestAppCommand(AppCommand),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     RequestDebugLine(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WorkspaceResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Reset` is never constructed
[INFO] [stdout]   --> src/xyz_control.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum XyzControlEvent {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 52 |     Reset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `XyzControlEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 48s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: naga v29.0.4, wgpu v29.0.4, wgpu-core v29.0.4, wgpu-hal v29.0.4, winit v0.30.13
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 5`
[INFO] running `Command { std: "docker" "inspect" "6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b", kill_on_drop: false }`
[INFO] [stdout] 6af8ee58611d86973b43f4c948dd0c0bba73ce16d0498459428f329ba7882f5b
