[INFO] cloning repository https://github.com/typhoon1217/neoimv
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/typhoon1217/neoimv" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftyphoon1217%2Fneoimv", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftyphoon1217%2Fneoimv'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ba77f0aedd0965f80bc4fa346049ee1d7a29dc47
[INFO] checking typhoon1217/neoimv against master#57f772f25c5ce2bd870d6f8c3ab318eaee5a3326 for pr-133502-22
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftyphoon1217%2Fneoimv" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/typhoon1217/neoimv
[INFO] finished tweaking git repo https://github.com/typhoon1217/neoimv
[INFO] tweaked toml for git repo https://github.com/typhoon1217/neoimv written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/typhoon1217/neoimv on toolchain 57f772f25c5ce2bd870d6f8c3ab318eaee5a3326
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/typhoon1217/neoimv 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" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded natord v1.0.9
[INFO] [stderr]   Downloaded glutin v0.32.3
[INFO] [stderr]   Downloaded jni-macros v0.22.2
[INFO] [stderr]   Downloaded webbrowser v1.2.0
[INFO] [stderr]   Downloaded immutable-chunkmap v2.1.2
[INFO] [stderr]   Downloaded jni v0.22.3
[INFO] [stderr]   Downloaded wgpu v24.0.5
[INFO] [stderr]   Downloaded wgpu-hal v24.0.4
[INFO] [stderr]   Downloaded type-map v0.5.1
[INFO] [stderr]   Downloaded wgpu-core v24.0.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f5f27706163ce62bbc0165413676a55b17eeec2a1cba3de0dbfa6ab0534e48ff
[INFO] running `Command { std: "docker" "start" "-a" "f5f27706163ce62bbc0165413676a55b17eeec2a1cba3de0dbfa6ab0534e48ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f5f27706163ce62bbc0165413676a55b17eeec2a1cba3de0dbfa6ab0534e48ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f5f27706163ce62bbc0165413676a55b17eeec2a1cba3de0dbfa6ab0534e48ff", kill_on_drop: false }`
[INFO] [stdout] f5f27706163ce62bbc0165413676a55b17eeec2a1cba3de0dbfa6ab0534e48ff
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 09a9473443a9ccffe220543f01da3459da66f0e48533dda4a8333159e441f980
[INFO] running `Command { std: "docker" "start" "-a" "09a9473443a9ccffe220543f01da3459da66f0e48533dda4a8333159e441f980", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking pin-project-lite v0.2.17
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling toml_datetime v1.0.0+spec-1.1.0
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]     Checking dlib v0.5.3
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling wayland-sys v0.31.10
[INFO] [stderr]    Compiling wayland-backend v0.3.14
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling quick-xml v0.39.2
[INFO] [stderr]    Compiling wayland-client v0.31.13
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]    Compiling endi v1.1.1
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling toml_parser v1.0.9+spec-1.1.0
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking piper v0.2.5
[INFO] [stderr]    Compiling toml_edit v0.25.4+spec-1.1.0
[INFO] [stderr]     Checking writeable v0.6.2
[INFO] [stderr]     Checking litemap v0.8.1
[INFO] [stderr]    Compiling wayland-scanner v0.31.9
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking async-executor v1.14.0
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking async-fs v2.2.0
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zvariant_utils v2.1.0
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.10
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]     Checking cursor-icon v1.2.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking xkeysym v0.2.1
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking wayland-protocols v0.32.11
[INFO] [stderr]     Checking wayland-cursor v0.31.13
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]     Checking memmap2 v0.9.10
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling zerocopy-derive v0.8.42
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling zvariant_derive v4.2.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking zvariant v4.2.0
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]    Compiling quick-xml v0.30.0
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking zbus_names v3.0.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]    Compiling zbus_macros v4.4.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.11
[INFO] [stderr]     Checking zbus_xml v4.0.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling zvariant_utils v3.3.0
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking zbus-lockstep v0.4.4
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]    Compiling zvariant_derive v5.10.0
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking as-slice v0.2.1
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]    Compiling built v0.8.0
[INFO] [stderr]     Checking accesskit v0.17.1
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.4.4
[INFO] [stderr]     Checking raw-window-handle v0.6.2
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking strict-num v0.1.1
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking aligned v0.4.3
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking core2 v0.4.0
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking y4m v0.8.0
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]     Checking bitstream-io v4.9.0
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking emath v0.31.1
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking immutable-chunkmap v2.1.2
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling winit v0.30.13
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking imgref v1.12.0
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]     Checking zune-core v0.5.1
[INFO] [stderr]     Checking neoimv-plugin-sdk v0.1.0 (/opt/rustwide/workdir/neoimv-plugin-sdk)
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]     Checking zune-jpeg v0.5.13
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking accesskit_consumer v0.26.0
[INFO] [stderr]     Checking fax v0.2.6
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking ecolor v0.31.1
[INFO] [stderr]    Compiling zvariant v5.10.0
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.11
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking calloop v0.14.4
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking avif-serialize v0.8.8
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]     Checking epaint_default_fonts v0.31.1
[INFO] [stderr]     Checking pxfm v0.1.28
[INFO] [stderr]     Checking atspi-common v0.6.0
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]    Compiling smithay-client-toolkit v0.20.0
[INFO] [stderr]     Checking rgb v0.8.53
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking image-webp v0.2.4
[INFO] [stderr]     Checking epaint v0.31.1
[INFO] [stderr]    Compiling zbus_names v4.3.1
[INFO] [stderr]     Checking gif v0.14.1
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]     Checking ravif v0.13.0
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking tiff v0.11.3
[INFO] [stderr]     Checking atspi-proxies v0.6.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.10.1
[INFO] [stderr]     Checking async-signal v0.2.13
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.11
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]    Compiling glutin v0.32.3
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]     Checking openssl-probe v0.2.1
[INFO] [stderr]     Checking anstyle-parse v1.0.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking async-process v2.5.0
[INFO] [stderr]     Checking egui v0.31.1
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]    Compiling zbus_macros v5.14.0
[INFO] [stderr]     Checking atspi-connection v0.6.0
[INFO] [stderr]    Compiling async-recursion v1.1.1
[INFO] [stderr]     Checking atspi v0.22.0
[INFO] [stderr]     Checking accesskit_unix v0.13.1
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]     Checking uuid v1.22.0
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]     Checking ipnet v2.12.0
[INFO] [stderr]     Checking anstyle v1.0.14
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking colorchoice v1.0.5
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking webbrowser v1.2.0
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking zbus v5.14.0
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]    Compiling rfd v0.15.4
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]     Checking glow v0.16.0
[INFO] [stderr]     Checking option-ext v0.2.0
[INFO] [stderr]     Checking iri-string v0.7.10
[INFO] [stderr]     Checking ryu v1.0.23
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]     Checking clap_lex v1.1.0
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]     Checking egui_glow v0.31.1
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking accesskit_winit v0.23.1
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking egui-winit v0.31.1
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking pollster v0.4.0
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking eframe v0.31.1
[INFO] [stderr]     Checking directories v5.0.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking natord v1.0.9
[INFO] [stderr]     Checking neoimv-test-plugin v0.1.0 (/opt/rustwide/workdir/tests/integration/test_plugin)
[INFO] [stderr]     Checking neoimv-plugin-drawer v0.1.0 (/opt/rustwide/workdir/plugins/drawer)
[INFO] [stderr]     Checking neoimv-plugin-rotate v0.1.0 (/opt/rustwide/workdir/plugins/rotate)
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking clap v4.6.0
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking ashpd v0.11.1
[INFO] [stderr]     Checking neoimv v0.1.0 (/opt/rustwide/workdir/neoimv)
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> neoimv/src/core/image_loader.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]   --> neoimv/src/core/filmstrip.rs:88:47
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...                   egui::Stroke::new(2.0, egui::Color32::WHITE),
[INFO] [stdout]    |                                         ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout]    = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]   --> neoimv/src/core/filmstrip.rs:88:47
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...                   egui::Stroke::new(2.0, egui::Color32::WHITE),
[INFO] [stdout]    |                                         ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout]    = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NeoimvApp` is never constructed
[INFO] [stdout]   --> neoimv/src/app.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct NeoimvApp {
[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]    --> neoimv/src/app.rs:75:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl NeoimvApp {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  75 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     fn load_image_animated(&mut self, path: &PathBuf) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     fn window_title(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     fn handle_dropped_files(&mut self, ctx: &egui::Context) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     fn key_event_to_string(key: egui::Key, modifiers: egui::Modifiers) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |     fn handle_input(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn dispatch_action(&mut self, ctx: &egui::Context, action_id: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     fn dispatch_plugin_action(&mut self, egui_ctx: &egui::Context, action_id: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 514 |     fn poll_loader(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 562 |     fn tick_animation(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     fn render_plugin_uis(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 697 |     fn check_viewport_resize(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key_name` is never used
[INFO] [stdout]    --> neoimv/src/app.rs:814:4
[INFO] [stdout]     |
[INFO] [stdout] 814 | fn key_name(key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_plugin_command` is never used
[INFO] [stdout]   --> neoimv/src/cli/commands.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn handle_plugin_command(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load`, `save`, and `plugin_config_toml` are never used
[INFO] [stdout]    --> neoimv/src/config/settings.rs:74:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl AppConfig {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  74 |     pub fn load(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn save(&self, path: &Path) -> Result<(), std::io::Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn plugin_config_toml(&self, plugin_name: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_dir` is never used
[INFO] [stdout]    --> neoimv/src/config/settings.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn config_dir() -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cache_dir` is never used
[INFO] [stdout]    --> neoimv/src/config/settings.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn cache_dir() -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SettingsPanel` is never constructed
[INFO] [stdout]  --> neoimv/src/config/ui.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct SettingsPanel {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SettingsTab` is never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum SettingsTab {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `toggle`, and `render` are never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl SettingsPanel {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 24 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn toggle(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_core_settings` is never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:95:4
[INFO] [stdout]    |
[INFO] [stdout] 95 | fn render_core_settings(ui: &mut Ui, core: &mut CoreConfig) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_plugin_config` is never used
[INFO] [stdout]    --> neoimv/src/config/ui.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn render_plugin_config(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pixels`, `width`, and `height` are never read
[INFO] [stdout]  --> neoimv/src/core/animation.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct AnimationFrame {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 4 |     pub pixels: Vec<u8>,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 5 |     pub width: u32,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 6 |     pub height: u32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `play`, `frame_count`, `current_frame`, and `current_delay` are never used
[INFO] [stdout]   --> neoimv/src/core/animation.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AnimationState {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn play(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn frame_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn current_frame(&self) -> Option<&AnimationFrame> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn current_delay(&self) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `path` and `pixels` are never read
[INFO] [stdout]   --> neoimv/src/core/background_loader.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Loaded {
[INFO] [stdout]    |     ------ fields in this variant
[INFO] [stdout] 13 |         path: PathBuf,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 14 |         pixels: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `path` is never read
[INFO] [stdout]   --> neoimv/src/core/background_loader.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Error {
[INFO] [stdout]    |     ----- field in this variant
[INFO] [stdout] 19 |         path: PathBuf,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_image_from_dropped` is never used
[INFO] [stdout]   --> neoimv/src/core/drag_drop.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn first_image_from_dropped(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THUMB_SIZE` is never used
[INFO] [stdout]  --> neoimv/src/core/filmstrip.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const THUMB_SIZE: u32 = 128;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Filmstrip` is never constructed
[INFO] [stdout]  --> neoimv/src/core/filmstrip.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Filmstrip {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `render`, and `cache_path` are never used
[INFO] [stdout]    --> neoimv/src/core/filmstrip.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl Filmstrip {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  18 |     pub fn new(cache_dir: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn cache_path(&self, image_path: &Path) -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_thumbnail` is never used
[INFO] [stdout]    --> neoimv/src/core/filmstrip.rs:135:4
[INFO] [stdout]     |
[INFO] [stdout] 135 | fn generate_thumbnail(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_thumbnail_cache` is never used
[INFO] [stdout]    --> neoimv/src/core/filmstrip.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn save_thumbnail_cache(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_thumbnail_cache` is never used
[INFO] [stdout]    --> neoimv/src/core/filmstrip.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn load_thumbnail_cache(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_system_fonts` is never used
[INFO] [stdout]  --> neoimv/src/core/fonts.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn detect_system_fonts() -> Vec<PathBuf> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `configure_fonts` is never used
[INFO] [stdout]   --> neoimv/src/core/fonts.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn configure_fonts(ctx: &egui::Context, font_override: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unsupported` is never constructed
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum LoadError {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |     Unsupported,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LoadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadedImage` is never used
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum LoadedImage {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_image_animated` is never used
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn load_image_animated(path: &Path) -> Result<LoadedImage, LoadError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `images` and `go_to` are never used
[INFO] [stdout]   --> neoimv/src/core/navigator.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Navigator {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn images(&self) -> &[PathBuf] {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub fn go_to(&mut self, index: usize) -> Option<&PathBuf> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageRenderer` is never constructed
[INFO] [stdout]  --> neoimv/src/core/renderer.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct ImageRenderer {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FitMode` is never used
[INFO] [stdout]   --> neoimv/src/core/renderer.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum FitMode {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> neoimv/src/core/renderer.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl ImageRenderer {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn set_image(&mut self, ctx: &egui::Context, pixels: &[u8], width: u32, height: u32) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn zoom_in(&mut self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn zoom_out(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn set_fit_mode(&mut self, mode: FitMode) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn zoom_level(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn render(&mut self, ui: &mut Ui) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NoImage` is never constructed
[INFO] [stdout]  --> neoimv/src/core/save.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum SaveError {
[INFO] [stdout]   |          --------- variant in this enum
[INFO] [stdout] 7 |     #[error("no image to save")]
[INFO] [stdout] 8 |     NoImage,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `SaveError` 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 `save_as_dialog` is never used
[INFO] [stdout]   --> neoimv/src/core/save.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn save_as_dialog(current_path: Option<&Path>) -> Option<std::path::PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatusInfo` is never constructed
[INFO] [stdout]  --> neoimv/src/core/statusbar.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct StatusInfo<'a> {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_statusbar` is never used
[INFO] [stdout]   --> neoimv/src/core/statusbar.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn render_statusbar(ui: &mut Ui, info: &StatusInfo) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]  --> neoimv/src/core/undo.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Mutation {
[INFO] [stdout]   |            -------- fields in this struct
[INFO] [stdout] 4 |     pub pixels: Vec<u8>,  // RGBA8, core-owned copy
[INFO] [stdout] 5 |     pub width: u32,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 6 |     pub height: u32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `label`, and `category` are never read
[INFO] [stdout]  --> neoimv/src/keymap/action.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ActionInfo {
[INFO] [stdout]   |            ---------- fields in this struct
[INFO] [stdout] 5 |     pub id: String,          // "core:prev_image" or "rotate:rotate_cw"
[INFO] [stdout]   |         ^^
[INFO] [stdout] 6 |     pub label: String,       // "Previous Image"
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 7 |     pub category: String,    // "Navigation" or "Transform"
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ActionInfo` 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: methods `all_actions`, `actions_for_plugin`, and `grouped_actions` are never used
[INFO] [stdout]   --> neoimv/src/keymap/action.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ActionRegistry {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn all_actions(&self) -> Vec<&ActionInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn actions_for_plugin(&self, plugin_name: &str) -> Vec<&ActionInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn grouped_actions(&self) -> Vec<(String, Vec<&ActionInfo>)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load`, `save`, `unbind_key`, `bind`, and `key_for_action` are never used
[INFO] [stdout]    --> neoimv/src/keymap/config.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl KeymapConfig {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  15 |     pub fn load(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn save(&self, path: &Path) -> Result<(), std::io::Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn unbind_key(&mut self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn bind(&mut self, action: &str, key: &str) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn key_for_action(&self, action: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeymapEditor` is never constructed
[INFO] [stdout]  --> neoimv/src/keymap/ui.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct KeymapEditor {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> neoimv/src/keymap/ui.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl KeymapEditor {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_key_combo` is never used
[INFO] [stdout]    --> neoimv/src/keymap/ui.rs:101:4
[INFO] [stdout]     |
[INFO] [stdout] 101 | fn format_key_combo(mods: egui::Modifiers, key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key_name` is never used
[INFO] [stdout]    --> neoimv/src/keymap/ui.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn key_name(key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NeoimvApp` is never constructed
[INFO] [stdout]   --> neoimv/src/app.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct NeoimvApp {
[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]    --> neoimv/src/app.rs:75:12
[INFO] [stdout]     |
[INFO] [stdout]  74 | impl NeoimvApp {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  75 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     fn load_image_animated(&mut self, path: &PathBuf) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     fn window_title(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     fn handle_dropped_files(&mut self, ctx: &egui::Context) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     fn key_event_to_string(key: egui::Key, modifiers: egui::Modifiers) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |     fn handle_input(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn dispatch_action(&mut self, ctx: &egui::Context, action_id: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     fn dispatch_plugin_action(&mut self, egui_ctx: &egui::Context, action_id: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 514 |     fn poll_loader(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 562 |     fn tick_animation(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     fn render_plugin_uis(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 697 |     fn check_viewport_resize(&mut self, ctx: &egui::Context) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key_name` is never used
[INFO] [stdout]    --> neoimv/src/app.rs:814:4
[INFO] [stdout]     |
[INFO] [stdout] 814 | fn key_name(key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_plugin_command` is never used
[INFO] [stdout]   --> neoimv/src/cli/commands.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn handle_plugin_command(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoreConfig` is never constructed
[INFO] [stdout]  --> neoimv/src/config/settings.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct CoreConfig {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_theme` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn default_theme() -> String { "dark".into() }
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_fit` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn default_fit() -> String { "fit_window".into() }
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn default_true() -> bool { true }
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_filmstrip_position` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn default_filmstrip_position() -> String { "bottom".into() }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_filmstrip_height` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:41:4
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn default_filmstrip_height() -> u32 { 80 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_font` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn default_font() -> String { "system".into() }
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_undo_depth` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn default_undo_depth() -> usize { 50 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_undo_memory` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:44:4
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn default_undo_memory() -> usize { 512 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]   --> neoimv/src/config/settings.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct AppConfig {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load`, `save`, and `plugin_config_toml` are never used
[INFO] [stdout]    --> neoimv/src/config/settings.rs:74:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl AppConfig {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  74 |     pub fn load(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn save(&self, path: &Path) -> Result<(), std::io::Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn plugin_config_toml(&self, plugin_name: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_dir` is never used
[INFO] [stdout]    --> neoimv/src/config/settings.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn config_dir() -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cache_dir` is never used
[INFO] [stdout]    --> neoimv/src/config/settings.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn cache_dir() -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SettingsPanel` is never constructed
[INFO] [stdout]  --> neoimv/src/config/ui.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct SettingsPanel {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SettingsTab` is never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum SettingsTab {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `toggle`, and `render` are never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl SettingsPanel {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 24 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn toggle(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_core_settings` is never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:95:4
[INFO] [stdout]    |
[INFO] [stdout] 95 | fn render_core_settings(ui: &mut Ui, core: &mut CoreConfig) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_plugin_config` is never used
[INFO] [stdout]    --> neoimv/src/config/ui.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn render_plugin_config(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnimationFrame` is never constructed
[INFO] [stdout]  --> neoimv/src/core/animation.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct AnimationFrame {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnimationState` is never constructed
[INFO] [stdout]   --> neoimv/src/core/animation.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AnimationState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> neoimv/src/core/animation.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AnimationState {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new(frames: Vec<AnimationFrame>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn is_animated(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn toggle_playback(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn play(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn pause(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn stop(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn frame_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn current_frame_index(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn tick(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn current_frame(&self) -> Option<&AnimationFrame> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn current_delay(&self) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadRequest` is never used
[INFO] [stdout]  --> neoimv/src/core/background_loader.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum LoadRequest {
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadResult` is never used
[INFO] [stdout]   --> neoimv/src/core/background_loader.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum LoadResult {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PluginDecoder` is never constructed
[INFO] [stdout]   --> neoimv/src/core/background_loader.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct PluginDecoder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BackgroundLoader` is never constructed
[INFO] [stdout]   --> neoimv/src/core/background_loader.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct BackgroundLoader {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `request_load` are never used
[INFO] [stdout]    --> neoimv/src/core/background_loader.rs:44:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl BackgroundLoader {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn request_load(&self, path: PathBuf) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IMAGE_EXTENSIONS` is never used
[INFO] [stdout]  --> neoimv/src/core/drag_drop.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const IMAGE_EXTENSIONS: &[&str] = &[
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_image_extension` is never used
[INFO] [stdout]  --> neoimv/src/core/drag_drop.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn is_image_extension(ext: &str) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_image_from_dropped` is never used
[INFO] [stdout]   --> neoimv/src/core/drag_drop.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn first_image_from_dropped(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THUMB_SIZE` is never used
[INFO] [stdout]  --> neoimv/src/core/filmstrip.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const THUMB_SIZE: u32 = 128;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Filmstrip` is never constructed
[INFO] [stdout]  --> neoimv/src/core/filmstrip.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Filmstrip {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `render`, and `cache_path` are never used
[INFO] [stdout]    --> neoimv/src/core/filmstrip.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl Filmstrip {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  18 |     pub fn new(cache_dir: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn cache_path(&self, image_path: &Path) -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_thumbnail` is never used
[INFO] [stdout]    --> neoimv/src/core/filmstrip.rs:135:4
[INFO] [stdout]     |
[INFO] [stdout] 135 | fn generate_thumbnail(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_thumbnail_cache` is never used
[INFO] [stdout]    --> neoimv/src/core/filmstrip.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn save_thumbnail_cache(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_thumbnail_cache` is never used
[INFO] [stdout]    --> neoimv/src/core/filmstrip.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn load_thumbnail_cache(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_system_fonts` is never used
[INFO] [stdout]  --> neoimv/src/core/fonts.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn detect_system_fonts() -> Vec<PathBuf> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `configure_fonts` is never used
[INFO] [stdout]   --> neoimv/src/core/fonts.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn configure_fonts(ctx: &egui::Context, font_override: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadError` is never used
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum LoadError {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DecodedImage` is never constructed
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct DecodedImage {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadedImage` is never used
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum LoadedImage {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_image` is never used
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn load_image(path: &Path) -> Result<DecodedImage, LoadError> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_image_animated` is never used
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn load_image_animated(path: &Path) -> Result<LoadedImage, LoadError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IMAGE_EXTENSIONS` is never used
[INFO] [stdout]  --> neoimv/src/core/navigator.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const IMAGE_EXTENSIONS: &[&str] = &[
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Navigator` is never constructed
[INFO] [stdout]  --> neoimv/src/core/navigator.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Navigator {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> neoimv/src/core/navigator.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Navigator {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn scan_directory(&mut self, path: &Path) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn current(&self) -> Option<&PathBuf> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn next(&mut self) -> Option<&PathBuf> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn prev(&mut self) -> Option<&PathBuf> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn current_index(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn images(&self) -> &[PathBuf] {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub fn go_to(&mut self, index: usize) -> Option<&PathBuf> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageRenderer` is never constructed
[INFO] [stdout]  --> neoimv/src/core/renderer.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct ImageRenderer {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FitMode` is never used
[INFO] [stdout]   --> neoimv/src/core/renderer.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum FitMode {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> neoimv/src/core/renderer.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl ImageRenderer {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn set_image(&mut self, ctx: &egui::Context, pixels: &[u8], width: u32, height: u32) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn zoom_in(&mut self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn zoom_out(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn set_fit_mode(&mut self, mode: FitMode) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn zoom_level(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn render(&mut self, ui: &mut Ui) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SaveError` is never used
[INFO] [stdout]  --> neoimv/src/core/save.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum SaveError {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_image` is never used
[INFO] [stdout]   --> neoimv/src/core/save.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn save_image(pixels: &[u8], width: u32, height: u32, path: &Path) -> Result<(), SaveError> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_as_dialog` is never used
[INFO] [stdout]   --> neoimv/src/core/save.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn save_as_dialog(current_path: Option<&Path>) -> Option<std::path::PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatusInfo` is never constructed
[INFO] [stdout]  --> neoimv/src/core/statusbar.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct StatusInfo<'a> {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_statusbar` is never used
[INFO] [stdout]   --> neoimv/src/core/statusbar.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn render_statusbar(ui: &mut Ui, info: &StatusInfo) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mutation` is never constructed
[INFO] [stdout]  --> neoimv/src/core/undo.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Mutation {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `byte_size` is never used
[INFO] [stdout]   --> neoimv/src/core/undo.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Mutation {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 11 |     pub fn byte_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UndoStack` is never constructed
[INFO] [stdout]   --> neoimv/src/core/undo.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct UndoStack {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> neoimv/src/core/undo.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl UndoStack {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(max_depth: usize, memory_cap_mb: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn push(&mut self, mutation: Mutation) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn undo(&mut self) -> Option<&Mutation> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn redo(&mut self) -> Option<&Mutation> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn current(&self) -> Option<&Mutation> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn depth(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn memory_usage_bytes(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WindowState` is never constructed
[INFO] [stdout]  --> neoimv/src/core/window.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct WindowState {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `default_for_monitor`, `load`, and `save` are never used
[INFO] [stdout]   --> neoimv/src/core/window.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl WindowState {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 15 |     /// Default to 80% of primary monitor size, or 800x600 minimum.
[INFO] [stdout] 16 |     pub fn default_for_monitor(monitor_width: f32, monitor_height: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn load(path: &Path) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn save(&self, path: &Path) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActionInfo` is never constructed
[INFO] [stdout]  --> neoimv/src/keymap/action.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ActionInfo {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActionRegistry` is never constructed
[INFO] [stdout]   --> neoimv/src/keymap/action.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct ActionRegistry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> neoimv/src/keymap/action.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ActionRegistry {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn register_core_actions(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn register(&mut self, id: String, label: String, category: String, plugin_name: String) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn get(&self, id: &str) -> Option<&ActionInfo> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn all_actions(&self) -> Vec<&ActionInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn actions_for_plugin(&self, plugin_name: &str) -> Vec<&ActionInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn grouped_actions(&self) -> Vec<(String, Vec<&ActionInfo>)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeymapConfig` is never constructed
[INFO] [stdout]  --> neoimv/src/keymap/config.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct KeymapConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> neoimv/src/keymap/config.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl KeymapConfig {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  15 |     pub fn load(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn save(&self, path: &Path) -> Result<(), std::io::Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn defaults() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn action_for_key(&self, key: &str) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn merge_plugin_defaults(&mut self, plugin_name: &str, defaults: &[(String, String)]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn rebind(&mut self, key: String, action: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn unbind_key(&mut self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn bind(&mut self, action: &str, key: &str) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn key_for_action(&self, action: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeymapEditor` is never constructed
[INFO] [stdout]  --> neoimv/src/keymap/ui.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct KeymapEditor {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> neoimv/src/keymap/ui.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl KeymapEditor {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_key_combo` is never used
[INFO] [stdout]    --> neoimv/src/keymap/ui.rs:101:4
[INFO] [stdout]     |
[INFO] [stdout] 101 | fn format_key_combo(mods: egui::Modifiers, key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key_name` is never used
[INFO] [stdout]    --> neoimv/src/keymap/ui.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn key_name(key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> neoimv/src/core/image_loader.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]   --> neoimv/src/core/filmstrip.rs:88:47
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...                   egui::Stroke::new(2.0, egui::Color32::WHITE),
[INFO] [stdout]    |                                         ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout]    = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]   --> neoimv/src/core/filmstrip.rs:88:47
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...                   egui::Stroke::new(2.0, egui::Color32::WHITE),
[INFO] [stdout]    |                                         ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout]    = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `action_registry` is never read
[INFO] [stdout]   --> neoimv/src/app.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct NeoimvApp {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     action_registry: ActionRegistry,
[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 `save` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl AppConfig {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn save(&self, path: &Path) -> Result<(), std::io::Error> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SettingsPanel` is never constructed
[INFO] [stdout]  --> neoimv/src/config/ui.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct SettingsPanel {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SettingsTab` is never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum SettingsTab {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `toggle`, and `render` are never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl SettingsPanel {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 24 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn toggle(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_core_settings` is never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:95:4
[INFO] [stdout]    |
[INFO] [stdout] 95 | fn render_core_settings(ui: &mut Ui, core: &mut CoreConfig) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_plugin_config` is never used
[INFO] [stdout]    --> neoimv/src/config/ui.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn render_plugin_config(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> neoimv/src/core/animation.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AnimationState {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn is_animated(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn toggle_playback(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn play(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn pause(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn stop(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn frame_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn current_frame_index(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn current_delay(&self) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unsupported` is never constructed
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum LoadError {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |     Unsupported,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LoadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NoImage` is never constructed
[INFO] [stdout]  --> neoimv/src/core/save.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum SaveError {
[INFO] [stdout]   |          --------- variant in this enum
[INFO] [stdout] 7 |     #[error("no image to save")]
[INFO] [stdout] 8 |     NoImage,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `SaveError` 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 `plugin_name` is never read
[INFO] [stdout]  --> neoimv/src/core/undo.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Mutation {
[INFO] [stdout]   |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 7 |     pub plugin_name: String,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current`, `can_undo`, `can_redo`, `clear`, `depth`, and `memory_usage_bytes` are never used
[INFO] [stdout]    --> neoimv/src/core/undo.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl UndoStack {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn current(&self) -> Option<&Mutation> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn depth(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn memory_usage_bytes(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `default_for_monitor` is never used
[INFO] [stdout]   --> neoimv/src/core/window.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl WindowState {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 15 |     /// Default to 80% of primary monitor size, or 800x600 minimum.
[INFO] [stdout] 16 |     pub fn default_for_monitor(monitor_width: f32, monitor_height: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `label`, `category`, and `plugin_name` are never read
[INFO] [stdout]  --> neoimv/src/keymap/action.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ActionInfo {
[INFO] [stdout]   |            ---------- fields in this struct
[INFO] [stdout] 5 |     pub id: String,          // "core:prev_image" or "rotate:rotate_cw"
[INFO] [stdout]   |         ^^
[INFO] [stdout] 6 |     pub label: String,       // "Previous Image"
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 7 |     pub category: String,    // "Navigation" or "Transform"
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 8 |     pub plugin_name: String, // "core" or "rotate"
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ActionInfo` 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: methods `get`, `all_actions`, `actions_for_plugin`, and `grouped_actions` are never used
[INFO] [stdout]   --> neoimv/src/keymap/action.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ActionRegistry {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn get(&self, id: &str) -> Option<&ActionInfo> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn all_actions(&self) -> Vec<&ActionInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn actions_for_plugin(&self, plugin_name: &str) -> Vec<&ActionInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn grouped_actions(&self) -> Vec<(String, Vec<&ActionInfo>)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save`, `merge_plugin_defaults`, `rebind`, `unbind_key`, `bind`, and `key_for_action` are never used
[INFO] [stdout]    --> neoimv/src/keymap/config.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl KeymapConfig {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn save(&self, path: &Path) -> Result<(), std::io::Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn merge_plugin_defaults(&mut self, plugin_name: &str, defaults: &[(String, String)]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn rebind(&mut self, key: String, action: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn unbind_key(&mut self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn bind(&mut self, action: &str, key: &str) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn key_for_action(&self, action: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeymapEditor` is never constructed
[INFO] [stdout]  --> neoimv/src/keymap/ui.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct KeymapEditor {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> neoimv/src/keymap/ui.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl KeymapEditor {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_key_combo` is never used
[INFO] [stdout]    --> neoimv/src/keymap/ui.rs:101:4
[INFO] [stdout]     |
[INFO] [stdout] 101 | fn format_key_combo(mods: egui::Modifiers, key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key_name` is never used
[INFO] [stdout]    --> neoimv/src/keymap/ui.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn key_name(key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fn_config_schema` and `fn_on_config_changed` are never read
[INFO] [stdout]   --> neoimv/src/plugin/ffi.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct LoadedPlugin {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn_config_schema: Option<unsafe extern "C" fn() -> ConfigFieldArray>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 47 |     fn_on_config_changed: Option<unsafe extern "C" fn(*const c_char)>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `capabilities`, `decode`, `on_config_changed`, and `config_schema` are never used
[INFO] [stdout]    --> neoimv/src/plugin/ffi.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl LoadedPlugin {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn capabilities(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn decode(&self, data: &[u8]) -> Option<MutatedImage> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn on_config_changed(&self, config_json: &std::ffi::CString) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 336 |     pub fn config_schema(&self) -> Vec<super::manager::ConfigFieldInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> neoimv/src/plugin/manager.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl PluginManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn unload_plugin(&mut self, name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn plugins_mut(&mut self) -> &mut [LoadedPlugin] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn decoders_for_extension(&self, ext: &str) -> Vec<&LoadedPlugin> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn ui_plugins(&self) -> Vec<&LoadedPlugin> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn action_plugins(&self) -> Vec<&LoadedPlugin> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn plugin_names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn config_schema(&self, name: &str) -> Option<Vec<ConfigFieldInfo>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_plugin_dir` is never used
[INFO] [stdout]    --> neoimv/src/plugin/manager.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn default_plugin_dir() -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xdg_data_home_fallback` is never used
[INFO] [stdout]    --> neoimv/src/plugin/manager.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn xdg_data_home_fallback() -> PathBuf {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigFieldInfo` is never constructed
[INFO] [stdout]    --> neoimv/src/plugin/manager.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub struct ConfigFieldInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `enabled_plugins` is never used
[INFO] [stdout]   --> neoimv/src/plugin/registry.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl PluginRegistry {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn enabled_plugins(&self) -> Vec<&PluginEntry> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `action_registry` is never read
[INFO] [stdout]   --> neoimv/src/app.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct NeoimvApp {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     action_registry: ActionRegistry,
[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 `save` is never used
[INFO] [stdout]   --> neoimv/src/config/settings.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl AppConfig {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn save(&self, path: &Path) -> Result<(), std::io::Error> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SettingsPanel` is never constructed
[INFO] [stdout]  --> neoimv/src/config/ui.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct SettingsPanel {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SettingsTab` is never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum SettingsTab {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `toggle`, and `render` are never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl SettingsPanel {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 24 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn toggle(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_core_settings` is never used
[INFO] [stdout]   --> neoimv/src/config/ui.rs:95:4
[INFO] [stdout]    |
[INFO] [stdout] 95 | fn render_core_settings(ui: &mut Ui, core: &mut CoreConfig) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_plugin_config` is never used
[INFO] [stdout]    --> neoimv/src/config/ui.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn render_plugin_config(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `play`, `frame_count`, and `current_delay` are never used
[INFO] [stdout]   --> neoimv/src/core/animation.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AnimationState {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn play(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn frame_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn current_delay(&self) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unsupported` is never constructed
[INFO] [stdout]   --> neoimv/src/core/image_loader.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum LoadError {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |     Unsupported,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LoadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NoImage` is never constructed
[INFO] [stdout]  --> neoimv/src/core/save.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum SaveError {
[INFO] [stdout]   |          --------- variant in this enum
[INFO] [stdout] 7 |     #[error("no image to save")]
[INFO] [stdout] 8 |     NoImage,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `SaveError` 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 `id`, `label`, and `category` are never read
[INFO] [stdout]  --> neoimv/src/keymap/action.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ActionInfo {
[INFO] [stdout]   |            ---------- fields in this struct
[INFO] [stdout] 5 |     pub id: String,          // "core:prev_image" or "rotate:rotate_cw"
[INFO] [stdout]   |         ^^
[INFO] [stdout] 6 |     pub label: String,       // "Previous Image"
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 7 |     pub category: String,    // "Navigation" or "Transform"
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ActionInfo` 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: methods `all_actions`, `actions_for_plugin`, and `grouped_actions` are never used
[INFO] [stdout]   --> neoimv/src/keymap/action.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ActionRegistry {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn all_actions(&self) -> Vec<&ActionInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn actions_for_plugin(&self, plugin_name: &str) -> Vec<&ActionInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn grouped_actions(&self) -> Vec<(String, Vec<&ActionInfo>)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save`, `unbind_key`, `bind`, and `key_for_action` are never used
[INFO] [stdout]    --> neoimv/src/keymap/config.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl KeymapConfig {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn save(&self, path: &Path) -> Result<(), std::io::Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn unbind_key(&mut self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn bind(&mut self, action: &str, key: &str) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn key_for_action(&self, action: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeymapEditor` is never constructed
[INFO] [stdout]  --> neoimv/src/keymap/ui.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct KeymapEditor {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> neoimv/src/keymap/ui.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl KeymapEditor {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_key_combo` is never used
[INFO] [stdout]    --> neoimv/src/keymap/ui.rs:101:4
[INFO] [stdout]     |
[INFO] [stdout] 101 | fn format_key_combo(mods: egui::Modifiers, key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key_name` is never used
[INFO] [stdout]    --> neoimv/src/keymap/ui.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn key_name(key: egui::Key) -> String {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fn_config_schema` and `fn_on_config_changed` are never read
[INFO] [stdout]   --> neoimv/src/plugin/ffi.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct LoadedPlugin {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn_config_schema: Option<unsafe extern "C" fn() -> ConfigFieldArray>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 47 |     fn_on_config_changed: Option<unsafe extern "C" fn(*const c_char)>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `capabilities`, `decode`, `on_config_changed`, and `config_schema` are never used
[INFO] [stdout]    --> neoimv/src/plugin/ffi.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl LoadedPlugin {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn capabilities(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn decode(&self, data: &[u8]) -> Option<MutatedImage> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn on_config_changed(&self, config_json: &std::ffi::CString) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 336 |     pub fn config_schema(&self) -> Vec<super::manager::ConfigFieldInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> neoimv/src/plugin/manager.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl PluginManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn unload_plugin(&mut self, name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn plugins_mut(&mut self) -> &mut [LoadedPlugin] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn decoders_for_extension(&self, ext: &str) -> Vec<&LoadedPlugin> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn ui_plugins(&self) -> Vec<&LoadedPlugin> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn action_plugins(&self) -> Vec<&LoadedPlugin> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn plugin_names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn config_schema(&self, name: &str) -> Option<Vec<ConfigFieldInfo>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_plugin_dir` is never used
[INFO] [stdout]    --> neoimv/src/plugin/manager.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn default_plugin_dir() -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xdg_data_home_fallback` is never used
[INFO] [stdout]    --> neoimv/src/plugin/manager.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn xdg_data_home_fallback() -> PathBuf {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigFieldInfo` is never constructed
[INFO] [stdout]    --> neoimv/src/plugin/manager.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub struct ConfigFieldInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `enabled_plugins` is never used
[INFO] [stdout]   --> neoimv/src/plugin/registry.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl PluginRegistry {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn enabled_plugins(&self) -> Vec<&PluginEntry> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 34s
[INFO] running `Command { std: "docker" "inspect" "09a9473443a9ccffe220543f01da3459da66f0e48533dda4a8333159e441f980", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "09a9473443a9ccffe220543f01da3459da66f0e48533dda4a8333159e441f980", kill_on_drop: false }`
[INFO] [stdout] 09a9473443a9ccffe220543f01da3459da66f0e48533dda4a8333159e441f980
