[INFO] cloning repository https://github.com/zerosignal0101/optiedit
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zerosignal0101/optiedit" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzerosignal0101%2Foptiedit", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzerosignal0101%2Foptiedit'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a029226233de27f57b04b059f1cadf25845df64b
[INFO] checking zerosignal0101/optiedit against try#54cf65b8d066c082e536455049b95943cf30378f for pr-151920
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzerosignal0101%2Foptiedit" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/zerosignal0101/optiedit
[INFO] finished tweaking git repo https://github.com/zerosignal0101/optiedit
[INFO] tweaked toml for git repo https://github.com/zerosignal0101/optiedit written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/zerosignal0101/optiedit on toolchain 54cf65b8d066c082e536455049b95943cf30378f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/zerosignal0101/optiedit 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" "+54cf65b8d066c082e536455049b95943cf30378f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2ac7e60e382cc9d4ab9c2d48c6c7075f041aea53afa84bb4b2ccb426a09d3592
[INFO] running `Command { std: "docker" "start" "-a" "2ac7e60e382cc9d4ab9c2d48c6c7075f041aea53afa84bb4b2ccb426a09d3592", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2ac7e60e382cc9d4ab9c2d48c6c7075f041aea53afa84bb4b2ccb426a09d3592", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2ac7e60e382cc9d4ab9c2d48c6c7075f041aea53afa84bb4b2ccb426a09d3592", kill_on_drop: false }`
[INFO] [stdout] 2ac7e60e382cc9d4ab9c2d48c6c7075f041aea53afa84bb4b2ccb426a09d3592
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f1e84a442c991725de49d4b7fac61cdd88e0eddad67a458f8a54a3742dfc239b
[INFO] running `Command { std: "docker" "start" "-a" "f1e84a442c991725de49d4b7fac61cdd88e0eddad67a458f8a54a3742dfc239b", kill_on_drop: false }`
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling syn v2.0.110
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling find-msvc-tools v0.1.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling cc v1.2.45
[INFO] [stderr]     Checking foldhash v0.2.0
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]    Compiling naga v27.0.3
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking codespan-reporting v0.12.0
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]    Compiling wgpu-hal v27.0.4
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling hashbrown v0.16.0
[INFO] [stderr]    Compiling winnow v0.7.13
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]     Checking ordered-float v5.1.0
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]    Compiling indexmap v2.12.0
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling typeid v1.0.3
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling wgpu-core v27.0.3
[INFO] [stderr]     Checking spin v0.10.0
[INFO] [stderr]    Compiling erased-serde v0.4.9
[INFO] [stderr]     Checking roxmltree v0.20.0
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking fontconfig-parser v0.5.8
[INFO] [stderr]     Checking tinyvec v1.10.0
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]    Compiling toml_parser v1.0.4
[INFO] [stderr]    Compiling encase_derive_impl v0.11.2
[INFO] [stderr]    Compiling wgpu v27.0.1
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]    Compiling toml_edit v0.23.7
[INFO] [stderr]     Checking wayland-client v0.31.11
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking unicode-bidi-mirroring v0.2.0
[INFO] [stderr]     Checking zeno v0.3.3
[INFO] [stderr]     Checking disqualified v1.0.0
[INFO] [stderr]     Checking yazi v0.2.1
[INFO] [stderr]     Checking unicode-script v0.5.7
[INFO] [stderr]     Checking typewit v1.14.2
[INFO] [stderr]     Checking unicode-properties v0.1.4
[INFO] [stderr]     Checking ttf-parser v0.20.0
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling zerocopy-derive v0.8.27
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking wayland-protocols v0.32.9
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking font-types v0.10.1
[INFO] [stderr]     Checking wgpu-types v27.0.1
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking read-fonts v0.35.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]    Compiling bevy_macro_utils v0.17.2
[INFO] [stderr]    Compiling variadics_please v1.1.0
[INFO] [stderr]     Checking unicode-ccc v0.2.0
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking ttf-parser v0.21.1
[INFO] [stderr]    Compiling bevy_reflect_derive v0.17.2
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking fontdb v0.16.2
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking glam v0.30.9
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking const_panic v0.2.15
[INFO] [stderr]    Compiling assert_type_match v0.1.1
[INFO] [stderr]    Compiling encase_derive v0.11.2
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]     Checking rustybuzz v0.14.1
[INFO] [stderr]     Checking bevy_platform v0.17.2
[INFO] [stderr]     Checking bevy_utils v0.17.2
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking euclid v0.22.11
[INFO] [stderr]     Checking unicode-bidi v0.3.18
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.9
[INFO] [stderr]     Checking sys-locale v0.3.2
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking rangemap v1.6.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]     Checking svg_fmt v0.4.5
[INFO] [stderr]    Compiling cgmath v0.18.0
[INFO] [stderr]     Checking unicode-linebreak v0.1.5
[INFO] [stderr]     Checking downcast-rs v2.0.2
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]     Checking bevy_ptr v0.17.2
[INFO] [stderr]     Checking self_cell v1.2.1
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking bevy_reflect v0.17.2
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking etagere v0.2.15
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.9
[INFO] [stderr]     Checking skrifa v0.37.0
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking encase v0.11.2
[INFO] [stderr]     Checking env_filter v0.1.4
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking approx v0.4.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking lru v0.16.2
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking flume v0.11.1
[INFO] [stderr]     Checking swash v0.2.6
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]     Checking pollster v0.4.0
[INFO] [stderr]     Checking bevy_math v0.17.2
[INFO] [stderr]     Checking winit v0.30.12
[INFO] [stderr]     Checking cosmic-text v0.14.2
[INFO] [stderr]     Checking bevy_color v0.17.2
[INFO] [stderr]     Checking wgpu-core-deps-windows-linux-android v27.0.0
[INFO] [stderr]     Checking glyphon v0.9.0 (https://github.com/grovesNL/glyphon.git?rev=de4b5b8d4e52310be8df56d82a759593920acc04#de4b5b8d)
[INFO] [stderr]     Checking optiedit v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `AtomicBool` and `Ordering`
[INFO] [stdout]  --> src/lib.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::{AtomicBool, Ordering};
[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: `error` and `info`
[INFO] [stdout]  --> src/lib.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{info, debug, error};
[INFO] [stdout]   |           ^^^^         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EventLoopProxy` and `KeyCode`
[INFO] [stdout]  --> src/lib.rs:7:46
[INFO] [stdout]   |
[INFO] [stdout] 7 |     event_loop::{ActiveEventLoop, EventLoop, EventLoopProxy},
[INFO] [stdout]   |                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 8 |     keyboard::{KeyCode, PhysicalKey},
[INFO] [stdout]   |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/lib.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 | use serde::{Serialize, Deserialize};
[INFO] [stdout]    |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Pod` and `Zeroable`
[INFO] [stdout]  --> src/camera.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use bytemuck::{Pod, Zeroable};
[INFO] [stdout]   |                ^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `event::*`
[INFO] [stdout]  --> src/app_state.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     event::*,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]   --> src/app_state.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use wgpu::util::DeviceExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ElementType`
[INFO] [stdout]   --> src/app_state.rs:19:46
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::interaction::{InteractionManager, ElementType};
[INFO] [stdout]    |                                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SelectionMode`
[INFO] [stdout]   --> src/app_state.rs:22:53
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::interaction::selection::{SelectionState, SelectionMode};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_color_theme`
[INFO] [stdout]  --> src/render/text_system.rs:8:43
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::config::{ColorTheme, NodeType, get_color_theme};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]  --> src/scene/renderer.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::{debug, warn};
[INFO] [stdout]   |           ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scene::element::ElementData`
[INFO] [stdout]   --> src/scene/renderer.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::scene::element::ElementData;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::OnceLock`
[INFO] [stdout]  --> src/config.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::OnceLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/interaction/mouse_handler.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use log::{info, debug, warn};
[INFO] [stdout]   |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `winit::keyboard::KeyCode`
[INFO] [stdout]  --> src/interaction/mouse_handler.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use winit::keyboard::KeyCode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HitTestResult`
[INFO] [stdout]   --> src/interaction/mouse_handler.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{InteractionManager, HitTestResult, ElementType};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicBool` and `Ordering`
[INFO] [stdout]  --> src/lib.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::{AtomicBool, Ordering};
[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: `error`
[INFO] [stdout]  --> src/interaction/mod.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 | use log::{info, debug, error};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `info`
[INFO] [stdout]  --> src/lib.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{info, debug, error};
[INFO] [stdout]   |           ^^^^         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EventLoopProxy` and `KeyCode`
[INFO] [stdout]  --> src/lib.rs:7:46
[INFO] [stdout]   |
[INFO] [stdout] 7 |     event_loop::{ActiveEventLoop, EventLoop, EventLoopProxy},
[INFO] [stdout]   |                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 8 |     keyboard::{KeyCode, PhysicalKey},
[INFO] [stdout]   |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `window::Window`
[INFO] [stdout]   --> src/interaction/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     window::Window,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/lib.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 | use serde::{Serialize, Deserialize};
[INFO] [stdout]    |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Pod` and `Zeroable`
[INFO] [stdout]  --> src/camera.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use bytemuck::{Pod, Zeroable};
[INFO] [stdout]   |                ^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `event::*`
[INFO] [stdout]  --> src/app_state.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     event::*,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wgpu::util::DeviceExt`
[INFO] [stdout]   --> src/app_state.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use wgpu::util::DeviceExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ElementType`
[INFO] [stdout]   --> src/app_state.rs:19:46
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::interaction::{InteractionManager, ElementType};
[INFO] [stdout]    |                                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SelectionMode`
[INFO] [stdout]   --> src/app_state.rs:22:53
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::interaction::selection::{SelectionState, SelectionMode};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_color_theme`
[INFO] [stdout]  --> src/render/text_system.rs:8:43
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::config::{ColorTheme, NodeType, get_color_theme};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]  --> src/scene/renderer.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::{debug, warn};
[INFO] [stdout]   |           ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scene::element::ElementData`
[INFO] [stdout]   --> src/scene/renderer.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::scene::element::ElementData;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::OnceLock`
[INFO] [stdout]  --> src/config.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::OnceLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/interaction/mouse_handler.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use log::{info, debug, warn};
[INFO] [stdout]   |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `winit::keyboard::KeyCode`
[INFO] [stdout]  --> src/interaction/mouse_handler.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use winit::keyboard::KeyCode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HitTestResult`
[INFO] [stdout]   --> src/interaction/mouse_handler.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::{InteractionManager, HitTestResult, ElementType};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/interaction/mod.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 | use log::{info, debug, error};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `window::Window`
[INFO] [stdout]   --> src/interaction/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     window::Window,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `temporary_id`
[INFO] [stdout]    --> src/commands.rs:215:17
[INFO] [stdout]     |
[INFO] [stdout] 215 |                 temporary_id
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: try ignoring the field: `temporary_id: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]    --> src/app_state.rs:238:30
[INFO] [stdout]     |
[INFO] [stdout] 238 |     pub fn update(&mut self, dt: Duration) -> bool {
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `temporary_id`
[INFO] [stdout]    --> src/commands.rs:215:17
[INFO] [stdout]     |
[INFO] [stdout] 215 |                 temporary_id
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: try ignoring the field: `temporary_id: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dt`
[INFO] [stdout]    --> src/app_state.rs:238:30
[INFO] [stdout]     |
[INFO] [stdout] 238 |     pub fn update(&mut self, dt: Duration) -> bool {
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_dt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/render/text_system.rs:230:17
[INFO] [stdout]     |
[INFO] [stdout] 230 |             let label = &self.text_labels[i];
[INFO] [stdout]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/render/text_system.rs:230:17
[INFO] [stdout]     |
[INFO] [stdout] 230 |             let label = &self.text_labels[i];
[INFO] [stdout]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/scene/renderer.rs:147:14
[INFO] [stdout]     |
[INFO] [stdout] 147 |         for (index, element) in topology.elements.iter().enumerate() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `actual_index`
[INFO] [stdout]    --> src/scene/renderer.rs:179:14
[INFO] [stdout]     |
[INFO] [stdout] 179 |         for (actual_index, connection) in topology.connections.iter().enumerate() {
[INFO] [stdout]     |              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_actual_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node_type_str`
[INFO] [stdout]    --> src/scene/renderer.rs:396:20
[INFO] [stdout]     |
[INFO] [stdout] 396 |         for (x, y, node_type_str, node_type_enum) in &test_nodes {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_node_type_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `connection`
[INFO] [stdout]    --> src/scene/renderer.rs:593:25
[INFO] [stdout]     |
[INFO] [stdout] 593 |             if let Some(connection) = self.connections.get(connection_id) {
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_connection`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_lines_per_direction`
[INFO] [stdout]    --> src/scene/renderer.rs:750:13
[INFO] [stdout]     |
[INFO] [stdout] 750 |         let num_lines_per_direction = grid_config.lines_per_direction();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_lines_per_direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_lines`
[INFO] [stdout]    --> src/scene/renderer.rs:751:13
[INFO] [stdout]     |
[INFO] [stdout] 751 |         let total_lines = grid_config.total_lines();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_lines`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> src/scene/renderer.rs:909:21
[INFO] [stdout]     |
[INFO] [stdout] 909 |                 let size = (vertex_count * std::mem::size_of::<ArrowVertex>()) as wgpu::BufferAddress;
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/scene/renderer.rs:147:14
[INFO] [stdout]     |
[INFO] [stdout] 147 |         for (index, element) in topology.elements.iter().enumerate() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `t_min` is never read
[INFO] [stdout]    --> src/scene/arrow_positioning.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |             t_min = t_top;
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `actual_index`
[INFO] [stdout]    --> src/scene/renderer.rs:179:14
[INFO] [stdout]     |
[INFO] [stdout] 179 |         for (actual_index, connection) in topology.connections.iter().enumerate() {
[INFO] [stdout]     |              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_actual_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node_type_str`
[INFO] [stdout]    --> src/scene/renderer.rs:396:20
[INFO] [stdout]     |
[INFO] [stdout] 396 |         for (x, y, node_type_str, node_type_enum) in &test_nodes {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_node_type_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `connection`
[INFO] [stdout]    --> src/scene/renderer.rs:593:25
[INFO] [stdout]     |
[INFO] [stdout] 593 |             if let Some(connection) = self.connections.get(connection_id) {
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_connection`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_lines_per_direction`
[INFO] [stdout]    --> src/scene/renderer.rs:750:13
[INFO] [stdout]     |
[INFO] [stdout] 750 |         let num_lines_per_direction = grid_config.lines_per_direction();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_lines_per_direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_lines`
[INFO] [stdout]    --> src/scene/renderer.rs:751:13
[INFO] [stdout]     |
[INFO] [stdout] 751 |         let total_lines = grid_config.total_lines();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_lines`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> src/scene/renderer.rs:909:21
[INFO] [stdout]     |
[INFO] [stdout] 909 |                 let size = (vertex_count * std::mem::size_of::<ArrowVertex>()) as wgpu::BufferAddress;
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `t_min` is never read
[INFO] [stdout]    --> src/scene/arrow_positioning.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |             t_min = t_top;
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let mut window_attributes = Window::default_attributes()
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_loop`
[INFO] [stdout]    --> src/lib.rs:440:30
[INFO] [stdout]     |
[INFO] [stdout] 440 |     fn user_event(&mut self, event_loop: &ActiveEventLoop, event: UserCommand) {
[INFO] [stdout]     |                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]    --> src/lib.rs:550:21
[INFO] [stdout]     |
[INFO] [stdout] 550 |                 let events = state.handle_mouse_input(button, mouse_button_state);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]    --> src/lib.rs:600:21
[INFO] [stdout]     |
[INFO] [stdout] 600 |                 let events = state.handle_mouse_move(screen_pos);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/lib.rs:618:49
[INFO] [stdout]     |
[INFO] [stdout] 618 |                     MouseScrollDelta::LineDelta(x, y) => y * 10.0,
[INFO] [stdout]     |                                                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `needs_redraw` is never read
[INFO] [stdout]    --> src/lib.rs:527:21
[INFO] [stdout]     |
[INFO] [stdout] 527 |                     needs_redraw = true;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `needs_redraw` is never read
[INFO] [stdout]    --> src/lib.rs:568:29
[INFO] [stdout]     |
[INFO] [stdout] 568 | ...                   needs_redraw = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_window_size` is never used
[INFO] [stdout]    --> src/lib.rs:353:8
[INFO] [stdout]     |
[INFO] [stdout] 330 | impl App {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 353 |     fn get_window_size(&self) -> Option<winit::dpi::PhysicalSize<u32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sampler` is never read
[INFO] [stdout]  --> src/texture.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Texture {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     pub sampler: wgpu::Sampler,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_bytes` and `from_image` are never used
[INFO] [stdout]   --> src/texture.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Texture {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 12 |     pub fn from_bytes(
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn from_image(
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pan` is never used
[INFO] [stdout]   --> src/camera.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Camera {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn pan(&mut self, current_screen_pos: Vec2) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `load_test_topology`, `load_arrow_test`, and `handle_mouse_move_no_hover` are never used
[INFO] [stdout]    --> src/app_state.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl State {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn load_test_topology(&mut self) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn load_arrow_test(&mut self) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub fn handle_mouse_move_no_hover(&mut self, screen_pos: Vec2) -> Vec<crate::interaction::mouse_handler::MouseEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `uniform_bind_group_layout` and `arrow_instance_buffer` are never read
[INFO] [stdout]   --> src/render/pipelines.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct TopologyRenderPipelines {
[INFO] [stdout]    |            ----------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub uniform_bind_group_layout: BindGroupLayout,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub arrow_instance_buffer: Buffer,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/render/vertex_types.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl ConnectionVertex {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 107 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `element_name` is never read
[INFO] [stdout]   --> src/render/text_system.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct TextLabel {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 15 |     pub element_id: String,
[INFO] [stdout] 16 |     pub element_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextLabel` 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: methods `needs_camera_update` and `update_camera_cache` are never used
[INFO] [stdout]    --> src/render/text_system.rs:325:8
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl TopologyTextSystem {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 325 |     fn needs_camera_update(&self, camera: &Camera) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     fn update_camera_cache(&mut self, camera: &Camera) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base`, `from_node_id`, and `to_node_id` are never read
[INFO] [stdout]   --> src/scene/connection.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct InteractionConnectionData {
[INFO] [stdout]    |            ------------------------- fields in this struct
[INFO] [stdout] 14 |     pub base: ConnectionData,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub from_node_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 18 |     pub to_node_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InteractionConnectionData` 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: methods `mark_dirty`, `drain_dirty`, and `get_all_connections` are never used
[INFO] [stdout]   --> src/scene/renderer.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl ArrowIndexMap {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn mark_dirty(&mut self, connection_id: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn drain_dirty(&mut self) -> HashSet<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn get_all_connections(&self) -> Vec<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_test_connections`, `create_arrow_rendering_test`, `generate_test_arrows`, `clear_dirty_arrow_marks`, and `get_arrow_performance_stats` are never used
[INFO] [stdout]     --> src/scene/renderer.rs:378:12
[INFO] [stdout]      |
[INFO] [stdout]   90 | impl TopologyRenderer {
[INFO] [stdout]      | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  378 |     pub fn create_test_connections(&mut self, device: &Device) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  474 |     pub fn create_arrow_rendering_test(&mut self, device: &Device) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  554 |     fn generate_test_arrows(&mut self, test_connections: &[(usize, usize, ConnectionType)]) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1052 |     pub fn clear_dirty_arrow_marks(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1057 |     pub fn get_arrow_performance_stats(&self) -> (usize, usize, usize) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `direction` is never read
[INFO] [stdout]   --> src/scene/arrow_positioning.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ArrowPosition {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub direction: (f32, f32),        // Normalized direction vector
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ArrowPosition` 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: variants `Undirected` and `Bidirectional` are never constructed
[INFO] [stdout]   --> src/config.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub enum ConnectionType {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 36 |     Undirected = 0,    // Simple line without direction
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 37 |     Directed = 1,      // Line with arrow showing direction
[INFO] [stdout] 38 |     Bidirectional = 2, // Line with arrows on both ends
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConnectionType` 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: enum `ContextMenuType` is never used
[INFO] [stdout]   --> src/config.rs:43:10
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum ContextMenuType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ContextMenuAction` is never used
[INFO] [stdout]   --> src/config.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum ContextMenuAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_u32` is never used
[INFO] [stdout]   --> src/config.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl ConnectionType {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 78 |     pub fn from_u32(value: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/config.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl GridConfig {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 110 |     /// Create a new grid configuration
[INFO] [stdout] 111 |     pub fn new(small_step: f32, large_step: f32, range: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bidirectional_length`, `unidirectional_length`, `bidirectional_offset`, and `default_arrow_size` are never read
[INFO] [stdout]    --> src/config.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub struct ArrowConfig {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub bidirectional_length: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 142 |     /// Length of arrow from tip to base for unidirectional arrows
[INFO] [stdout] 143 |     pub unidirectional_length: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 144 |     /// Distance from node edge to arrow base for bidirectional arrows
[INFO] [stdout] 145 |     pub bidirectional_offset: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub default_arrow_size: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ArrowConfig` 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 items `new`, `get_arrow_length`, and `get_arrow_offset` are never used
[INFO] [stdout]    --> src/config.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | impl ArrowConfig {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 169 |     /// Create a new arrow configuration with custom parameters
[INFO] [stdout] 170 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn get_arrow_length(&self, connection_type: ConnectionType) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn get_arrow_offset(&self, connection_type: ConnectionType) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `connection_selected`, `text_primary`, and `text_secondary` are never read
[INFO] [stdout]    --> src/config.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub struct ColorTheme {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub connection_selected: Color,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 219 |     // Text colors
[INFO] [stdout] 220 |     pub text_primary: Color,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 221 |     pub text_secondary: Color,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ColorTheme` 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 `get_text_size` and `get_fiber_color` are never used
[INFO] [stdout]    --> src/config.rs:395:12
[INFO] [stdout]     |
[INFO] [stdout] 226 | impl ColorTheme {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 395 |     pub fn get_text_size(node_type: NodeType) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn get_fiber_color() -> Color {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lerp_color` is never used
[INFO] [stdout]    --> src/config.rs:434:8
[INFO] [stdout]     |
[INFO] [stdout] 434 | pub fn lerp_color(a: Color, b: Color, t: f32) -> Color {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adjust_brightness` is never used
[INFO] [stdout]    --> src/config.rs:446:8
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub fn adjust_brightness(color: Color, factor: f32) -> Color {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `with_grid`, `with_grid_and_theme`, `with_arrows`, and `with_all` are never used
[INFO] [stdout]    --> src/config.rs:489:12
[INFO] [stdout]     |
[INFO] [stdout] 487 | impl AppConfig {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 488 |     /// Create a new application configuration
[INFO] [stdout] 489 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |     pub fn with_grid(grid_config: GridConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     pub fn with_grid_and_theme(grid_config: GridConfig, theme: Theme) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 521 |     pub fn with_arrows(arrow_config: ArrowConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 530 |     pub fn with_all(grid_config: GridConfig, theme: Theme, arrow_config: ArrowConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Panning` is never constructed
[INFO] [stdout]   --> src/interaction/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum InteractionMode {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] 20 |     Normal,
[INFO] [stdout] 21 |     Panning,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InteractionMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `distance` is never read
[INFO] [stdout]   --> src/interaction/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct HitTestResult {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub distance: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HitTestResult` 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: methods `get_box_selection_bounds`, `get_completed_connection`, and `get_connection_preview` are never used
[INFO] [stdout]    --> src/interaction/mod.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl InteractionManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn get_box_selection_bounds(&self) -> Option<(Vec2, Vec2)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     pub fn get_completed_connection(&mut self) -> Option<(String, String)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 516 |     pub fn get_connection_preview(&self) -> Option<(String, Vec2)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `position_screen`, `position_world`, and `timestamp` are never read
[INFO] [stdout]   --> src/interaction/mouse_handler.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct MouseEvent {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 28 |     pub action: MouseAction,
[INFO] [stdout] 29 |     pub position_screen: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub position_world: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub element_type: Option<ElementType>,
[INFO] [stdout] 32 |     pub timestamp: Instant,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseEvent` 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 `hover_threshold` is never read
[INFO] [stdout]   --> src/interaction/mouse_handler.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct MouseHandler {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     hover_threshold: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Custom` is never constructed
[INFO] [stdout]   --> src/interaction/keyboard_handler.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum ShortcutAction {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Custom(UserCommand),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ShortcutAction` 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: methods `add_custom_shortcut` and `get_all_shortcuts` are never used
[INFO] [stdout]    --> src/interaction/keyboard_handler.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl KeyboardHandler {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn add_custom_shortcut(&mut self, key: KeyCode, ctrl: bool, shift: bool, action: ShortcutAction) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn get_all_shortcuts(&self) -> Vec<((KeyCode, bool, bool), &ShortcutAction)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MultipleSelection` is never constructed
[INFO] [stdout]   --> src/interaction/selection.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum SelectionChange {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 21 |     MultipleSelection(Vec<String>), // For batch operations
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SelectionChange` 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: methods `is_connection_selected`, `select_nodes_in_box`, `delete_selected`, `count`, and `is_point_in_selection_box` are never used
[INFO] [stdout]    --> src/interaction/selection.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl SelectionState {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn is_connection_selected(&self, connection_id: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn select_nodes_in_box(&mut self, node_ids: Vec<String>, mode: SelectionMode) -> Vec<SelectionChange> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn delete_selected(&mut self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn is_point_in_selection_box(&self, point: Vec2, box_min: Vec2, box_max: Vec2) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |         let mut window_attributes = Window::default_attributes()
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_loop`
[INFO] [stdout]    --> src/lib.rs:440:30
[INFO] [stdout]     |
[INFO] [stdout] 440 |     fn user_event(&mut self, event_loop: &ActiveEventLoop, event: UserCommand) {
[INFO] [stdout]     |                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]    --> src/lib.rs:550:21
[INFO] [stdout]     |
[INFO] [stdout] 550 |                 let events = state.handle_mouse_input(button, mouse_button_state);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]    --> src/lib.rs:600:21
[INFO] [stdout]     |
[INFO] [stdout] 600 |                 let events = state.handle_mouse_move(screen_pos);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/lib.rs:618:49
[INFO] [stdout]     |
[INFO] [stdout] 618 |                     MouseScrollDelta::LineDelta(x, y) => y * 10.0,
[INFO] [stdout]     |                                                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `needs_redraw` is never read
[INFO] [stdout]    --> src/lib.rs:527:21
[INFO] [stdout]     |
[INFO] [stdout] 527 |                     needs_redraw = true;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `needs_redraw` is never read
[INFO] [stdout]    --> src/lib.rs:568:29
[INFO] [stdout]     |
[INFO] [stdout] 568 | ...                   needs_redraw = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_window_size` is never used
[INFO] [stdout]    --> src/lib.rs:353:8
[INFO] [stdout]     |
[INFO] [stdout] 330 | impl App {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 353 |     fn get_window_size(&self) -> Option<winit::dpi::PhysicalSize<u32>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sampler` is never read
[INFO] [stdout]  --> src/texture.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Texture {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     pub sampler: wgpu::Sampler,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_bytes` and `from_image` are never used
[INFO] [stdout]   --> src/texture.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Texture {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 12 |     pub fn from_bytes(
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn from_image(
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pan` is never used
[INFO] [stdout]   --> src/camera.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Camera {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn pan(&mut self, current_screen_pos: Vec2) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `load_test_topology`, `load_arrow_test`, and `handle_mouse_move_no_hover` are never used
[INFO] [stdout]    --> src/app_state.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl State {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn load_test_topology(&mut self) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn load_arrow_test(&mut self) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub fn handle_mouse_move_no_hover(&mut self, screen_pos: Vec2) -> Vec<crate::interaction::mouse_handler::MouseEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `uniform_bind_group_layout` and `arrow_instance_buffer` are never read
[INFO] [stdout]   --> src/render/pipelines.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct TopologyRenderPipelines {
[INFO] [stdout]    |            ----------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub uniform_bind_group_layout: BindGroupLayout,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub arrow_instance_buffer: Buffer,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/render/vertex_types.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl ConnectionVertex {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 107 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `element_name` is never read
[INFO] [stdout]   --> src/render/text_system.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct TextLabel {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 15 |     pub element_id: String,
[INFO] [stdout] 16 |     pub element_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextLabel` 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: methods `needs_camera_update` and `update_camera_cache` are never used
[INFO] [stdout]    --> src/render/text_system.rs:325:8
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl TopologyTextSystem {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 325 |     fn needs_camera_update(&self, camera: &Camera) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     fn update_camera_cache(&mut self, camera: &Camera) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base`, `from_node_id`, and `to_node_id` are never read
[INFO] [stdout]   --> src/scene/connection.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct InteractionConnectionData {
[INFO] [stdout]    |            ------------------------- fields in this struct
[INFO] [stdout] 14 |     pub base: ConnectionData,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub from_node_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 18 |     pub to_node_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InteractionConnectionData` 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: methods `mark_dirty`, `drain_dirty`, and `get_all_connections` are never used
[INFO] [stdout]   --> src/scene/renderer.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl ArrowIndexMap {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn mark_dirty(&mut self, connection_id: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn drain_dirty(&mut self) -> HashSet<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn get_all_connections(&self) -> Vec<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_test_connections`, `create_arrow_rendering_test`, `generate_test_arrows`, `clear_dirty_arrow_marks`, and `get_arrow_performance_stats` are never used
[INFO] [stdout]     --> src/scene/renderer.rs:378:12
[INFO] [stdout]      |
[INFO] [stdout]   90 | impl TopologyRenderer {
[INFO] [stdout]      | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  378 |     pub fn create_test_connections(&mut self, device: &Device) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  474 |     pub fn create_arrow_rendering_test(&mut self, device: &Device) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  554 |     fn generate_test_arrows(&mut self, test_connections: &[(usize, usize, ConnectionType)]) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1052 |     pub fn clear_dirty_arrow_marks(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1057 |     pub fn get_arrow_performance_stats(&self) -> (usize, usize, usize) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `direction` is never read
[INFO] [stdout]   --> src/scene/arrow_positioning.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ArrowPosition {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub direction: (f32, f32),        // Normalized direction vector
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ArrowPosition` 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: variants `Undirected` and `Bidirectional` are never constructed
[INFO] [stdout]   --> src/config.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub enum ConnectionType {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 36 |     Undirected = 0,    // Simple line without direction
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 37 |     Directed = 1,      // Line with arrow showing direction
[INFO] [stdout] 38 |     Bidirectional = 2, // Line with arrows on both ends
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConnectionType` 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: enum `ContextMenuType` is never used
[INFO] [stdout]   --> src/config.rs:43:10
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum ContextMenuType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ContextMenuAction` is never used
[INFO] [stdout]   --> src/config.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum ContextMenuAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_u32` is never used
[INFO] [stdout]   --> src/config.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl ConnectionType {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 78 |     pub fn from_u32(value: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/config.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl GridConfig {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 110 |     /// Create a new grid configuration
[INFO] [stdout] 111 |     pub fn new(small_step: f32, large_step: f32, range: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bidirectional_length`, `unidirectional_length`, `bidirectional_offset`, and `default_arrow_size` are never read
[INFO] [stdout]    --> src/config.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub struct ArrowConfig {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub bidirectional_length: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 142 |     /// Length of arrow from tip to base for unidirectional arrows
[INFO] [stdout] 143 |     pub unidirectional_length: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 144 |     /// Distance from node edge to arrow base for bidirectional arrows
[INFO] [stdout] 145 |     pub bidirectional_offset: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub default_arrow_size: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ArrowConfig` 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 items `new`, `get_arrow_length`, and `get_arrow_offset` are never used
[INFO] [stdout]    --> src/config.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | impl ArrowConfig {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 169 |     /// Create a new arrow configuration with custom parameters
[INFO] [stdout] 170 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn get_arrow_length(&self, connection_type: ConnectionType) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn get_arrow_offset(&self, connection_type: ConnectionType) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `connection_selected`, `text_primary`, and `text_secondary` are never read
[INFO] [stdout]    --> src/config.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub struct ColorTheme {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub connection_selected: Color,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 219 |     // Text colors
[INFO] [stdout] 220 |     pub text_primary: Color,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 221 |     pub text_secondary: Color,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ColorTheme` 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 `get_text_size` and `get_fiber_color` are never used
[INFO] [stdout]    --> src/config.rs:395:12
[INFO] [stdout]     |
[INFO] [stdout] 226 | impl ColorTheme {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 395 |     pub fn get_text_size(node_type: NodeType) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn get_fiber_color() -> Color {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lerp_color` is never used
[INFO] [stdout]    --> src/config.rs:434:8
[INFO] [stdout]     |
[INFO] [stdout] 434 | pub fn lerp_color(a: Color, b: Color, t: f32) -> Color {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adjust_brightness` is never used
[INFO] [stdout]    --> src/config.rs:446:8
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub fn adjust_brightness(color: Color, factor: f32) -> Color {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `with_grid`, `with_grid_and_theme`, `with_arrows`, and `with_all` are never used
[INFO] [stdout]    --> src/config.rs:489:12
[INFO] [stdout]     |
[INFO] [stdout] 487 | impl AppConfig {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 488 |     /// Create a new application configuration
[INFO] [stdout] 489 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |     pub fn with_grid(grid_config: GridConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     pub fn with_grid_and_theme(grid_config: GridConfig, theme: Theme) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 521 |     pub fn with_arrows(arrow_config: ArrowConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 530 |     pub fn with_all(grid_config: GridConfig, theme: Theme, arrow_config: ArrowConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Panning` is never constructed
[INFO] [stdout]   --> src/interaction/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum InteractionMode {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] 20 |     Normal,
[INFO] [stdout] 21 |     Panning,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InteractionMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `distance` is never read
[INFO] [stdout]   --> src/interaction/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct HitTestResult {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub distance: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HitTestResult` 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: methods `get_box_selection_bounds`, `get_completed_connection`, and `get_connection_preview` are never used
[INFO] [stdout]    --> src/interaction/mod.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl InteractionManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn get_box_selection_bounds(&self) -> Option<(Vec2, Vec2)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     pub fn get_completed_connection(&mut self) -> Option<(String, String)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 516 |     pub fn get_connection_preview(&self) -> Option<(String, Vec2)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `position_screen`, `position_world`, and `timestamp` are never read
[INFO] [stdout]   --> src/interaction/mouse_handler.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct MouseEvent {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 28 |     pub action: MouseAction,
[INFO] [stdout] 29 |     pub position_screen: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub position_world: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub element_type: Option<ElementType>,
[INFO] [stdout] 32 |     pub timestamp: Instant,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseEvent` 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 `hover_threshold` is never read
[INFO] [stdout]   --> src/interaction/mouse_handler.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct MouseHandler {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     hover_threshold: std::time::Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Custom` is never constructed
[INFO] [stdout]   --> src/interaction/keyboard_handler.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum ShortcutAction {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Custom(UserCommand),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ShortcutAction` 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: methods `add_custom_shortcut` and `get_all_shortcuts` are never used
[INFO] [stdout]    --> src/interaction/keyboard_handler.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl KeyboardHandler {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn add_custom_shortcut(&mut self, key: KeyCode, ctrl: bool, shift: bool, action: ShortcutAction) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn get_all_shortcuts(&self) -> Vec<((KeyCode, bool, bool), &ShortcutAction)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MultipleSelection` is never constructed
[INFO] [stdout]   --> src/interaction/selection.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum SelectionChange {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 21 |     MultipleSelection(Vec<String>), // For batch operations
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SelectionChange` 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: methods `is_connection_selected`, `select_nodes_in_box`, `delete_selected`, `count`, and `is_point_in_selection_box` are never used
[INFO] [stdout]    --> src/interaction/selection.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl SelectionState {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn is_connection_selected(&self, connection_id: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn select_nodes_in_box(&mut self, node_ids: Vec<String>, mode: SelectionMode) -> Vec<SelectionChange> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn delete_selected(&mut self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn is_point_in_selection_box(&self, point: Vec2, box_min: Vec2, box_max: Vec2) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.15s
[INFO] running `Command { std: "docker" "inspect" "f1e84a442c991725de49d4b7fac61cdd88e0eddad67a458f8a54a3742dfc239b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f1e84a442c991725de49d4b7fac61cdd88e0eddad67a458f8a54a3742dfc239b", kill_on_drop: false }`
[INFO] [stdout] f1e84a442c991725de49d4b7fac61cdd88e0eddad67a458f8a54a3742dfc239b
