[INFO] cloning repository https://github.com/cesco345/youtube_image_viewer [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cesco345/youtube_image_viewer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcesco345%2Fyoutube_image_viewer", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcesco345%2Fyoutube_image_viewer'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a19bc197e67181dcab6e72b9ffb04ba38cc898b6 [INFO] testing cesco345/youtube_image_viewer against try#7af779037716ae4125ceabb429791b4cf5dd0a43 for pr-136932 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcesco345%2Fyoutube_image_viewer" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/cesco345/youtube_image_viewer on toolchain 7af779037716ae4125ceabb429791b4cf5dd0a43 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+7af779037716ae4125ceabb429791b4cf5dd0a43" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/cesco345/youtube_image_viewer [INFO] finished tweaking git repo https://github.com/cesco345/youtube_image_viewer [INFO] tweaked toml for git repo https://github.com/cesco345/youtube_image_viewer written to /workspace/builds/worker-2-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/cesco345/youtube_image_viewer 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" "+7af779037716ae4125ceabb429791b4cf5dd0a43" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+7af779037716ae4125ceabb429791b4cf5dd0a43" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a4bcc80a001492cd14ed01b292f2c42fc39361d28c077e58af7c0a39afa58def [INFO] running `Command { std: "docker" "start" "-a" "a4bcc80a001492cd14ed01b292f2c42fc39361d28c077e58af7c0a39afa58def", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a4bcc80a001492cd14ed01b292f2c42fc39361d28c077e58af7c0a39afa58def", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a4bcc80a001492cd14ed01b292f2c42fc39361d28c077e58af7c0a39afa58def", kill_on_drop: false }` [INFO] [stdout] a4bcc80a001492cd14ed01b292f2c42fc39361d28c077e58af7c0a39afa58def [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+7af779037716ae4125ceabb429791b4cf5dd0a43" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2b7fd70c6dd2c08bfaf2a2b8ed71369e91485e33e0b7a1c669a8e14f954ff9b0 [INFO] running `Command { std: "docker" "start" "-a" "2b7fd70c6dd2c08bfaf2a2b8ed71369e91485e33e0b7a1c669a8e14f954ff9b0", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.92 [INFO] [stderr] Compiling unicode-ident v1.0.14 [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling pkg-config v0.3.31 [INFO] [stderr] Compiling libc v0.2.169 [INFO] [stderr] Compiling autocfg v1.4.0 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling hashbrown v0.15.2 [INFO] [stderr] Compiling equivalent v1.0.1 [INFO] [stderr] Compiling serde v1.0.217 [INFO] [stderr] Compiling target-lexicon v0.12.16 [INFO] [stderr] Compiling winnow v0.6.22 [INFO] [stderr] Compiling smallvec v1.13.2 [INFO] [stderr] Compiling once_cell v1.20.2 [INFO] [stderr] Compiling version-compare v0.2.0 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling memchr v2.7.4 [INFO] [stderr] Compiling byteorder v1.5.0 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling log v0.4.22 [INFO] [stderr] Compiling siphasher v0.3.11 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling stable_deref_trait v1.2.0 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling typenum v1.17.0 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Compiling phf_shared v0.8.0 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling simd-adler32 v0.3.7 [INFO] [stderr] Compiling quote v1.0.38 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling pin-project-lite v0.2.15 [INFO] [stderr] Compiling indexmap v2.7.0 [INFO] [stderr] Compiling bitflags v2.6.0 [INFO] [stderr] Compiling adler2 v2.0.0 [INFO] [stderr] Compiling libloading v0.8.6 [INFO] [stderr] Compiling cfg-expr v0.15.8 [INFO] [stderr] Compiling syn v2.0.94 [INFO] [stderr] Compiling miniz_oxide v0.8.2 [INFO] [stderr] Compiling xml-rs v0.8.24 [INFO] [stderr] Compiling futures-core v0.3.31 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling jobserver v0.1.32 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling getrandom v0.2.15 [INFO] [stderr] Compiling dlib v0.5.2 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling rand_pcg v0.2.1 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling crc32fast v1.4.2 [INFO] [stderr] Compiling cc v1.2.7 [INFO] [stderr] Compiling bytes v1.9.0 [INFO] [stderr] Compiling semver v1.0.24 [INFO] [stderr] Compiling proc-macro-hack v0.5.20+deprecated [INFO] [stderr] Compiling litemap v0.7.4 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling writeable v0.5.5 [INFO] [stderr] Compiling new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling itoa v1.0.14 [INFO] [stderr] Compiling flate2 v1.0.35 [INFO] [stderr] Compiling wayland-scanner v0.29.5 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Compiling phf_shared v0.10.0 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling rayon-core v1.12.1 [INFO] [stderr] Compiling futures-io v0.3.31 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling wayland-sys v0.29.5 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling anyhow v1.0.95 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Compiling icu_locid_transform_data v1.5.0 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling either v1.13.0 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling signal-hook-registry v1.4.2 [INFO] [stderr] Compiling mio v1.0.3 [INFO] [stderr] Compiling socket2 v0.5.8 [INFO] [stderr] Compiling parking_lot v0.12.3 [INFO] [stderr] Compiling icu_properties_data v1.5.0 [INFO] [stderr] Compiling futures-task v0.3.31 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling cpufeatures v0.2.16 [INFO] [stderr] Compiling foreign-types-shared v0.1.1 [INFO] [stderr] Compiling weezl v0.1.8 [INFO] [stderr] Compiling openssl v0.10.68 [INFO] [stderr] Compiling color_quant v1.1.0 [INFO] [stderr] Compiling foreign-types v0.3.2 [INFO] [stderr] Compiling pathfinder_simd v0.5.4 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling wayland-client v0.29.5 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling http v0.2.12 [INFO] [stderr] Compiling nix v0.24.3 [INFO] [stderr] Compiling cmake v0.1.52 [INFO] [stderr] Compiling fdeflate v0.3.7 [INFO] [stderr] Compiling openssl-sys v0.9.104 [INFO] [stderr] Compiling zstd-sys v2.0.13+zstd.1.5.6 [INFO] [stderr] Compiling bzip2-sys v0.1.11+1.0.8 [INFO] [stderr] Compiling freetype-sys v0.20.1 [INFO] [stderr] Compiling yeslogic-fontconfig-sys v6.0.0 [INFO] [stderr] Compiling toml_datetime v0.6.8 [INFO] [stderr] Compiling serde_spanned v0.6.8 [INFO] [stderr] Compiling tracing-core v0.1.33 [INFO] [stderr] Compiling built v0.7.5 [INFO] [stderr] Compiling aligned-vec v0.5.0 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling zstd-safe v5.0.2+zstd.1.5.2 [INFO] [stderr] Compiling jpeg-decoder v0.3.1 [INFO] [stderr] Compiling toml_edit v0.22.22 [INFO] [stderr] Compiling utf8_iter v1.0.4 [INFO] [stderr] Compiling cmk v0.1.2 [INFO] [stderr] Compiling utf16_iter v1.0.5 [INFO] [stderr] Compiling arrayvec v0.7.6 [INFO] [stderr] Compiling precomputed-hash v0.1.1 [INFO] [stderr] Compiling httparse v1.9.5 [INFO] [stderr] Compiling mac v0.1.1 [INFO] [stderr] Compiling io-lifetimes v1.0.11 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling icu_normalizer_data v1.5.0 [INFO] [stderr] Compiling percent-encoding v2.3.1 [INFO] [stderr] Compiling futures-sink v0.3.31 [INFO] [stderr] Compiling native-tls v0.2.12 [INFO] [stderr] Compiling synstructure v0.13.1 [INFO] [stderr] Compiling bytemuck v1.21.0 [INFO] [stderr] Compiling write16 v1.0.0 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling fltk-sys v1.5.2 [INFO] [stderr] Compiling futf v0.1.5 [INFO] [stderr] Compiling rav1e v0.7.1 [INFO] [stderr] Compiling wayland-commons v0.29.5 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Compiling v_frame v0.3.8 [INFO] [stderr] Compiling png v0.17.16 [INFO] [stderr] Compiling rayon v1.10.0 [INFO] [stderr] Compiling inout v0.1.3 [INFO] [stderr] Compiling polling v2.8.0 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling scoped-tls v1.0.1 [INFO] [stderr] Compiling downcast-rs v1.2.1 [INFO] [stderr] Compiling rustix v0.38.42 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling toml v0.8.19 [INFO] [stderr] Compiling rustix v0.37.28 [INFO] [stderr] Compiling powerfmt v0.2.0 [INFO] [stderr] Compiling utf-8 v0.7.6 [INFO] [stderr] Compiling dtoa v1.0.9 [INFO] [stderr] Compiling cssparser v0.27.2 [INFO] [stderr] Compiling system-deps v6.2.2 [INFO] [stderr] Compiling ryu v1.0.18 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling base64ct v1.6.0 [INFO] [stderr] Compiling openssl-probe v0.1.5 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling dtoa-short v0.3.5 [INFO] [stderr] Compiling tendril v0.4.3 [INFO] [stderr] Compiling password-hash v0.4.2 [INFO] [stderr] Compiling html5ever v0.25.2 [INFO] [stderr] Compiling av1-grain v0.2.3 [INFO] [stderr] Compiling deranged v0.3.11 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling zerofrom-derive v0.1.5 [INFO] [stderr] Compiling yoke-derive v0.7.5 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.217 [INFO] [stderr] Compiling glib-sys v0.16.3 [INFO] [stderr] Compiling gobject-sys v0.16.3 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling atk-sys v0.16.0 [INFO] [stderr] Compiling zerocopy v0.7.35 [INFO] [stderr] Compiling gdk-sys v0.16.0 [INFO] [stderr] Compiling gio-sys v0.16.3 [INFO] [stderr] Compiling pango-sys v0.16.3 [INFO] [stderr] Compiling gdk-pixbuf-sys v0.16.3 [INFO] [stderr] Compiling tokio v1.42.0 [INFO] [stderr] Compiling cairo-sys-rs v0.16.3 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling gtk-sys v0.16.0 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling profiling-procmacros v1.0.16 [INFO] [stderr] Compiling ppv-lite86 v0.2.20 [INFO] [stderr] Compiling zerofrom v0.1.5 [INFO] [stderr] Compiling profiling v1.0.16 [INFO] [stderr] Compiling yoke v0.7.5 [INFO] [stderr] Compiling zerovec v0.10.4 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling maybe-rayon v0.1.1 [INFO] [stderr] Compiling arg_enum_proc_macro v0.3.4 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Compiling cssparser-macros v0.6.1 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling tinystr v0.7.6 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling icu_collections v1.5.0 [INFO] [stderr] Compiling icu_locid v1.5.0 [INFO] [stderr] Compiling form_urlencoded v1.2.1 [INFO] [stderr] Compiling http-body v0.4.6 [INFO] [stderr] Compiling wayland-protocols v0.29.5 [INFO] [stderr] Compiling sha2 v0.10.8 [INFO] [stderr] Compiling phf_generator v0.8.0 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling phf_codegen v0.8.0 [INFO] [stderr] Compiling phf_macros v0.8.0 [INFO] [stderr] Compiling phf_generator v0.10.0 [INFO] [stderr] Compiling itertools v0.12.1 [INFO] [stderr] Compiling selectors v0.22.0 [INFO] [stderr] Compiling string_cache_codegen v0.5.2 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling icu_provider v1.5.0 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Compiling x11-dl v2.21.0 [INFO] [stderr] Compiling async-io v1.13.0 [INFO] [stderr] Compiling waker-fn v1.2.0 [INFO] [stderr] Compiling font-kit v0.14.2 [INFO] [stderr] Compiling linux-raw-sys v0.4.14 [INFO] [stderr] Compiling markup5ever v0.10.1 [INFO] [stderr] Compiling icu_locid_transform v1.5.0 [INFO] [stderr] Compiling parking v2.2.1 [INFO] [stderr] Compiling imgref v1.11.0 [INFO] [stderr] Compiling phf v0.8.0 [INFO] [stderr] Compiling plotters-backend v0.3.7 [INFO] [stderr] Compiling nodrop v0.1.14 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling event-listener v2.5.3 [INFO] [stderr] Compiling noop_proc_macro v0.3.0 [INFO] [stderr] Compiling convert_case v0.4.0 [INFO] [stderr] Compiling itoa v0.4.8 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling linux-raw-sys v0.3.8 [INFO] [stderr] Compiling fastrand v1.9.0 [INFO] [stderr] Compiling bitstream-io v2.6.0 [INFO] [stderr] Compiling matches v0.1.10 [INFO] [stderr] Compiling num-conv v0.1.0 [INFO] [stderr] Compiling quick-error v2.0.1 [INFO] [stderr] Compiling time-core v0.1.2 [INFO] [stderr] Compiling serde_json v1.0.134 [INFO] [stderr] Compiling futures-lite v1.13.0 [INFO] [stderr] Compiling derive_more v0.99.18 [INFO] [stderr] Compiling time v0.3.37 [INFO] [stderr] Compiling loop9 v0.1.5 [INFO] [stderr] Compiling async-lock v2.8.0 [INFO] [stderr] Compiling tokio-util v0.7.13 [INFO] [stderr] Compiling icu_properties v1.5.1 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling servo_arc v0.1.1 [INFO] [stderr] Compiling h2 v0.3.26 [INFO] [stderr] Compiling pbkdf2 v0.11.0 [INFO] [stderr] Compiling regex v1.11.1 [INFO] [stderr] Compiling pathfinder_geometry v0.5.1 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling bzip2 v0.4.4 [INFO] [stderr] Compiling dirs v5.0.1 [INFO] [stderr] Compiling image v0.24.9 [INFO] [stderr] Compiling avif-serialize v0.8.2 [INFO] [stderr] Compiling minifb v0.27.0 [INFO] [stderr] Compiling gif v0.12.0 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling icu_normalizer v1.5.0 [INFO] [stderr] Compiling string_cache v0.8.7 [INFO] [stderr] Compiling socket2 v0.4.10 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Compiling crossbeam-channel v0.5.14 [INFO] [stderr] Compiling fxhash v0.2.1 [INFO] [stderr] Compiling zune-inflate v0.2.54 [INFO] [stderr] Compiling half v2.4.1 [INFO] [stderr] Compiling idna_adapter v1.2.0 [INFO] [stderr] Compiling ttf-parser v0.25.1 [INFO] [stderr] Compiling zune-core v0.4.12 [INFO] [stderr] Compiling idna v1.0.3 [INFO] [stderr] Compiling byteorder-lite v0.1.0 [INFO] [stderr] Compiling unicode-width v0.1.14 [INFO] [stderr] Compiling bit_field v0.10.2 [INFO] [stderr] Compiling float-ord v0.3.2 [INFO] [stderr] Compiling ttf-parser v0.15.2 [INFO] [stderr] Compiling xcursor v0.3.8 [INFO] [stderr] Compiling hyper v0.14.32 [INFO] [stderr] Compiling rgb v0.8.50 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling thin-slice v0.1.1 [INFO] [stderr] Compiling iana-time-zone v0.1.61 [INFO] [stderr] Compiling rfd v0.11.4 [INFO] [stderr] Compiling base64 v0.21.7 [INFO] [stderr] Compiling lebe v0.5.2 [INFO] [stderr] Compiling constant_time_eq v0.1.5 [INFO] [stderr] Compiling chrono v0.4.39 [INFO] [stderr] Compiling exr v1.73.0 [INFO] [stderr] Compiling tempfile v3.15.0 [INFO] [stderr] Compiling rustls-pemfile v1.0.4 [INFO] [stderr] Compiling plotters-bitmap v0.3.7 [INFO] [stderr] Compiling wayland-cursor v0.29.5 [INFO] [stderr] Compiling url v2.5.4 [INFO] [stderr] Compiling getopts v0.2.21 [INFO] [stderr] Compiling image-webp v0.2.0 [INFO] [stderr] Compiling zune-jpeg v0.4.14 [INFO] [stderr] Compiling ravif v0.11.11 [INFO] [stderr] Compiling zstd v0.11.2+zstd.1.5.2 [INFO] [stderr] Compiling zip v0.6.6 [INFO] [stderr] Compiling owned_ttf_parser v0.15.2 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling hyper-tls v0.5.0 [INFO] [stderr] Compiling plotters-svg v0.3.7 [INFO] [stderr] Compiling qoi v0.4.1 [INFO] [stderr] Compiling tiff v0.9.1 [INFO] [stderr] Compiling gif v0.13.1 [INFO] [stderr] Compiling console v0.15.10 [INFO] [stderr] Compiling csv-core v0.1.11 [INFO] [stderr] Compiling encoding_rs v0.8.35 [INFO] [stderr] Compiling raw-window-handle v0.5.2 [INFO] [stderr] Compiling mime v0.3.17 [INFO] [stderr] Compiling ab_glyph_rasterizer v0.1.8 [INFO] [stderr] Compiling ipnet v2.10.1 [INFO] [stderr] Compiling ttf-parser v0.20.0 [INFO] [stderr] Compiling number_prefix v0.4.0 [INFO] [stderr] Compiling pathdiff v0.2.3 [INFO] [stderr] Compiling ego-tree v0.6.3 [INFO] [stderr] Compiling mutate_once v0.1.1 [INFO] [stderr] Compiling sync_wrapper v0.1.2 [INFO] [stderr] Compiling raw-window-handle v0.6.2 [INFO] [stderr] Compiling scraper v0.12.0 [INFO] [stderr] Compiling kamadak-exif v0.5.5 [INFO] [stderr] Compiling indicatif v0.16.2 [INFO] [stderr] Compiling open v3.2.0 [INFO] [stderr] Compiling image v0.25.5 [INFO] [stderr] Compiling rusttype v0.9.3 [INFO] [stderr] Compiling csv v1.3.1 [INFO] [stderr] Compiling epub v1.2.4 [INFO] [stderr] Compiling base64 v0.13.1 [INFO] [stderr] Compiling reqwest v0.11.27 [INFO] [stderr] Compiling plotters v0.3.7 [INFO] [stderr] Compiling fltk v1.5.2 [INFO] [stderr] Compiling fltk-theme v0.7.4 [INFO] [stderr] Compiling youtube_image-viewer v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `crop_tool::CropSelection` [INFO] [stdout] --> src/menu/edit/crop/mod.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub use crop_tool::CropSelection; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/menu/edit/filters/basic/hue.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 47 | let (r, g, b) = match (h as i32) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 47 - let (r, g, b) = match (h as i32) { [INFO] [stdout] 47 + let (r, g, b) = match h as i32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/menu/edit/filters/advanced/convolution.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | ((filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 197 - ((filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8) [INFO] [stdout] 197 + (filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/menu/edit/filters/advanced/pixelate.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | ((pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 139 - ((pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stdout] 139 + (pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `EdgeDetectionFilter` and `NoiseFilter` [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | EdgeDetectionFilter, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 29 | EdgeDetectionMethod, [INFO] [stdout] 30 | NoiseFilter, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `start_interactive_pixelate` [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | start_interactive_pixelate, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `handle_apply_motion_blur` and `handle_apply_posterize` [INFO] [stdout] --> src/menu/edit/filters/dialog.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | handle_apply_posterize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 45 | handle_apply_motion_blur, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::ImageFilter` [INFO] [stdout] --> src/menu/edit/filters/pixelate_tool.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use super::ImageFilter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConvolutionType` and `EdgeDetectionMethod` [INFO] [stdout] --> src/menu/edit/filters/mod.rs:35:20 [INFO] [stdout] | [INFO] [stdout] 35 | pub use advanced::{ConvolutionType, EdgeDetectionMethod}; // Re-export from advanced module [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/menu/edit/layers/color_filter.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | ((color as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 73 - ((color as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stdout] 73 + (color as f32 * factor + original as f32 * (1.0 - factor)) as u8 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `color_tool::start_interactive_color` [INFO] [stdout] --> src/menu/edit/layers/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use color_tool::start_interactive_color; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `dialog::show_cell_analysis_dialog` [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:8:13 [INFO] [stdout] | [INFO] [stdout] 8 | dialog::show_cell_analysis_dialog, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `handle_batch_analysis`, `handle_cell_analysis`, `handle_export_analysis`, `handle_show_statistics`, and `handle_stop_analysis` [INFO] [stdout] --> src/menu/scientific/analysis/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | handle_cell_analysis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 8 | handle_batch_analysis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | handle_show_statistics, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 10 | handle_export_analysis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 11 | handle_stop_analysis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `fltk::image::RgbImage` [INFO] [stdout] --> src/scientific/analysis/colocalization.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use fltk::image::RgbImage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/scientific/analysis/colocalization.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:68:82 [INFO] [stdout] | [INFO] [stdout] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stdout] | -- lifetime `'a` declared here ^ this elided lifetime gets resolved as `'a` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:68:88 [INFO] [stdout] | [INFO] [stdout] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stdout] | -- lifetime `'a` declared here ^ this elided lifetime gets resolved as `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MeasurementTool` [INFO] [stdout] --> src/scientific/analysis/cell_analysis.rs:3:23 [INFO] [stdout] | [INFO] [stdout] 3 | types::{ROIShape, MeasurementTool}, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `fltk::image::RgbImage` [INFO] [stdout] --> src/scientific/calibration/spatial_calibration.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use fltk::image::RgbImage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Metadata` [INFO] [stdout] --> src/scientific/state/scientific_state.rs:7:50 [INFO] [stdout] | [INFO] [stdout] 7 | layers::{Channel, Annotation, AnnotationType,Metadata, Calibration}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Button` and `Pack` [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | group::{Group, Pack}, [INFO] [stdout] | ^^^^ [INFO] [stdout] 8 | button::{RadioRoundButton, Button}, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AnnotationType` and `Annotation` [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 15 | layers::{Annotation, AnnotationType}, [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:466:45 [INFO] [stdout] | [INFO] [stdout] 466 | ... let angle = (i as f64 * 2.0 * std::f64::consts::PI / num_points as f64); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 466 - let angle = (i as f64 * 2.0 * std::f64::consts::PI / num_points as f64); [INFO] [stdout] 466 + let angle = i as f64 * 2.0 * std::f64::consts::PI / num_points as f64; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Event` [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:2:13 [INFO] [stdout] | [INFO] [stdout] 2 | enums::{Event, Color, Align}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `measurement_tool::*` [INFO] [stdout] --> src/scientific/tools/interactive/mod.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub use measurement_tool::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ScaleRenderer` [INFO] [stdout] --> src/scientific/tools/handlers/scale.rs:4:36 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::scientific::rendering::{ScaleRenderer, FrameRenderer}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MeasurementTool`, `ROIShape`, and `ROITool` [INFO] [stdout] --> src/scientific/tools/mod.rs:5:23 [INFO] [stdout] | [INFO] [stdout] 5 | pub use interactive::{ROITool, ROIShape, MeasurementTool}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Align` and `Input` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:6:25 [INFO] [stdout] | [INFO] [stdout] 6 | input::{FloatInput, Input}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 9 | enums::{Color, FrameType, Align}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> src/scientific/ui/measurement_dialog.rs:12:25 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::scientific::{self, Annotation, AnnotationType}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FloatInput` [INFO] [stdout] --> src/scientific/ui/scale_dialog.rs:4:20 [INFO] [stdout] | [INFO] [stdout] 4 | input::{Input, FloatInput}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Color` [INFO] [stdout] --> src/scientific/ui/cell_analysis/dialog.rs:7:13 [INFO] [stdout] | [INFO] [stdout] 7 | enums::{Color, FrameType}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CellStatistics` and `StatisticalAnalysis` [INFO] [stdout] --> src/scientific/ui/cell_analysis/dialog.rs:16:31 [INFO] [stdout] | [INFO] [stdout] 16 | cell_statistics::{CellStatistics, StatisticalAnalysis} [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Pack` [INFO] [stdout] --> src/scientific/ui/cell_analysis/statistics.rs:5:13 [INFO] [stdout] | [INFO] [stdout] 5 | group::{Pack, Tabs, Group}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `dialog::show_cell_analysis_dialog` [INFO] [stdout] --> src/scientific/ui/cell_analysis/mod.rs:6:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub use dialog::show_cell_analysis_dialog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `statistics::show_statistics_dialog` [INFO] [stdout] --> src/scientific/ui/cell_analysis/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use statistics::show_statistics_dialog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `export_batch_measurements` and `export_measurement_data` [INFO] [stdout] --> src/scientific/ui/cell_analysis/mod.rs:8:18 [INFO] [stdout] | [INFO] [stdout] 8 | pub use export::{export_measurement_data, export_batch_measurements}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Font` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | enums::{Color, Font, FrameType, Align}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `collections::HashMap` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:12:34 [INFO] [stdout] | [INFO] [stdout] 12 | use std::{rc::Rc, cell::RefCell, collections::HashMap}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FrameType` [INFO] [stdout] --> src/scientific/ui/roi/components/line_style_selector.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 10 | enums::{FrameType, Align}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `measurement_table::MeasurementTable` [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use measurement_table::MeasurementTable; // Make public [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Color` [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | enums::{Align, Color, FrameType}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ROIMeasurements`, `ROIShape`, and `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | types::{ROIMeasurements, ROIShape}, [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] 13 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BatchDialog` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:11:24 [INFO] [stdout] | [INFO] [stdout] 11 | pub use batch_dialog::{BatchDialog, show_batch_analysis_dialog}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `batch_dialog::*` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use batch_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `export_dialog::*` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use export_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `measurement_dialog::*` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use measurement_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `properties_dialog::*` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub use properties_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self::batch_dialog::BatchStatistics` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use self::batch_dialog::BatchStatistics; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `cell_analysis::*` [INFO] [stdout] --> src/scientific/ui/mod.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use cell_analysis::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `roi::*` [INFO] [stdout] --> src/scientific/ui/mod.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use roi::*; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::scientific::rendering::frame_renderer::FrameRenderer` [INFO] [stdout] --> src/scientific/rendering/scale_renderer.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::scientific::rendering::frame_renderer::FrameRenderer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Metadata` [INFO] [stdout] --> src/scientific/mod.rs:12:55 [INFO] [stdout] | [INFO] [stdout] 12 | pub use layers::{Channel, Annotation, AnnotationType, Metadata}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ColocalizationAnalysis` [INFO] [stdout] --> src/scientific/mod.rs:13:38 [INFO] [stdout] | [INFO] [stdout] 13 | pub use analysis::{IntensityProfile, ColocalizationAnalysis}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `calibration::SpatialCalibration` [INFO] [stdout] --> src/scientific/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use calibration::SpatialCalibration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `state::ScientificState` [INFO] [stdout] --> src/scientific/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use state::ScientificState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LegendPosition`, `MeasurementTool`, `ROIShape`, and `ROITool` [INFO] [stdout] --> src/scientific/mod.rs:16:17 [INFO] [stdout] | [INFO] [stdout] 16 | pub use types::{LegendPosition, ROIShape, ROITool, MeasurementTool}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `reporting::CalibrationReport` [INFO] [stdout] --> src/scientific/mod.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use reporting::CalibrationReport; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `visualization::CellVisualizer` [INFO] [stdout] --> src/scientific/mod.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use visualization::CellVisualizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Event` [INFO] [stdout] --> src/main.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | enums::{Shortcut, Event, CallbackTrigger}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::scientific::tools::interactive::cell_analysis_tool::CellAnalysisState` [INFO] [stdout] --> src/main.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::scientific::tools::interactive::cell_analysis_tool::CellAnalysisState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `prelude` [INFO] [stdout] --> src/menu/file/open.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | prelude::*, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `prelude` [INFO] [stdout] --> src/scientific/tools/interactive/cell_analysis_tool.rs:1:29 [INFO] [stdout] | [INFO] [stdout] 1 | use fltk::{image::RgbImage, prelude::*, enums::Event}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/menu/edit/crop/crop_tool.rs:132:17 [INFO] [stdout] | [INFO] [stdout] 132 | if let Some(mut fltk_image) = cropped_img { [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> src/menu/edit/watermark/templates/defaults.rs:15:13 [INFO] [stdout] | [INFO] [stdout] 15 | let now = chrono::Utc::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pack` [INFO] [stdout] --> src/menu/edit/layers/dialog.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | pack: &mut Pack, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pack` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pack` [INFO] [stdout] --> src/menu/edit/layers/dialog.rs:139:5 [INFO] [stdout] | [INFO] [stdout] 139 | pack: &mut Pack, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pack` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `filter` [INFO] [stdout] --> src/menu/edit/layers/interactive_tool/mod.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | let filter = ColorFilter::new(color); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_filter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame_clone` [INFO] [stdout] --> src/menu/edit/layers/color_tool.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | let frame_clone = frame_clone.clone(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:78:31 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn handle_show_statistics(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:92:31 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn handle_export_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_analyzing` [INFO] [stdout] --> src/menu/scientific/analysis/cell.rs:157:25 [INFO] [stdout] | [INFO] [stdout] 157 | let is_analyzing = state_ref.scientific_state.is_analyzing_cells(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_analyzing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stats` [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:89:31 [INFO] [stdout] | [INFO] [stdout] 89 | for (metric_name, stats, values) in &metrics { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_stats` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:224:15 [INFO] [stdout] | [INFO] [stdout] 224 | fn percentile(mut values: impl Iterator, p: f64) -> f64 { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `unit` [INFO] [stdout] --> src/scientific/state/scientific_state.rs:449:54 [INFO] [stdout] | [INFO] [stdout] 449 | AnnotationType::Scale { pixels_per_unit, unit } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `unit: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pixels_per_unit` [INFO] [stdout] --> src/scientific/state/scientific_state.rs:491:103 [INFO] [stdout] | [INFO] [stdout] 491 | fn draw_scale_bar(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], pixels_per_unit: f32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels_per_unit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `length` [INFO] [stdout] --> src/scientific/state/scientific_state.rs:568:105 [INFO] [stdout] | [INFO] [stdout] 568 | fn draw_measurement(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], length: f32, unit: &str) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:422:17 [INFO] [stdout] | [INFO] [stdout] 422 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:422:17 [INFO] [stdout] | [INFO] [stdout] 378 | ROIShape::Rectangle { .. } => { [INFO] [stdout] | -------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 395 | ROIShape::Ellipse { .. } => { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 409 | ROIShape::Line { .. } => { [INFO] [stdout] | --------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 417 | ROIShape::Polygon { .. } => { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 422 | _ => {} [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:235:19 [INFO] [stdout] | [INFO] [stdout] 235 | if let Ok(mut state_ref) = state.try_borrow_mut() { [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let mut window = Window::default() [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state_ref` [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:153:23 [INFO] [stdout] | [INFO] [stdout] 153 | if let Ok(mut state_ref) = state_clone.try_borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state_ref` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_metadata` [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | let new_metadata = editor.get_metadata(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_metadata` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:153:19 [INFO] [stdout] | [INFO] [stdout] 153 | if let Ok(mut state_ref) = state_clone.try_borrow_mut() { [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `convex_hull_area` [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:110:14 [INFO] [stdout] | [INFO] [stdout] 110 | let (convex_hull_area, solidity) = self.calculate_solidity(points, area); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_convex_hull_area` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `points` [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:181:34 [INFO] [stdout] | [INFO] [stdout] 181 | fn calculate_solidity(&self, points: &[(i32, i32)], area: f64) -> (f64, f64) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_points` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `channel_list` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | let channel_list = create_channel_list(&mut pack, state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_list` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `vis_header` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | let vis_header = Frame::new(0, 0, 25, 25, ""); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vis_header` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action_header` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | let action_header = Frame::new(0, 0, 60, 25, ""); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_action_header` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `wavelength` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:109:17 [INFO] [stdout] | [INFO] [stdout] 109 | let mut wavelength = Frame::new(0, 0, 100, 35, &*wavelength_text); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wavelength` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | let mut wavelength = Frame::new(0, 0, 100, 35, &*wavelength_text); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `profile` [INFO] [stdout] --> src/scientific/ui/profile_dialog.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn show_profile_dialog(profile: &IntensityProfile) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_profile` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/scientific/ui/scale_dialog.rs:250:13 [INFO] [stdout] | [INFO] [stdout] 250 | let frame = frame.clone(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/scientific/ui/cell_analysis/dialog.rs:113:5 [INFO] [stdout] | [INFO] [stdout] 113 | frame: &Rc>, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/cell_analysis/statistics.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let mut tabs = Tabs::new(WINDOW_PADDING, WINDOW_PADDING, 780, 540, ""); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/cell_analysis/statistics.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | let mut summary_group = Group::new(WINDOW_PADDING, 35, 780, 515, "Summary"); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/cell_analysis/statistics.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | let mut correlations_group = Group::new(WINDOW_PADDING, 35, 780, 515, "Correlations"); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `measurement` [INFO] [stdout] --> src/scientific/ui/cell_analysis/export.rs:8:53 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn export_measurement_data(_state: &ImageState, measurement: &CellMeasurement) { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurement` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `measurements` [INFO] [stdout] --> src/scientific/ui/cell_analysis/export.rs:12:55 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn export_batch_measurements(_state: &ImageState, measurements: &[CellMeasurement]) { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurements` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | let mut scroll = Scroll::new(5, 25, 770, 270, ""); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:137:13 [INFO] [stdout] | [INFO] [stdout] 137 | let mut auto_update = CheckButton::new(0, 0, 150, 30, "Auto Update"); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:333:30 [INFO] [stdout] | [INFO] [stdout] 333 | fn export_to_file(&self, path: &std::path::Path) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:350:5 [INFO] [stdout] | [INFO] [stdout] 350 | frame: &Rc>, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:351:5 [INFO] [stdout] | [INFO] [stdout] 351 | state: &Rc>, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `measurements` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:352:5 [INFO] [stdout] | [INFO] [stdout] 352 | measurements: &Vec [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurements` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | let mut path_input = Input::new(0, 0, 300, 30, None); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | let mut browse_btn = Button::new(0, 0, 75, 30, Some("Browse")); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | let mut json_radio = RadioRoundButton::new(20, 35, 160, 25, Some("JSON (.json)")); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | let mut excel_radio = RadioRoundButton::new(20, 60, 160, 25, Some("Excel (.xlsx)")); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:120:13 [INFO] [stdout] | [INFO] [stdout] 120 | let mut measurements_check = CheckButton::new(20, 10, 340, 25, Some("Include Measurements")); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | let mut statistics_check = CheckButton::new(20, 35, 340, 25, Some("Include Statistics")); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let mut images_check = CheckButton::new(20, 60, 340, 25, Some("Include Images")); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut metadata_check = CheckButton::new(20, 85, 340, 25, Some("Include Metadata")); [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:124:13 [INFO] [stdout] | [INFO] [stdout] 124 | let mut batch_check = CheckButton::new(20, 110, 340, 25, Some("Batch Export")); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:136:13 [INFO] [stdout] | [INFO] [stdout] 136 | let mut export_btn = Button::new(0, 0, 185, 30, Some("Export")); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:137:13 [INFO] [stdout] | [INFO] [stdout] 137 | let mut cancel_btn = Button::new(0, 0, 185, 30, Some("Cancel")); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `image_radio` [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let image_radio = self.image_radio.clone(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_image_radio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | let mut scroll = Scroll::new(0, 0, 380, 380, ""); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut export_btn = Button::new(0, 0, 185, 25, "Export Data"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 67 | let mut close_btn = Button::new(195, 0, 185, 25, "Close"); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/properties_dialog.rs:138:23 [INFO] [stdout] | [INFO] [stdout] 138 | if let Ok(mut state_ref) = state.try_borrow_mut() { [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pixels_per_unit` [INFO] [stdout] --> src/scientific/rendering/scale_renderer.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | pixels_per_unit: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels_per_unit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `unit` [INFO] [stdout] --> src/scientific/rendering/scale_renderer.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | unit: &str, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_unit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ShapeSelector` is more private than the item `InteractiveROIState::show_roi_mode_dialog` [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:160:5 [INFO] [stdout] | [INFO] [stdout] 160 | pub fn show_roi_mode_dialog(on_select: impl Fn(ROIShape) + 'static) -> ShapeSelector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `InteractiveROIState::show_roi_mode_dialog` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ShapeSelector` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:28:1 [INFO] [stdout] | [INFO] [stdout] 28 | struct ShapeSelector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InvalidPosition`, `InvalidOpacity`, `TextRenderingError`, `BlendingError`, and `TemplateError` are never constructed [INFO] [stdout] --> src/menu/edit/watermark/mod.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum WatermarkError { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 36 | InvalidPosition(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 37 | InvalidOpacity(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 38 | TextRenderingError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 39 | ImageLoadError(String), [INFO] [stdout] 40 | BlendingError(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 41 | FontError(String), [INFO] [stdout] 42 | TemplateError(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WatermarkSource` is never used [INFO] [stdout] --> src/menu/edit/watermark/mod.rs:46:10 [INFO] [stdout] | [INFO] [stdout] 46 | pub enum WatermarkSource { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkSource` 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: method `remove` is never used [INFO] [stdout] --> src/menu/edit/watermark/mod.rs:127:8 [INFO] [stdout] | [INFO] [stdout] 123 | pub trait Watermark { [INFO] [stdout] | --------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 127 | fn remove(&self, image: &mut image::ImageBuffer, Vec>, area: &WatermarkPosition) [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `data` and `font` are never read [INFO] [stdout] --> src/menu/edit/watermark/fonts/mod.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 10 | struct StaticFontData { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 11 | data: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] 12 | font: Arc>, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fonts` is never read [INFO] [stdout] --> src/menu/edit/watermark/fonts/mod.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct FontManager { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 32 | fonts: HashMap, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_font`, `get_font`, `list_fonts`, and `remove_font` are never used [INFO] [stdout] --> src/menu/edit/watermark/fonts/mod.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl FontManager { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn add_font(&mut self, name: String, font_data: Vec) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn get_font(&self, name: &str) -> Option>> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn list_fonts(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn remove_font(&mut self, name: &str) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_add_watermark` is never used [INFO] [stdout] --> src/menu/edit/watermark/handlers.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn handle_add_watermark(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_position_valid` is never used [INFO] [stdout] --> src/menu/edit/watermark/position.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn is_position_valid( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TemplateManager` is never constructed [INFO] [stdout] --> src/menu/edit/watermark/templates/mod.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct TemplateManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `save_template`, `load_template`, `list_templates`, `load_templates_from_disk`, and `save_template_to_disk` are never used [INFO] [stdout] --> src/menu/edit/watermark/templates/mod.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl TemplateManager { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 18 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn save_template( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn load_template(&self, name: &str) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn list_templates(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | fn load_templates_from_disk(&mut self) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | fn save_template_to_disk(&self, name: &str) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `draw` is never used [INFO] [stdout] --> src/menu/edit/watermark/removal_tool.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 23 | impl WatermarkRemovalTool { [INFO] [stdout] | ------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn draw(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fltk_to_image_buffer` is never used [INFO] [stdout] --> src/menu/edit/filters/mod.rs:44:15 [INFO] [stdout] | [INFO] [stdout] 44 | pub(crate) fn fltk_to_image_buffer(fltk_image: &RgbImage) -> ImageBuffer, Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `image_buffer_to_fltk` is never used [INFO] [stdout] --> src/menu/edit/filters/mod.rs:67:15 [INFO] [stdout] | [INFO] [stdout] 67 | pub(crate) fn image_buffer_to_fltk(buffer: &ImageBuffer, Vec>) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `gaussian_kernel` is never used [INFO] [stdout] --> src/menu/edit/filters/advanced/edge_detection.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 23 | impl EdgeDetectionFilter { [INFO] [stdout] | ------------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 117 | fn gaussian_kernel(size: usize, sigma: f32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_edge_detection` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:241:8 [INFO] [stdout] | [INFO] [stdout] 241 | pub fn handle_apply_edge_detection( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_canny_edge_detection` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:250:8 [INFO] [stdout] | [INFO] [stdout] 250 | pub fn handle_apply_canny_edge_detection( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_noise` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:258:8 [INFO] [stdout] | [INFO] [stdout] 258 | pub fn handle_apply_noise( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_vignette` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:266:8 [INFO] [stdout] | [INFO] [stdout] 266 | pub fn handle_apply_vignette( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_posterize` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:288:8 [INFO] [stdout] | [INFO] [stdout] 288 | pub fn handle_apply_posterize( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_pixelate` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:310:8 [INFO] [stdout] | [INFO] [stdout] 310 | pub fn handle_apply_pixelate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_motion_blur` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:334:8 [INFO] [stdout] | [INFO] [stdout] 334 | pub fn handle_apply_motion_blur( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `with_opacity` is never used [INFO] [stdout] --> src/menu/edit/layers/color_filter.rs:106:12 [INFO] [stdout] | [INFO] [stdout] 104 | impl ColorFilter { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] 105 | // this method exists to support opacity [INFO] [stdout] 106 | pub fn with_opacity(mut self, opacity: f32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `start_interactive_layer` is never used [INFO] [stdout] --> src/menu/edit/layers/interactive_tool/mod.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn start_interactive_layer( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_cell_analysis` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn handle_cell_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_batch_analysis` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:59:8 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn handle_batch_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_show_statistics` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:78:8 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn handle_show_statistics(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_export_analysis` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn handle_export_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_stop_analysis` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn handle_stop_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_watermark_options`, `get_scientific_state`, and `get_scientific_state_mut` are never used [INFO] [stdout] --> src/state/mod.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 41 | impl ImageState { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn get_watermark_options(&self) -> WatermarkOptions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn get_scientific_state(&self) -> &ScientificState { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn get_scientific_state_mut(&mut self) -> &mut ScientificState { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_filter` is never read [INFO] [stdout] --> src/state/filter_state.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct FilterState { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 27 | is_preview_active: bool, [INFO] [stdout] 28 | current_filter: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FilterState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_current_filter` and `set_current_filter` are never used [INFO] [stdout] --> src/state/filter_state.rs:92:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl FilterState { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn get_current_filter(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn set_current_filter(&mut self, filter: Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `message` is never read [INFO] [stdout] --> src/state/watermark_state.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct WatermarkError { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 16 | pub message: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkError` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `options` are never read [INFO] [stdout] --> src/state/watermark_state.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct WatermarkTemplate { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 29 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 30 | pub options: WatermarkOptions, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkTemplate` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `list_templates` is never used [INFO] [stdout] --> src/state/watermark_state.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl TemplateManager { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 41 | pub fn list_templates(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `template_manager` and `current_template` are never read [INFO] [stdout] --> src/state/watermark_state.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct WatermarkState { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 54 | template_manager: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 55 | current_template: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `clear_watermark`, `get_current_watermark_type`, `get_current_template`, and `list_templates` are never used [INFO] [stdout] --> src/state/watermark_state.rs:221:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl WatermarkState { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 221 | pub fn clear_watermark(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 228 | pub fn get_current_watermark_type(&self) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 280 | pub fn get_current_template(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 292 | pub fn list_templates(&self) -> Result, WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `image` is never read [INFO] [stdout] --> src/state/layer_state.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Layer { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 7 | pub name: String, [INFO] [stdout] 8 | pub image: RgbImage, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Layer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_active_layer` and `set_active_layer` are never used [INFO] [stdout] --> src/state/layer_state.rs:244:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl LayerState { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn get_active_layer(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | pub fn set_active_layer(&mut self, index: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TemplateExport` is never constructed [INFO] [stdout] --> src/utils/template_utils.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct TemplateExport { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `export_template` is never used [INFO] [stdout] --> src/utils/template_utils.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn export_template(template: &WatermarkTemplate, export_dir: &Path) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `import_template` is never used [INFO] [stdout] --> src/utils/template_utils.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn import_template>(template_path: P) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_template` is never used [INFO] [stdout] --> src/utils/template_utils.rs:77:8 [INFO] [stdout] | [INFO] [stdout] 77 | pub fn validate_template(template: &WatermarkTemplate) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ImageData` is never constructed [INFO] [stdout] --> src/utils/image_data.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct ImageData { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `get_intensity`, `get_image`, `width`, and `height` are never used [INFO] [stdout] --> src/utils/image_data.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl ImageData { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 10 | pub fn new(image: RgbImage) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn get_intensity(&self, x: i32, y: i32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn get_image(&self) -> &RgbImage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn width(&self) -> i32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn height(&self) -> i32 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `channels` is never read [INFO] [stdout] --> src/scientific/analysis/intensity_profile.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct IntensityProfile { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 7 | pub channels: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ColocalizationAnalysis` is never constructed [INFO] [stdout] --> src/scientific/analysis/colocalization.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct ColocalizationAnalysis { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `analyze`, `get_intensity_vectors`, `calculate_pearson`, `calculate_overlap`, `calculate_manders`, and `calculate_icq` are never used [INFO] [stdout] --> src/scientific/analysis/colocalization.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl ColocalizationAnalysis { [INFO] [stdout] | --------------------------- associated functions in this implementation [INFO] [stdout] 15 | pub fn analyze(channel1: &Channel, channel2: &Channel) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | fn get_intensity_vectors(channel1: &Channel, channel2: &Channel) -> (Vec, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | fn calculate_pearson(x: &[f32], y: &[f32]) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn calculate_overlap(x: &[f32], y: &[f32]) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | fn calculate_manders(x: &[f32], y: &[f32]) -> (f32, f32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | fn calculate_icq(x: &[f32], y: &[f32]) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `create_metrics` is never used [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:68:8 [INFO] [stdout] | [INFO] [stdout] 37 | impl CellStatistics { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `detect_outliers` and `calculate_shape_factors` are never used [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:244:8 [INFO] [stdout] | [INFO] [stdout] 242 | pub trait StatisticalAnalysis { [INFO] [stdout] | ------------------- methods in this trait [INFO] [stdout] 243 | fn analyze(&self) -> CellStatistics; [INFO] [stdout] 244 | fn detect_outliers(&self) -> Vec<(usize, String)>; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 245 | fn calculate_shape_factors(&self) -> Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `export_statistics_report` is never used [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:271:8 [INFO] [stdout] | [INFO] [stdout] 271 | pub fn export_statistics_report(stats: &CellStatistics, path: &std::path::Path) -> std::io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timestamp` is never read [INFO] [stdout] --> src/scientific/analysis/cell_analysis.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct CellMeasurement { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 11 | pub timestamp: chrono::DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CellMeasurement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_measurements`, `clear_measurements`, and `create_measurement_annotation` are never used [INFO] [stdout] --> src/scientific/analysis/cell_analysis.rs:165:12 [INFO] [stdout] | [INFO] [stdout] 75 | impl CellAnalyzer { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn get_measurements(&self) -> &Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn clear_measurements(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn create_measurement_annotation(&self, measurement: &CellMeasurement, roi: &ROIShape) -> Annotation { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `transformation_matrix` is never read [INFO] [stdout] --> src/scientific/calibration/spatial_calibration.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct SpatialCalibration { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | pub transformation_matrix: Option<[[f32; 3]; 3]>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SpatialCalibration` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `pixel_to_real` and `real_to_pixel` are never used [INFO] [stdout] --> src/scientific/calibration/spatial_calibration.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl SpatialCalibration { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn pixel_to_real(&self, pixel_coord: (i32, i32)) -> (f32, f32) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn real_to_pixel(&self, real_coord: (f32, f32)) -> (i32, i32) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pseudo_color` and `opacity` are never read [INFO] [stdout] --> src/scientific/layers/channel.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Channel { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub pseudo_color: (u8, u8, u8), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 11 | pub opacity: f32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Channel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Measurement` and `Text` are never constructed [INFO] [stdout] --> src/scientific/layers/annotation.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum AnnotationType { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 14 | Measurement { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | Text { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AnnotationType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `image` is never read [INFO] [stdout] --> src/scientific/layers/annotation.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Annotation { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 26 | pub name: String, [INFO] [stdout] 27 | pub image: RgbImage, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Annotation` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/scientific/layers/metadata.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl Calibration { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `current_measurement_points`, `frame`, and `state` are never read [INFO] [stdout] --> src/scientific/state/scientific_state.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct ScientificState { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 27 | pub current_measurement_points: Vec<(i32, i32)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | frame: Option>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 34 | state: Option>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/scientific/state/scientific_state.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 45 | impl ScientificState { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn get_base_image(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn set_frame(&mut self, frame: Rc>) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn set_state(&mut self, state: Rc>) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | pub fn get_frame(&self) -> Option>> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn get_state(&self) -> Option>> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn update_current_roi(&mut self, points: Vec<(i32, i32)>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn clear_current_roi(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn get_active_roi_type(&self) -> ROIShape { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub fn add_point(&mut self, point: (i32, i32)) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn clear_points(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 247 | pub fn set_show_overlay(&mut self, show: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub fn get_annotation_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 324 | pub fn blend_channel(&self, composite: &mut Vec, channel: &Channel) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 426 | pub fn set_measurement_tool(&mut self, tool: MeasurementTool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 461 | fn draw_in_progress(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], color: (u8, u8, u8)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 645 | pub fn add_measurement(&mut self, start: (i32, i32), end: (i32, i32)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 665 | pub fn calculate_roi_area(&self, points: &[(i32, i32)]) -> (f64, String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 685 | pub fn toggle_annotation_visibility(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 692 | pub fn get_visible_annotations(&self) -> Vec<&Annotation> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `analyze_roi` and `clear_measurements` are never used [INFO] [stdout] --> src/scientific/tools/interactive/cell_analysis_tool.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl CellAnalysisTool { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn analyze_roi( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn clear_measurements(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_cell_statistics` and `get_measurements` are never used [INFO] [stdout] --> src/scientific/tools/interactive/cell_analysis_tool.rs:193:8 [INFO] [stdout] | [INFO] [stdout] 188 | pub trait CellAnalysisState { [INFO] [stdout] | ----------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 193 | fn get_cell_statistics(&self) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 194 | fn get_measurements(&self) -> Option>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `outline_color` and `line_width` are never read [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 106 | pub struct ROIProperties { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 107 | pub outline_color: (u8, u8, u8), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 108 | pub line_width: i32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ROIProperties` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `base_image` and `properties` are never read [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 130 | pub struct InteractiveROIState { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 134 | base_image: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 135 | scaling: Option, [INFO] [stdout] 136 | properties: ROIProperties, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `calculate_rectangle` and `show_roi_mode_dialog` are never used [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:153:8 [INFO] [stdout] | [INFO] [stdout] 140 | impl InteractiveROIState { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 153 | fn calculate_rectangle(&self, start: (i32, i32), current: (i32, i32)) -> (i32, i32, i32, i32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn show_roi_mode_dialog(on_select: impl Fn(ROIShape) + 'static) -> ShapeSelector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MeasurementTool` is never constructed [INFO] [stdout] --> src/scientific/tools/interactive/measurement_tool.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct MeasurementTool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MeasurementTool` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `create_measurement`, `calculate_distance`, `create_scale_bar`, and `handle_measurement` are never used [INFO] [stdout] --> src/scientific/tools/interactive/measurement_tool.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl MeasurementTool { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 23 | pub fn new(calibration: SpatialCalibration, line_color: (u8, u8, u8), line_width: i32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn create_measurement(&self, points: Vec<(i32, i32)>, name: String, _image: RgbImage) -> Annotation { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn calculate_distance(&self, points: &[(i32, i32)]) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn create_scale_bar(&self, length: f32, position: (i32, i32), image: RgbImage) -> Annotation { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn handle_measurement(&self, state_ref: &mut ImageState, points: &[(i32, i32)]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `start_interactive_measurement` is never used [INFO] [stdout] --> src/scientific/tools/interactive/measurement_tool.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn start_interactive_measurement(frame: &Rc>, state: &Rc>, tool: MeasurementTool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IntensityStatistics` is never constructed [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct IntensityStatistics { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MeasurementCalculator` is never constructed [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct MeasurementCalculator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl MeasurementCalculator { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 22 | pub fn new(calibration: Option) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | fn generate_ellipse_points(&self, width: i32, height: i32) -> Vec<(i32, i32)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | fn calculate_ellipse_measurements(&self, width: i32, height: i32, image_data: &ImageData) -> ROIMeasurements { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn calculate_measurements( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | fn calculate_polygon_measurements( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | fn calculate_polygon_area(&self, points: &[(i32, i32)]) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | fn calculate_polygon_perimeter(&self, points: &[(i32, i32)]) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | fn calculate_centroid(&self, points: &[(i32, i32)]) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | fn calculate_solidity(&self, points: &[(i32, i32)], area: f64) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | fn calculate_shape_factors(&self, points: &[(i32, i32)]) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | fn calculate_rectangle_measurements(&self, width: i32, height: i32, image_data: &ImageData) -> ROIMeasurements { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | fn calculate_line_measurements(&self, points: &[(i32, i32)], image_data: &ImageData) -> ROIMeasurements { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 276 | fn calculate_intensity_statistics( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 331 | fn point_in_polygon(&self, point: (i32, i32), vertices: &[(i32, i32)]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 352 | fn calibrate_area(&self, area: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 360 | fn calibrate_length(&self, length: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 368 | fn get_units(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/scientific/tools/interactive/roi/properties.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct ROIProperties { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 9 | pub label: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 10 | pub fill_color: Option<(u8, u8, u8)>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 11 | pub outline_color: (u8, u8, u8), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 12 | pub line_width: i32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 13 | pub line_style: LineStyle, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | pub notes: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 15 | pub is_visible: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 16 | pub is_selected: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 17 | pub is_locked: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ROIProperties` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `set_visibility`, `set_selection`, `toggle_lock`, `update_style`, and `update_colors` are never used [INFO] [stdout] --> src/scientific/tools/interactive/roi/properties.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl ROIProperties { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 37 | pub fn new(color: (u8, u8, u8), line_width: i32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn set_visibility(&mut self, visible: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn set_selection(&mut self, selected: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn toggle_lock(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn update_style(&mut self, line_style: LineStyle, line_width: i32) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn update_colors(&mut self, outline: (u8, u8, u8), fill: Option<(u8, u8, u8)>) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ROIState` is never constructed [INFO] [stdout] --> src/scientific/tools/interactive/roi/properties.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct ROIState { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ROIState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/scientific/tools/interactive/roi/properties.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 83 | impl ROIState { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 84 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn set_frame(&mut self, frame: Rc>) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn get_frame(&self) -> Option>> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn get_active_tool_mut(&self) -> Option>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn set_active_tool(&mut self, tool: ROITool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn start_drawing(&mut self, shape_type: ROIShape) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn add_point(&mut self, point: (i32, i32)) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub fn finish_drawing(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | fn update_shape(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub fn is_active(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn lock(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn unlock(&mut self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub fn set_properties(&mut self, properties: ROIProperties) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn get_measurements(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn set_notes(&mut self, notes: Option) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 226 | pub fn toggle_measurements(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | pub fn get_bounding_box(&self) -> Option<(i32, i32, i32, i32)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_scale_bar` is never used [INFO] [stdout] --> src/scientific/ui/measurement_dialog.rs:15:4 [INFO] [stdout] | [INFO] [stdout] 15 | fn add_scale_bar(state: &mut ScientificState, length: f32, unit: String) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `show_measurement_dialog` is never used [INFO] [stdout] --> src/scientific/ui/measurement_dialog.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | pub fn show_measurement_dialog(state: &Rc>) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `show_roi_dialog` is never used [INFO] [stdout] --> src/scientific/ui/roi_dialog.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn show_roi_dialog(frame: &Rc>, state: &Rc>) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `show_batch_analysis_dialog` is never used [INFO] [stdout] --> src/scientific/ui/cell_analysis/dialog.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn show_batch_analysis_dialog( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_col_widths` is never used [INFO] [stdout] --> src/scientific/ui/cell_analysis/table.rs:88:8 [INFO] [stdout] | [INFO] [stdout] 88 | pub fn set_col_widths(table: &mut Table, data: &[Vec]) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `customize_table` is never used [INFO] [stdout] --> src/scientific/ui/cell_analysis/table.rs:108:8 [INFO] [stdout] | [INFO] [stdout] 108 | pub fn customize_table(table: &mut Table) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `statistics_table` and `auto_update` are never read [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct BatchDialog { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 39 | statistics_table: TableRow, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | auto_update: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BatchDialog` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_measurement`, `hide`, and `is_visible` are never used [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:312:12 [INFO] [stdout] | [INFO] [stdout] 52 | impl BatchDialog { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn add_measurement(&mut self, measurement: ROIMeasurements) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub fn hide(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 345 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PADDING` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub const PADDING: i32 = 5; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BUTTON_HEIGHT` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | pub const BUTTON_HEIGHT: i32 = 25; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INPUT_HEIGHT` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const INPUT_HEIGHT: i32 = 25; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HEADER_HEIGHT` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub const HEADER_HEIGHT: i32 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PRIMARY_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:17:11 [INFO] [stdout] | [INFO] [stdout] 17 | pub const PRIMARY_COLOR: (u8, u8, u8) = (0, 121, 194); // Blue [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SECONDARY_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const SECONDARY_COLOR: (u8, u8, u8) = (88, 88, 88); // Gray [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SUCCESS_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub const SUCCESS_COLOR: (u8, u8, u8) = (40, 167, 69); // Green [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WARNING_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | pub const WARNING_COLOR: (u8, u8, u8) = (255, 193, 7); // Yellow [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ERROR_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:21:11 [INFO] [stdout] | [INFO] [stdout] 21 | pub const ERROR_COLOR: (u8, u8, u8) = (220, 53, 69); // Red [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TITLE_FONT_SIZE` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const TITLE_FONT_SIZE: i32 = 16; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_color` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/color_picker.rs:183:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl ColorPicker { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn set_color(&mut self, color: (u8, u8, u8)) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LineStyleSelector` is never constructed [INFO] [stdout] --> src/scientific/ui/roi/components/line_style_selector.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct LineStyleSelector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `setup_callbacks`, `get_style`, `get_width`, `set_style`, and `set_width` are never used [INFO] [stdout] --> src/scientific/ui/roi/components/line_style_selector.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl LineStyleSelector { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 22 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | fn setup_callbacks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn get_style(&self) -> LineStyle { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn get_width(&self) -> i32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn set_style(&mut self, style: LineStyle) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn set_width(&mut self, width: i32) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `selected_row` is never read [INFO] [stdout] --> src/scientific/ui/roi/components/measurement_table.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct MeasurementTable { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 33 | selected_row: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MeasurementTable` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_selected_measurement`, `set_row_callback`, `clear`, `get_row_count`, `get_all_measurements`, and `export_csv` are never used [INFO] [stdout] --> src/scientific/ui/roi/components/measurement_table.rs:193:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl MeasurementTable { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 193 | pub fn get_selected_measurement(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 203 | pub fn set_row_callback(&mut self, callback: F) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn get_row_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | pub fn get_all_measurements(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | pub fn export_csv(&self, path: &std::path::Path) -> std::io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `JSON`, `Excel`, and `ImageROI` are never constructed [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum ExportFormat { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 18 | CSV, [INFO] [stdout] 19 | JSON, [INFO] [stdout] | ^^^^ [INFO] [stdout] 20 | Excel, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 21 | ImageROI, // Exports ROI overlay on image [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct ExportOptions { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 26 | pub format: ExportFormat, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 27 | pub include_measurements: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 28 | pub include_statistics: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 29 | pub include_images: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 30 | pub include_metadata: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | pub batch_export: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 32 | pub export_path: PathBuf, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportOptions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl ExportDialog { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 70 | pub fn new(parent: Rc>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | fn setup_callbacks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | fn update_options(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | fn validate_export(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | fn perform_export(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | fn export_csv(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | fn export_json(&self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | fn export_excel(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | fn export_image_roi(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn show(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn hide(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 279 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MeasurementDialog` is never constructed [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct MeasurementDialog { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `setup_callbacks`, `export_measurements`, `show`, `hide`, and `is_visible` are never used [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl MeasurementDialog { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 25 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn setup_callbacks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | fn export_measurements(measurements: &ROIMeasurements, path: &std::path::Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn show(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn hide(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PropertiesDialog` is never constructed [INFO] [stdout] --> src/scientific/ui/roi/properties_dialog.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct PropertiesDialog { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `setup_callbacks`, `show`, `hide`, and `is_visible` are never used [INFO] [stdout] --> src/scientific/ui/roi/properties_dialog.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl PropertiesDialog { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 49 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn setup_callbacks(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn show(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn hide(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Dash` and `Dot` are never constructed [INFO] [stdout] --> src/scientific/types.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum LineStyle { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 10 | Solid, [INFO] [stdout] 11 | Dash, [INFO] [stdout] | ^^^^ [INFO] [stdout] 12 | Dot, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LineStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `integrated_density`, `std_dev`, `aspect_ratio`, `roundness`, `solidity`, and `is_calibrated` are never read [INFO] [stdout] --> src/scientific/types.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 68 | pub struct ROIMeasurements { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 76 | pub integrated_density: f64, // Added to match usage [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 77 | pub std_dev: f64, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 78 | pub aspect_ratio: f64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 79 | pub roundness: f64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 80 | pub solidity: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 81 | pub shape_type: ROIShape, // Added to match usage [INFO] [stdout] 82 | pub is_calibrated: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ROIMeasurements` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `active`, `unit`, `color`, and `line_width` are never read [INFO] [stdout] --> src/scientific/types.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 86 | pub struct MeasurementTool { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 87 | pub active: bool, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 88 | pub unit: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 89 | pub color: (u8, u8, u8), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 90 | pub line_width: i32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/scientific/types.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 93 | impl MeasurementTool { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 94 | pub fn new(unit: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `draw_text_with_background`, `draw_line_with_endpoints`, `draw_measurement`, `draw_guide_text`, and `calculate_position` are never used [INFO] [stdout] --> src/scientific/rendering/frame_renderer.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl FrameRenderer { [INFO] [stdout] | ------------------ associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn draw_text_with_background( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn draw_line_with_endpoints( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn draw_measurement( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn draw_guide_text(text: &str, x: i32, y: i32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn calculate_position( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 12s [INFO] running `Command { std: "docker" "inspect" "2b7fd70c6dd2c08bfaf2a2b8ed71369e91485e33e0b7a1c669a8e14f954ff9b0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2b7fd70c6dd2c08bfaf2a2b8ed71369e91485e33e0b7a1c669a8e14f954ff9b0", kill_on_drop: false }` [INFO] [stdout] 2b7fd70c6dd2c08bfaf2a2b8ed71369e91485e33e0b7a1c669a8e14f954ff9b0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+7af779037716ae4125ceabb429791b4cf5dd0a43" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 39588a3fee374963c2dcb79dc7ee66e6e1f39075ff496b9e8838ed8267bcf66a [INFO] running `Command { std: "docker" "start" "-a" "39588a3fee374963c2dcb79dc7ee66e6e1f39075ff496b9e8838ed8267bcf66a", kill_on_drop: false }` [INFO] [stderr] Compiling youtube_image-viewer v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `crop_tool::CropSelection` [INFO] [stdout] --> src/menu/edit/crop/mod.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub use crop_tool::CropSelection; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/menu/edit/filters/basic/hue.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 47 | let (r, g, b) = match (h as i32) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 47 - let (r, g, b) = match (h as i32) { [INFO] [stdout] 47 + let (r, g, b) = match h as i32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/menu/edit/filters/advanced/convolution.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | ((filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 197 - ((filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8) [INFO] [stdout] 197 + (filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/menu/edit/filters/advanced/pixelate.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | ((pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 139 - ((pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stdout] 139 + (pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `EdgeDetectionFilter` and `NoiseFilter` [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | EdgeDetectionFilter, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 29 | EdgeDetectionMethod, [INFO] [stdout] 30 | NoiseFilter, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `start_interactive_pixelate` [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | start_interactive_pixelate, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `handle_apply_motion_blur` and `handle_apply_posterize` [INFO] [stdout] --> src/menu/edit/filters/dialog.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | handle_apply_posterize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 45 | handle_apply_motion_blur, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::ImageFilter` [INFO] [stdout] --> src/menu/edit/filters/pixelate_tool.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use super::ImageFilter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConvolutionType` and `EdgeDetectionMethod` [INFO] [stdout] --> src/menu/edit/filters/mod.rs:35:20 [INFO] [stdout] | [INFO] [stdout] 35 | pub use advanced::{ConvolutionType, EdgeDetectionMethod}; // Re-export from advanced module [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/menu/edit/layers/color_filter.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | ((color as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 73 - ((color as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stdout] 73 + (color as f32 * factor + original as f32 * (1.0 - factor)) as u8 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `color_tool::start_interactive_color` [INFO] [stdout] --> src/menu/edit/layers/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use color_tool::start_interactive_color; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `dialog::show_cell_analysis_dialog` [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:8:13 [INFO] [stdout] | [INFO] [stdout] 8 | dialog::show_cell_analysis_dialog, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `handle_batch_analysis`, `handle_cell_analysis`, `handle_export_analysis`, `handle_show_statistics`, and `handle_stop_analysis` [INFO] [stdout] --> src/menu/scientific/analysis/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | handle_cell_analysis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 8 | handle_batch_analysis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | handle_show_statistics, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 10 | handle_export_analysis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 11 | handle_stop_analysis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `fltk::image::RgbImage` [INFO] [stdout] --> src/scientific/analysis/colocalization.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use fltk::image::RgbImage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/scientific/analysis/colocalization.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:68:82 [INFO] [stdout] | [INFO] [stdout] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stdout] | -- lifetime `'a` declared here ^ this elided lifetime gets resolved as `'a` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:68:88 [INFO] [stdout] | [INFO] [stdout] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stdout] | -- lifetime `'a` declared here ^ this elided lifetime gets resolved as `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MeasurementTool` [INFO] [stdout] --> src/scientific/analysis/cell_analysis.rs:3:23 [INFO] [stdout] | [INFO] [stdout] 3 | types::{ROIShape, MeasurementTool}, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `fltk::image::RgbImage` [INFO] [stdout] --> src/scientific/calibration/spatial_calibration.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use fltk::image::RgbImage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Metadata` [INFO] [stdout] --> src/scientific/state/scientific_state.rs:7:50 [INFO] [stdout] | [INFO] [stdout] 7 | layers::{Channel, Annotation, AnnotationType,Metadata, Calibration}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Button` and `Pack` [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | group::{Group, Pack}, [INFO] [stdout] | ^^^^ [INFO] [stdout] 8 | button::{RadioRoundButton, Button}, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AnnotationType` and `Annotation` [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 15 | layers::{Annotation, AnnotationType}, [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:466:45 [INFO] [stdout] | [INFO] [stdout] 466 | ... let angle = (i as f64 * 2.0 * std::f64::consts::PI / num_points as f64); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 466 - let angle = (i as f64 * 2.0 * std::f64::consts::PI / num_points as f64); [INFO] [stdout] 466 + let angle = i as f64 * 2.0 * std::f64::consts::PI / num_points as f64; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Event` [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:2:13 [INFO] [stdout] | [INFO] [stdout] 2 | enums::{Event, Color, Align}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `measurement_tool::*` [INFO] [stdout] --> src/scientific/tools/interactive/mod.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub use measurement_tool::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ScaleRenderer` [INFO] [stdout] --> src/scientific/tools/handlers/scale.rs:4:36 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::scientific::rendering::{ScaleRenderer, FrameRenderer}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MeasurementTool`, `ROIShape`, and `ROITool` [INFO] [stdout] --> src/scientific/tools/mod.rs:5:23 [INFO] [stdout] | [INFO] [stdout] 5 | pub use interactive::{ROITool, ROIShape, MeasurementTool}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Align` and `Input` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:6:25 [INFO] [stdout] | [INFO] [stdout] 6 | input::{FloatInput, Input}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 9 | enums::{Color, FrameType, Align}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> src/scientific/ui/measurement_dialog.rs:12:25 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::scientific::{self, Annotation, AnnotationType}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FloatInput` [INFO] [stdout] --> src/scientific/ui/scale_dialog.rs:4:20 [INFO] [stdout] | [INFO] [stdout] 4 | input::{Input, FloatInput}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Color` [INFO] [stdout] --> src/scientific/ui/cell_analysis/dialog.rs:7:13 [INFO] [stdout] | [INFO] [stdout] 7 | enums::{Color, FrameType}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CellStatistics` and `StatisticalAnalysis` [INFO] [stdout] --> src/scientific/ui/cell_analysis/dialog.rs:16:31 [INFO] [stdout] | [INFO] [stdout] 16 | cell_statistics::{CellStatistics, StatisticalAnalysis} [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Pack` [INFO] [stdout] --> src/scientific/ui/cell_analysis/statistics.rs:5:13 [INFO] [stdout] | [INFO] [stdout] 5 | group::{Pack, Tabs, Group}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `dialog::show_cell_analysis_dialog` [INFO] [stdout] --> src/scientific/ui/cell_analysis/mod.rs:6:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub use dialog::show_cell_analysis_dialog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `statistics::show_statistics_dialog` [INFO] [stdout] --> src/scientific/ui/cell_analysis/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use statistics::show_statistics_dialog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `export_batch_measurements` and `export_measurement_data` [INFO] [stdout] --> src/scientific/ui/cell_analysis/mod.rs:8:18 [INFO] [stdout] | [INFO] [stdout] 8 | pub use export::{export_measurement_data, export_batch_measurements}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Font` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | enums::{Color, Font, FrameType, Align}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `collections::HashMap` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:12:34 [INFO] [stdout] | [INFO] [stdout] 12 | use std::{rc::Rc, cell::RefCell, collections::HashMap}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FrameType` [INFO] [stdout] --> src/scientific/ui/roi/components/line_style_selector.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 10 | enums::{FrameType, Align}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `measurement_table::MeasurementTable` [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use measurement_table::MeasurementTable; // Make public [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Color` [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | enums::{Align, Color, FrameType}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ROIMeasurements`, `ROIShape`, and `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | types::{ROIMeasurements, ROIShape}, [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] 13 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BatchDialog` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:11:24 [INFO] [stdout] | [INFO] [stdout] 11 | pub use batch_dialog::{BatchDialog, show_batch_analysis_dialog}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `batch_dialog::*` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use batch_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `export_dialog::*` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use export_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `measurement_dialog::*` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use measurement_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `properties_dialog::*` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub use properties_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self::batch_dialog::BatchStatistics` [INFO] [stdout] --> src/scientific/ui/roi/mod.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use self::batch_dialog::BatchStatistics; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `cell_analysis::*` [INFO] [stdout] --> src/scientific/ui/mod.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use cell_analysis::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `roi::*` [INFO] [stdout] --> src/scientific/ui/mod.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use roi::*; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::scientific::rendering::frame_renderer::FrameRenderer` [INFO] [stdout] --> src/scientific/rendering/scale_renderer.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::scientific::rendering::frame_renderer::FrameRenderer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Metadata` [INFO] [stdout] --> src/scientific/mod.rs:12:55 [INFO] [stdout] | [INFO] [stdout] 12 | pub use layers::{Channel, Annotation, AnnotationType, Metadata}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ColocalizationAnalysis` [INFO] [stdout] --> src/scientific/mod.rs:13:38 [INFO] [stdout] | [INFO] [stdout] 13 | pub use analysis::{IntensityProfile, ColocalizationAnalysis}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `calibration::SpatialCalibration` [INFO] [stdout] --> src/scientific/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use calibration::SpatialCalibration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `state::ScientificState` [INFO] [stdout] --> src/scientific/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use state::ScientificState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LegendPosition`, `MeasurementTool`, `ROIShape`, and `ROITool` [INFO] [stdout] --> src/scientific/mod.rs:16:17 [INFO] [stdout] | [INFO] [stdout] 16 | pub use types::{LegendPosition, ROIShape, ROITool, MeasurementTool}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `reporting::CalibrationReport` [INFO] [stdout] --> src/scientific/mod.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use reporting::CalibrationReport; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `visualization::CellVisualizer` [INFO] [stdout] --> src/scientific/mod.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use visualization::CellVisualizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Event` [INFO] [stdout] --> src/main.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | enums::{Shortcut, Event, CallbackTrigger}, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::scientific::tools::interactive::cell_analysis_tool::CellAnalysisState` [INFO] [stdout] --> src/main.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::scientific::tools::interactive::cell_analysis_tool::CellAnalysisState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `prelude` [INFO] [stdout] --> src/menu/file/open.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | prelude::*, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `prelude` [INFO] [stdout] --> src/scientific/tools/interactive/cell_analysis_tool.rs:1:29 [INFO] [stdout] | [INFO] [stdout] 1 | use fltk::{image::RgbImage, prelude::*, enums::Event}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/menu/edit/crop/crop_tool.rs:132:17 [INFO] [stdout] | [INFO] [stdout] 132 | if let Some(mut fltk_image) = cropped_img { [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> src/menu/edit/watermark/templates/defaults.rs:15:13 [INFO] [stdout] | [INFO] [stdout] 15 | let now = chrono::Utc::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pack` [INFO] [stdout] --> src/menu/edit/layers/dialog.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | pack: &mut Pack, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pack` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pack` [INFO] [stdout] --> src/menu/edit/layers/dialog.rs:139:5 [INFO] [stdout] | [INFO] [stdout] 139 | pack: &mut Pack, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pack` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `filter` [INFO] [stdout] --> src/menu/edit/layers/interactive_tool/mod.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | let filter = ColorFilter::new(color); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_filter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame_clone` [INFO] [stdout] --> src/menu/edit/layers/color_tool.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | let frame_clone = frame_clone.clone(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:78:31 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn handle_show_statistics(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:92:31 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn handle_export_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_analyzing` [INFO] [stdout] --> src/menu/scientific/analysis/cell.rs:157:25 [INFO] [stdout] | [INFO] [stdout] 157 | let is_analyzing = state_ref.scientific_state.is_analyzing_cells(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_analyzing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stats` [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:89:31 [INFO] [stdout] | [INFO] [stdout] 89 | for (metric_name, stats, values) in &metrics { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_stats` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:224:15 [INFO] [stdout] | [INFO] [stdout] 224 | fn percentile(mut values: impl Iterator, p: f64) -> f64 { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `unit` [INFO] [stdout] --> src/scientific/state/scientific_state.rs:449:54 [INFO] [stdout] | [INFO] [stdout] 449 | AnnotationType::Scale { pixels_per_unit, unit } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `unit: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pixels_per_unit` [INFO] [stdout] --> src/scientific/state/scientific_state.rs:491:103 [INFO] [stdout] | [INFO] [stdout] 491 | fn draw_scale_bar(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], pixels_per_unit: f32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels_per_unit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `length` [INFO] [stdout] --> src/scientific/state/scientific_state.rs:568:105 [INFO] [stdout] | [INFO] [stdout] 568 | fn draw_measurement(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], length: f32, unit: &str) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:422:17 [INFO] [stdout] | [INFO] [stdout] 422 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:422:17 [INFO] [stdout] | [INFO] [stdout] 378 | ROIShape::Rectangle { .. } => { [INFO] [stdout] | -------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 395 | ROIShape::Ellipse { .. } => { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 409 | ROIShape::Line { .. } => { [INFO] [stdout] | --------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 417 | ROIShape::Polygon { .. } => { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 422 | _ => {} [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:235:19 [INFO] [stdout] | [INFO] [stdout] 235 | if let Ok(mut state_ref) = state.try_borrow_mut() { [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let mut window = Window::default() [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state_ref` [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:153:23 [INFO] [stdout] | [INFO] [stdout] 153 | if let Ok(mut state_ref) = state_clone.try_borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state_ref` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_metadata` [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | let new_metadata = editor.get_metadata(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_metadata` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/tools/interactive/metadata_tool.rs:153:19 [INFO] [stdout] | [INFO] [stdout] 153 | if let Ok(mut state_ref) = state_clone.try_borrow_mut() { [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `convex_hull_area` [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:110:14 [INFO] [stdout] | [INFO] [stdout] 110 | let (convex_hull_area, solidity) = self.calculate_solidity(points, area); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_convex_hull_area` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `points` [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:181:34 [INFO] [stdout] | [INFO] [stdout] 181 | fn calculate_solidity(&self, points: &[(i32, i32)], area: f64) -> (f64, f64) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_points` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `channel_list` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | let channel_list = create_channel_list(&mut pack, state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_list` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `vis_header` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | let vis_header = Frame::new(0, 0, 25, 25, ""); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vis_header` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action_header` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | let action_header = Frame::new(0, 0, 60, 25, ""); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_action_header` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `wavelength` [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:109:17 [INFO] [stdout] | [INFO] [stdout] 109 | let mut wavelength = Frame::new(0, 0, 100, 35, &*wavelength_text); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wavelength` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/channel_dialog.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | let mut wavelength = Frame::new(0, 0, 100, 35, &*wavelength_text); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `profile` [INFO] [stdout] --> src/scientific/ui/profile_dialog.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn show_profile_dialog(profile: &IntensityProfile) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_profile` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/scientific/ui/scale_dialog.rs:250:13 [INFO] [stdout] | [INFO] [stdout] 250 | let frame = frame.clone(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/scientific/ui/cell_analysis/dialog.rs:113:5 [INFO] [stdout] | [INFO] [stdout] 113 | frame: &Rc>, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/cell_analysis/statistics.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let mut tabs = Tabs::new(WINDOW_PADDING, WINDOW_PADDING, 780, 540, ""); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/cell_analysis/statistics.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | let mut summary_group = Group::new(WINDOW_PADDING, 35, 780, 515, "Summary"); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/cell_analysis/statistics.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | let mut correlations_group = Group::new(WINDOW_PADDING, 35, 780, 515, "Correlations"); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `measurement` [INFO] [stdout] --> src/scientific/ui/cell_analysis/export.rs:8:53 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn export_measurement_data(_state: &ImageState, measurement: &CellMeasurement) { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurement` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `measurements` [INFO] [stdout] --> src/scientific/ui/cell_analysis/export.rs:12:55 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn export_batch_measurements(_state: &ImageState, measurements: &[CellMeasurement]) { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurements` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | let mut scroll = Scroll::new(5, 25, 770, 270, ""); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:137:13 [INFO] [stdout] | [INFO] [stdout] 137 | let mut auto_update = CheckButton::new(0, 0, 150, 30, "Auto Update"); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:333:30 [INFO] [stdout] | [INFO] [stdout] 333 | fn export_to_file(&self, path: &std::path::Path) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `frame` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:350:5 [INFO] [stdout] | [INFO] [stdout] 350 | frame: &Rc>, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:351:5 [INFO] [stdout] | [INFO] [stdout] 351 | state: &Rc>, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `measurements` [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:352:5 [INFO] [stdout] | [INFO] [stdout] 352 | measurements: &Vec [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurements` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | let mut path_input = Input::new(0, 0, 300, 30, None); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | let mut browse_btn = Button::new(0, 0, 75, 30, Some("Browse")); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | let mut json_radio = RadioRoundButton::new(20, 35, 160, 25, Some("JSON (.json)")); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | let mut excel_radio = RadioRoundButton::new(20, 60, 160, 25, Some("Excel (.xlsx)")); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:120:13 [INFO] [stdout] | [INFO] [stdout] 120 | let mut measurements_check = CheckButton::new(20, 10, 340, 25, Some("Include Measurements")); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | let mut statistics_check = CheckButton::new(20, 35, 340, 25, Some("Include Statistics")); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let mut images_check = CheckButton::new(20, 60, 340, 25, Some("Include Images")); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let mut metadata_check = CheckButton::new(20, 85, 340, 25, Some("Include Metadata")); [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:124:13 [INFO] [stdout] | [INFO] [stdout] 124 | let mut batch_check = CheckButton::new(20, 110, 340, 25, Some("Batch Export")); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:136:13 [INFO] [stdout] | [INFO] [stdout] 136 | let mut export_btn = Button::new(0, 0, 185, 30, Some("Export")); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:137:13 [INFO] [stdout] | [INFO] [stdout] 137 | let mut cancel_btn = Button::new(0, 0, 185, 30, Some("Cancel")); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `image_radio` [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let image_radio = self.image_radio.clone(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_image_radio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | let mut scroll = Scroll::new(0, 0, 380, 380, ""); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut export_btn = Button::new(0, 0, 185, 25, "Export Data"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 67 | let mut close_btn = Button::new(195, 0, 185, 25, "Close"); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/scientific/ui/roi/properties_dialog.rs:138:23 [INFO] [stdout] | [INFO] [stdout] 138 | if let Ok(mut state_ref) = state.try_borrow_mut() { [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pixels_per_unit` [INFO] [stdout] --> src/scientific/rendering/scale_renderer.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | pixels_per_unit: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels_per_unit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `unit` [INFO] [stdout] --> src/scientific/rendering/scale_renderer.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | unit: &str, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_unit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ShapeSelector` is more private than the item `InteractiveROIState::show_roi_mode_dialog` [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:160:5 [INFO] [stdout] | [INFO] [stdout] 160 | pub fn show_roi_mode_dialog(on_select: impl Fn(ROIShape) + 'static) -> ShapeSelector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `InteractiveROIState::show_roi_mode_dialog` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ShapeSelector` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:28:1 [INFO] [stdout] | [INFO] [stdout] 28 | struct ShapeSelector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InvalidPosition`, `InvalidOpacity`, `TextRenderingError`, and `BlendingError` are never constructed [INFO] [stdout] --> src/menu/edit/watermark/mod.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum WatermarkError { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 36 | InvalidPosition(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 37 | InvalidOpacity(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 38 | TextRenderingError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 39 | ImageLoadError(String), [INFO] [stdout] 40 | BlendingError(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WatermarkSource` is never used [INFO] [stdout] --> src/menu/edit/watermark/mod.rs:46:10 [INFO] [stdout] | [INFO] [stdout] 46 | pub enum WatermarkSource { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkSource` 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: method `remove` is never used [INFO] [stdout] --> src/menu/edit/watermark/mod.rs:127:8 [INFO] [stdout] | [INFO] [stdout] 123 | pub trait Watermark { [INFO] [stdout] | --------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 127 | fn remove(&self, image: &mut image::ImageBuffer, Vec>, area: &WatermarkPosition) [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `data` and `font` are never read [INFO] [stdout] --> src/menu/edit/watermark/fonts/mod.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 10 | struct StaticFontData { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 11 | data: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] 12 | font: Arc>, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_font` and `remove_font` are never used [INFO] [stdout] --> src/menu/edit/watermark/fonts/mod.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl FontManager { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn get_font(&self, name: &str) -> Option>> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn remove_font(&mut self, name: &str) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_add_watermark` is never used [INFO] [stdout] --> src/menu/edit/watermark/handlers.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn handle_add_watermark(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_position_valid` is never used [INFO] [stdout] --> src/menu/edit/watermark/position.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn is_position_valid( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `save_template`, `load_template`, and `save_template_to_disk` are never used [INFO] [stdout] --> src/menu/edit/watermark/templates/mod.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl TemplateManager { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn save_template( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn load_template(&self, name: &str) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | fn save_template_to_disk(&self, name: &str) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `draw` is never used [INFO] [stdout] --> src/menu/edit/watermark/removal_tool.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 23 | impl WatermarkRemovalTool { [INFO] [stdout] | ------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn draw(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fltk_to_image_buffer` is never used [INFO] [stdout] --> src/menu/edit/filters/mod.rs:44:15 [INFO] [stdout] | [INFO] [stdout] 44 | pub(crate) fn fltk_to_image_buffer(fltk_image: &RgbImage) -> ImageBuffer, Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `image_buffer_to_fltk` is never used [INFO] [stdout] --> src/menu/edit/filters/mod.rs:67:15 [INFO] [stdout] | [INFO] [stdout] 67 | pub(crate) fn image_buffer_to_fltk(buffer: &ImageBuffer, Vec>) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `gaussian_kernel` is never used [INFO] [stdout] --> src/menu/edit/filters/advanced/edge_detection.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 23 | impl EdgeDetectionFilter { [INFO] [stdout] | ------------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 117 | fn gaussian_kernel(size: usize, sigma: f32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_edge_detection` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:241:8 [INFO] [stdout] | [INFO] [stdout] 241 | pub fn handle_apply_edge_detection( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_canny_edge_detection` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:250:8 [INFO] [stdout] | [INFO] [stdout] 250 | pub fn handle_apply_canny_edge_detection( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_noise` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:258:8 [INFO] [stdout] | [INFO] [stdout] 258 | pub fn handle_apply_noise( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_vignette` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:266:8 [INFO] [stdout] | [INFO] [stdout] 266 | pub fn handle_apply_vignette( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_posterize` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:288:8 [INFO] [stdout] | [INFO] [stdout] 288 | pub fn handle_apply_posterize( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_pixelate` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:310:8 [INFO] [stdout] | [INFO] [stdout] 310 | pub fn handle_apply_pixelate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_apply_motion_blur` is never used [INFO] [stdout] --> src/menu/edit/filters/handlers.rs:334:8 [INFO] [stdout] | [INFO] [stdout] 334 | pub fn handle_apply_motion_blur( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `with_opacity` is never used [INFO] [stdout] --> src/menu/edit/layers/color_filter.rs:106:12 [INFO] [stdout] | [INFO] [stdout] 104 | impl ColorFilter { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] 105 | // this method exists to support opacity [INFO] [stdout] 106 | pub fn with_opacity(mut self, opacity: f32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `start_interactive_layer` is never used [INFO] [stdout] --> src/menu/edit/layers/interactive_tool/mod.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn start_interactive_layer( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_cell_analysis` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn handle_cell_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_batch_analysis` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:59:8 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn handle_batch_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_show_statistics` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:78:8 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn handle_show_statistics(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_export_analysis` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn handle_export_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_stop_analysis` is never used [INFO] [stdout] --> src/menu/scientific/analysis/handlers.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn handle_stop_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_watermark_options`, `get_scientific_state`, and `get_scientific_state_mut` are never used [INFO] [stdout] --> src/state/mod.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 41 | impl ImageState { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn get_watermark_options(&self) -> WatermarkOptions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn get_scientific_state(&self) -> &ScientificState { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn get_scientific_state_mut(&mut self) -> &mut ScientificState { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_filter` is never read [INFO] [stdout] --> src/state/filter_state.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct FilterState { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 27 | is_preview_active: bool, [INFO] [stdout] 28 | current_filter: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FilterState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_current_filter` and `set_current_filter` are never used [INFO] [stdout] --> src/state/filter_state.rs:92:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl FilterState { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn get_current_filter(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn set_current_filter(&mut self, filter: Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `message` is never read [INFO] [stdout] --> src/state/watermark_state.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct WatermarkError { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 16 | pub message: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkError` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `options` are never read [INFO] [stdout] --> src/state/watermark_state.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct WatermarkTemplate { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 29 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 30 | pub options: WatermarkOptions, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkTemplate` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `list_templates` is never used [INFO] [stdout] --> src/state/watermark_state.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl TemplateManager { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 41 | pub fn list_templates(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `template_manager` and `current_template` are never read [INFO] [stdout] --> src/state/watermark_state.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct WatermarkState { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 54 | template_manager: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 55 | current_template: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WatermarkState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `clear_watermark`, `get_current_watermark_type`, `get_current_template`, and `list_templates` are never used [INFO] [stdout] --> src/state/watermark_state.rs:221:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl WatermarkState { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 221 | pub fn clear_watermark(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 228 | pub fn get_current_watermark_type(&self) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 280 | pub fn get_current_template(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 292 | pub fn list_templates(&self) -> Result, WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `image` is never read [INFO] [stdout] --> src/state/layer_state.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Layer { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 7 | pub name: String, [INFO] [stdout] 8 | pub image: RgbImage, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Layer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_active_layer` and `set_active_layer` are never used [INFO] [stdout] --> src/state/layer_state.rs:244:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl LayerState { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn get_active_layer(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | pub fn set_active_layer(&mut self, index: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TemplateExport` is never constructed [INFO] [stdout] --> src/utils/template_utils.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct TemplateExport { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `export_template` is never used [INFO] [stdout] --> src/utils/template_utils.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn export_template(template: &WatermarkTemplate, export_dir: &Path) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `import_template` is never used [INFO] [stdout] --> src/utils/template_utils.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn import_template>(template_path: P) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_template` is never used [INFO] [stdout] --> src/utils/template_utils.rs:77:8 [INFO] [stdout] | [INFO] [stdout] 77 | pub fn validate_template(template: &WatermarkTemplate) -> Result<(), WatermarkError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ImageData` is never constructed [INFO] [stdout] --> src/utils/image_data.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct ImageData { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `get_intensity`, `get_image`, `width`, and `height` are never used [INFO] [stdout] --> src/utils/image_data.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl ImageData { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 10 | pub fn new(image: RgbImage) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn get_intensity(&self, x: i32, y: i32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn get_image(&self) -> &RgbImage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn width(&self) -> i32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn height(&self) -> i32 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `channels` is never read [INFO] [stdout] --> src/scientific/analysis/intensity_profile.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct IntensityProfile { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 7 | pub channels: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ColocalizationAnalysis` is never constructed [INFO] [stdout] --> src/scientific/analysis/colocalization.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct ColocalizationAnalysis { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `analyze`, `get_intensity_vectors`, `calculate_pearson`, `calculate_overlap`, `calculate_manders`, and `calculate_icq` are never used [INFO] [stdout] --> src/scientific/analysis/colocalization.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl ColocalizationAnalysis { [INFO] [stdout] | --------------------------- associated functions in this implementation [INFO] [stdout] 15 | pub fn analyze(channel1: &Channel, channel2: &Channel) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | fn get_intensity_vectors(channel1: &Channel, channel2: &Channel) -> (Vec, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | fn calculate_pearson(x: &[f32], y: &[f32]) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn calculate_overlap(x: &[f32], y: &[f32]) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | fn calculate_manders(x: &[f32], y: &[f32]) -> (f32, f32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | fn calculate_icq(x: &[f32], y: &[f32]) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `create_metrics` is never used [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:68:8 [INFO] [stdout] | [INFO] [stdout] 37 | impl CellStatistics { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `detect_outliers` and `calculate_shape_factors` are never used [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:244:8 [INFO] [stdout] | [INFO] [stdout] 242 | pub trait StatisticalAnalysis { [INFO] [stdout] | ------------------- methods in this trait [INFO] [stdout] 243 | fn analyze(&self) -> CellStatistics; [INFO] [stdout] 244 | fn detect_outliers(&self) -> Vec<(usize, String)>; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 245 | fn calculate_shape_factors(&self) -> Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `export_statistics_report` is never used [INFO] [stdout] --> src/scientific/analysis/cell_statistics.rs:271:8 [INFO] [stdout] | [INFO] [stdout] 271 | pub fn export_statistics_report(stats: &CellStatistics, path: &std::path::Path) -> std::io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timestamp` is never read [INFO] [stdout] --> src/scientific/analysis/cell_analysis.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct CellMeasurement { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 11 | pub timestamp: chrono::DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CellMeasurement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_measurements`, `clear_measurements`, and `create_measurement_annotation` are never used [INFO] [stdout] --> src/scientific/analysis/cell_analysis.rs:165:12 [INFO] [stdout] | [INFO] [stdout] 75 | impl CellAnalyzer { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn get_measurements(&self) -> &Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn clear_measurements(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn create_measurement_annotation(&self, measurement: &CellMeasurement, roi: &ROIShape) -> Annotation { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `transformation_matrix` is never read [INFO] [stdout] --> src/scientific/calibration/spatial_calibration.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct SpatialCalibration { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | pub transformation_matrix: Option<[[f32; 3]; 3]>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SpatialCalibration` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `pixel_to_real` and `real_to_pixel` are never used [INFO] [stdout] --> src/scientific/calibration/spatial_calibration.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl SpatialCalibration { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn pixel_to_real(&self, pixel_coord: (i32, i32)) -> (f32, f32) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn real_to_pixel(&self, real_coord: (f32, f32)) -> (i32, i32) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pseudo_color` and `opacity` are never read [INFO] [stdout] --> src/scientific/layers/channel.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Channel { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub pseudo_color: (u8, u8, u8), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 11 | pub opacity: f32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Channel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Measurement` and `Text` are never constructed [INFO] [stdout] --> src/scientific/layers/annotation.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum AnnotationType { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 14 | Measurement { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | Text { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AnnotationType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `image` is never read [INFO] [stdout] --> src/scientific/layers/annotation.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Annotation { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 26 | pub name: String, [INFO] [stdout] 27 | pub image: RgbImage, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Annotation` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/scientific/layers/metadata.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl Calibration { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `current_measurement_points`, `frame`, and `state` are never read [INFO] [stdout] --> src/scientific/state/scientific_state.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct ScientificState { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 27 | pub current_measurement_points: Vec<(i32, i32)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | frame: Option>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 34 | state: Option>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/scientific/state/scientific_state.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 45 | impl ScientificState { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn get_base_image(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn set_frame(&mut self, frame: Rc>) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn set_state(&mut self, state: Rc>) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | pub fn get_frame(&self) -> Option>> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn get_state(&self) -> Option>> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn update_current_roi(&mut self, points: Vec<(i32, i32)>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn clear_current_roi(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn get_active_roi_type(&self) -> ROIShape { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub fn add_point(&mut self, point: (i32, i32)) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn clear_points(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 247 | pub fn set_show_overlay(&mut self, show: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub fn get_annotation_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 324 | pub fn blend_channel(&self, composite: &mut Vec, channel: &Channel) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 426 | pub fn set_measurement_tool(&mut self, tool: MeasurementTool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 461 | fn draw_in_progress(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], color: (u8, u8, u8)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 645 | pub fn add_measurement(&mut self, start: (i32, i32), end: (i32, i32)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 665 | pub fn calculate_roi_area(&self, points: &[(i32, i32)]) -> (f64, String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 685 | pub fn toggle_annotation_visibility(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 692 | pub fn get_visible_annotations(&self) -> Vec<&Annotation> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `analyze_roi` and `clear_measurements` are never used [INFO] [stdout] --> src/scientific/tools/interactive/cell_analysis_tool.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl CellAnalysisTool { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn analyze_roi( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn clear_measurements(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_cell_statistics` and `get_measurements` are never used [INFO] [stdout] --> src/scientific/tools/interactive/cell_analysis_tool.rs:193:8 [INFO] [stdout] | [INFO] [stdout] 188 | pub trait CellAnalysisState { [INFO] [stdout] | ----------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 193 | fn get_cell_statistics(&self) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 194 | fn get_measurements(&self) -> Option>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `outline_color` and `line_width` are never read [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 106 | pub struct ROIProperties { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 107 | pub outline_color: (u8, u8, u8), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 108 | pub line_width: i32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ROIProperties` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `base_image` and `properties` are never read [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 130 | pub struct InteractiveROIState { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 134 | base_image: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 135 | scaling: Option, [INFO] [stdout] 136 | properties: ROIProperties, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `calculate_rectangle` and `show_roi_mode_dialog` are never used [INFO] [stdout] --> src/scientific/tools/interactive/roi_tool.rs:153:8 [INFO] [stdout] | [INFO] [stdout] 140 | impl InteractiveROIState { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 153 | fn calculate_rectangle(&self, start: (i32, i32), current: (i32, i32)) -> (i32, i32, i32, i32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn show_roi_mode_dialog(on_select: impl Fn(ROIShape) + 'static) -> ShapeSelector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MeasurementTool` is never constructed [INFO] [stdout] --> src/scientific/tools/interactive/measurement_tool.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct MeasurementTool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MeasurementTool` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `create_measurement`, `calculate_distance`, `create_scale_bar`, and `handle_measurement` are never used [INFO] [stdout] --> src/scientific/tools/interactive/measurement_tool.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl MeasurementTool { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 23 | pub fn new(calibration: SpatialCalibration, line_color: (u8, u8, u8), line_width: i32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn create_measurement(&self, points: Vec<(i32, i32)>, name: String, _image: RgbImage) -> Annotation { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn calculate_distance(&self, points: &[(i32, i32)]) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn create_scale_bar(&self, length: f32, position: (i32, i32), image: RgbImage) -> Annotation { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn handle_measurement(&self, state_ref: &mut ImageState, points: &[(i32, i32)]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `start_interactive_measurement` is never used [INFO] [stdout] --> src/scientific/tools/interactive/measurement_tool.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn start_interactive_measurement(frame: &Rc>, state: &Rc>, tool: MeasurementTool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IntensityStatistics` is never constructed [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct IntensityStatistics { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MeasurementCalculator` is never constructed [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct MeasurementCalculator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/scientific/tools/interactive/roi/measurements.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl MeasurementCalculator { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 22 | pub fn new(calibration: Option) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | fn generate_ellipse_points(&self, width: i32, height: i32) -> Vec<(i32, i32)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | fn calculate_ellipse_measurements(&self, width: i32, height: i32, image_data: &ImageData) -> ROIMeasurements { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn calculate_measurements( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | fn calculate_polygon_measurements( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | fn calculate_polygon_area(&self, points: &[(i32, i32)]) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | fn calculate_polygon_perimeter(&self, points: &[(i32, i32)]) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | fn calculate_centroid(&self, points: &[(i32, i32)]) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | fn calculate_solidity(&self, points: &[(i32, i32)], area: f64) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | fn calculate_shape_factors(&self, points: &[(i32, i32)]) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | fn calculate_rectangle_measurements(&self, width: i32, height: i32, image_data: &ImageData) -> ROIMeasurements { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | fn calculate_line_measurements(&self, points: &[(i32, i32)], image_data: &ImageData) -> ROIMeasurements { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 276 | fn calculate_intensity_statistics( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 331 | fn point_in_polygon(&self, point: (i32, i32), vertices: &[(i32, i32)]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 352 | fn calibrate_area(&self, area: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 360 | fn calibrate_length(&self, length: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 368 | fn get_units(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/scientific/tools/interactive/roi/properties.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct ROIProperties { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 9 | pub label: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 10 | pub fill_color: Option<(u8, u8, u8)>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 11 | pub outline_color: (u8, u8, u8), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 12 | pub line_width: i32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 13 | pub line_style: LineStyle, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | pub notes: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 15 | pub is_visible: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 16 | pub is_selected: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 17 | pub is_locked: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ROIProperties` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `set_visibility`, `set_selection`, `toggle_lock`, `update_style`, and `update_colors` are never used [INFO] [stdout] --> src/scientific/tools/interactive/roi/properties.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl ROIProperties { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 37 | pub fn new(color: (u8, u8, u8), line_width: i32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn set_visibility(&mut self, visible: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn set_selection(&mut self, selected: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn toggle_lock(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn update_style(&mut self, line_style: LineStyle, line_width: i32) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn update_colors(&mut self, outline: (u8, u8, u8), fill: Option<(u8, u8, u8)>) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ROIState` is never constructed [INFO] [stdout] --> src/scientific/tools/interactive/roi/properties.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct ROIState { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ROIState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/scientific/tools/interactive/roi/properties.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 83 | impl ROIState { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 84 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn set_frame(&mut self, frame: Rc>) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn get_frame(&self) -> Option>> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn get_active_tool_mut(&self) -> Option>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn set_active_tool(&mut self, tool: ROITool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn start_drawing(&mut self, shape_type: ROIShape) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn add_point(&mut self, point: (i32, i32)) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub fn finish_drawing(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | fn update_shape(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub fn is_active(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn lock(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn unlock(&mut self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub fn set_properties(&mut self, properties: ROIProperties) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn get_measurements(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn set_notes(&mut self, notes: Option) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 226 | pub fn toggle_measurements(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | pub fn get_bounding_box(&self) -> Option<(i32, i32, i32, i32)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_scale_bar` is never used [INFO] [stdout] --> src/scientific/ui/measurement_dialog.rs:15:4 [INFO] [stdout] | [INFO] [stdout] 15 | fn add_scale_bar(state: &mut ScientificState, length: f32, unit: String) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `show_measurement_dialog` is never used [INFO] [stdout] --> src/scientific/ui/measurement_dialog.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | pub fn show_measurement_dialog(state: &Rc>) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `show_roi_dialog` is never used [INFO] [stdout] --> src/scientific/ui/roi_dialog.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn show_roi_dialog(frame: &Rc>, state: &Rc>) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `show_batch_analysis_dialog` is never used [INFO] [stdout] --> src/scientific/ui/cell_analysis/dialog.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn show_batch_analysis_dialog( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_col_widths` is never used [INFO] [stdout] --> src/scientific/ui/cell_analysis/table.rs:88:8 [INFO] [stdout] | [INFO] [stdout] 88 | pub fn set_col_widths(table: &mut Table, data: &[Vec]) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `customize_table` is never used [INFO] [stdout] --> src/scientific/ui/cell_analysis/table.rs:108:8 [INFO] [stdout] | [INFO] [stdout] 108 | pub fn customize_table(table: &mut Table) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `statistics_table` and `auto_update` are never read [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct BatchDialog { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 39 | statistics_table: TableRow, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | auto_update: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BatchDialog` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_measurement`, `hide`, and `is_visible` are never used [INFO] [stdout] --> src/scientific/ui/roi/batch_dialog.rs:312:12 [INFO] [stdout] | [INFO] [stdout] 52 | impl BatchDialog { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn add_measurement(&mut self, measurement: ROIMeasurements) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub fn hide(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 345 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PADDING` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub const PADDING: i32 = 5; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BUTTON_HEIGHT` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | pub const BUTTON_HEIGHT: i32 = 25; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INPUT_HEIGHT` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const INPUT_HEIGHT: i32 = 25; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HEADER_HEIGHT` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub const HEADER_HEIGHT: i32 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PRIMARY_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:17:11 [INFO] [stdout] | [INFO] [stdout] 17 | pub const PRIMARY_COLOR: (u8, u8, u8) = (0, 121, 194); // Blue [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SECONDARY_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const SECONDARY_COLOR: (u8, u8, u8) = (88, 88, 88); // Gray [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SUCCESS_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub const SUCCESS_COLOR: (u8, u8, u8) = (40, 167, 69); // Green [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WARNING_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | pub const WARNING_COLOR: (u8, u8, u8) = (255, 193, 7); // Yellow [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ERROR_COLOR` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:21:11 [INFO] [stdout] | [INFO] [stdout] 21 | pub const ERROR_COLOR: (u8, u8, u8) = (220, 53, 69); // Red [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TITLE_FONT_SIZE` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/mod.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const TITLE_FONT_SIZE: i32 = 16; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_color` is never used [INFO] [stdout] --> src/scientific/ui/roi/components/color_picker.rs:183:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl ColorPicker { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn set_color(&mut self, color: (u8, u8, u8)) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LineStyleSelector` is never constructed [INFO] [stdout] --> src/scientific/ui/roi/components/line_style_selector.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct LineStyleSelector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `setup_callbacks`, `get_style`, `get_width`, `set_style`, and `set_width` are never used [INFO] [stdout] --> src/scientific/ui/roi/components/line_style_selector.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl LineStyleSelector { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 22 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | fn setup_callbacks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn get_style(&self) -> LineStyle { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn get_width(&self) -> i32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn set_style(&mut self, style: LineStyle) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn set_width(&mut self, width: i32) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `selected_row` is never read [INFO] [stdout] --> src/scientific/ui/roi/components/measurement_table.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct MeasurementTable { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 33 | selected_row: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MeasurementTable` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_selected_measurement`, `set_row_callback`, `clear`, `get_row_count`, `get_all_measurements`, and `export_csv` are never used [INFO] [stdout] --> src/scientific/ui/roi/components/measurement_table.rs:193:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl MeasurementTable { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 193 | pub fn get_selected_measurement(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 203 | pub fn set_row_callback(&mut self, callback: F) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn get_row_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | pub fn get_all_measurements(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | pub fn export_csv(&self, path: &std::path::Path) -> std::io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `JSON`, `Excel`, and `ImageROI` are never constructed [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum ExportFormat { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 18 | CSV, [INFO] [stdout] 19 | JSON, [INFO] [stdout] | ^^^^ [INFO] [stdout] 20 | Excel, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 21 | ImageROI, // Exports ROI overlay on image [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct ExportOptions { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 26 | pub format: ExportFormat, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 27 | pub include_measurements: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 28 | pub include_statistics: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 29 | pub include_images: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 30 | pub include_metadata: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | pub batch_export: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 32 | pub export_path: PathBuf, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportOptions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/scientific/ui/roi/export_dialog.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl ExportDialog { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 70 | pub fn new(parent: Rc>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | fn setup_callbacks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | fn update_options(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | fn validate_export(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | fn perform_export(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | fn export_csv(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | fn export_json(&self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | fn export_excel(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | fn export_image_roi(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn show(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn hide(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 279 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MeasurementDialog` is never constructed [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct MeasurementDialog { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `setup_callbacks`, `export_measurements`, `show`, `hide`, and `is_visible` are never used [INFO] [stdout] --> src/scientific/ui/roi/measurement_dialog.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl MeasurementDialog { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 25 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn setup_callbacks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | fn export_measurements(measurements: &ROIMeasurements, path: &std::path::Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn show(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn hide(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PropertiesDialog` is never constructed [INFO] [stdout] --> src/scientific/ui/roi/properties_dialog.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct PropertiesDialog { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `setup_callbacks`, `show`, `hide`, and `is_visible` are never used [INFO] [stdout] --> src/scientific/ui/roi/properties_dialog.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl PropertiesDialog { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 49 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn setup_callbacks(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn show(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn hide(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Dash` and `Dot` are never constructed [INFO] [stdout] --> src/scientific/types.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum LineStyle { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 10 | Solid, [INFO] [stdout] 11 | Dash, [INFO] [stdout] | ^^^^ [INFO] [stdout] 12 | Dot, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LineStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `integrated_density`, `std_dev`, `aspect_ratio`, `roundness`, `solidity`, and `is_calibrated` are never read [INFO] [stdout] --> src/scientific/types.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 68 | pub struct ROIMeasurements { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 76 | pub integrated_density: f64, // Added to match usage [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 77 | pub std_dev: f64, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 78 | pub aspect_ratio: f64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 79 | pub roundness: f64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 80 | pub solidity: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 81 | pub shape_type: ROIShape, // Added to match usage [INFO] [stdout] 82 | pub is_calibrated: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ROIMeasurements` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `active`, `unit`, `color`, and `line_width` are never read [INFO] [stdout] --> src/scientific/types.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 86 | pub struct MeasurementTool { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 87 | pub active: bool, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 88 | pub unit: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 89 | pub color: (u8, u8, u8), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 90 | pub line_width: i32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/scientific/types.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 93 | impl MeasurementTool { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 94 | pub fn new(unit: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `draw_text_with_background`, `draw_line_with_endpoints`, `draw_measurement`, `draw_guide_text`, and `calculate_position` are never used [INFO] [stdout] --> src/scientific/rendering/frame_renderer.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl FrameRenderer { [INFO] [stdout] | ------------------ associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn draw_text_with_background( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn draw_line_with_endpoints( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn draw_measurement( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn draw_guide_text(text: &str, x: i32, y: i32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn calculate_position( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 3.45s [INFO] running `Command { std: "docker" "inspect" "39588a3fee374963c2dcb79dc7ee66e6e1f39075ff496b9e8838ed8267bcf66a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "39588a3fee374963c2dcb79dc7ee66e6e1f39075ff496b9e8838ed8267bcf66a", kill_on_drop: false }` [INFO] [stdout] 39588a3fee374963c2dcb79dc7ee66e6e1f39075ff496b9e8838ed8267bcf66a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+7af779037716ae4125ceabb429791b4cf5dd0a43" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 9c1623a8c76361cd8fdb8324de88eea09ca69fd188fee4cdf9d506a5c454886c [INFO] running `Command { std: "docker" "start" "-a" "9c1623a8c76361cd8fdb8324de88eea09ca69fd188fee4cdf9d506a5c454886c", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `crop_tool::CropSelection` [INFO] [stderr] --> src/menu/edit/crop/mod.rs:3:9 [INFO] [stderr] | [INFO] [stderr] 3 | pub use crop_tool::CropSelection; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stderr] --> src/menu/edit/filters/basic/hue.rs:47:31 [INFO] [stderr] | [INFO] [stderr] 47 | let (r, g, b) = match (h as i32) { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 47 - let (r, g, b) = match (h as i32) { [INFO] [stderr] 47 + let (r, g, b) = match h as i32 { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around block return value [INFO] [stderr] --> src/menu/edit/filters/advanced/convolution.rs:197:21 [INFO] [stderr] | [INFO] [stderr] 197 | ((filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8) [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 197 - ((filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8) [INFO] [stderr] 197 + (filtered as f32 * factor + orig as f32 * (1.0 - factor)) as u8 [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around block return value [INFO] [stderr] --> src/menu/edit/filters/advanced/pixelate.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | ((pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 139 - ((pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stderr] 139 + (pixelated as f32 * factor + original as f32 * (1.0 - factor)) as u8 [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused imports: `EdgeDetectionFilter` and `NoiseFilter` [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | EdgeDetectionFilter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 29 | EdgeDetectionMethod, [INFO] [stderr] 30 | NoiseFilter, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `start_interactive_pixelate` [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | start_interactive_pixelate, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `handle_apply_motion_blur` and `handle_apply_posterize` [INFO] [stderr] --> src/menu/edit/filters/dialog.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | handle_apply_posterize, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 45 | handle_apply_motion_blur, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::ImageFilter` [INFO] [stderr] --> src/menu/edit/filters/pixelate_tool.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use super::ImageFilter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ConvolutionType` and `EdgeDetectionMethod` [INFO] [stderr] --> src/menu/edit/filters/mod.rs:35:20 [INFO] [stderr] | [INFO] [stderr] 35 | pub use advanced::{ConvolutionType, EdgeDetectionMethod}; // Re-export from advanced module [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around block return value [INFO] [stderr] --> src/menu/edit/layers/color_filter.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | ((color as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 73 - ((color as f32 * factor + original as f32 * (1.0 - factor)) as u8) [INFO] [stderr] 73 + (color as f32 * factor + original as f32 * (1.0 - factor)) as u8 [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `color_tool::start_interactive_color` [INFO] [stderr] --> src/menu/edit/layers/mod.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | pub use color_tool::start_interactive_color; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `dialog::show_cell_analysis_dialog` [INFO] [stderr] --> src/menu/scientific/analysis/handlers.rs:8:13 [INFO] [stderr] | [INFO] [stderr] 8 | dialog::show_cell_analysis_dialog, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `handle_batch_analysis`, `handle_cell_analysis`, `handle_export_analysis`, `handle_show_statistics`, and `handle_stop_analysis` [INFO] [stderr] --> src/menu/scientific/analysis/mod.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | handle_cell_analysis, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 8 | handle_batch_analysis, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 9 | handle_show_statistics, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 10 | handle_export_analysis, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 11 | handle_stop_analysis, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `fltk::image::RgbImage` [INFO] [stderr] --> src/scientific/analysis/colocalization.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use fltk::image::RgbImage; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/scientific/analysis/colocalization.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: elided lifetime has a name [INFO] [stderr] --> src/scientific/analysis/cell_statistics.rs:68:82 [INFO] [stderr] | [INFO] [stderr] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stderr] | -- lifetime `'a` declared here ^ this elided lifetime gets resolved as `'a` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stderr] [INFO] [stderr] warning: elided lifetime has a name [INFO] [stderr] --> src/scientific/analysis/cell_statistics.rs:68:88 [INFO] [stderr] | [INFO] [stderr] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stderr] | -- lifetime `'a` declared here ^ this elided lifetime gets resolved as `'a` [INFO] [stderr] [INFO] [stderr] warning: unused import: `MeasurementTool` [INFO] [stderr] --> src/scientific/analysis/cell_analysis.rs:3:23 [INFO] [stderr] | [INFO] [stderr] 3 | types::{ROIShape, MeasurementTool}, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `fltk::image::RgbImage` [INFO] [stderr] --> src/scientific/calibration/spatial_calibration.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use fltk::image::RgbImage; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Metadata` [INFO] [stderr] --> src/scientific/state/scientific_state.rs:7:50 [INFO] [stderr] | [INFO] [stderr] 7 | layers::{Channel, Annotation, AnnotationType,Metadata, Calibration}, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Button` and `Pack` [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:7:20 [INFO] [stderr] | [INFO] [stderr] 7 | group::{Group, Pack}, [INFO] [stderr] | ^^^^ [INFO] [stderr] 8 | button::{RadioRoundButton, Button}, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AnnotationType` and `Annotation` [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:15:14 [INFO] [stderr] | [INFO] [stderr] 15 | layers::{Annotation, AnnotationType}, [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:466:45 [INFO] [stderr] | [INFO] [stderr] 466 | ... let angle = (i as f64 * 2.0 * std::f64::consts::PI / num_points as f64); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 466 - let angle = (i as f64 * 2.0 * std::f64::consts::PI / num_points as f64); [INFO] [stderr] 466 + let angle = i as f64 * 2.0 * std::f64::consts::PI / num_points as f64; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `Event` [INFO] [stderr] --> src/scientific/tools/interactive/metadata_tool.rs:2:13 [INFO] [stderr] | [INFO] [stderr] 2 | enums::{Event, Color, Align}, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `measurement_tool::*` [INFO] [stderr] --> src/scientific/tools/interactive/mod.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | pub use measurement_tool::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ScaleRenderer` [INFO] [stderr] --> src/scientific/tools/handlers/scale.rs:4:36 [INFO] [stderr] | [INFO] [stderr] 4 | use crate::scientific::rendering::{ScaleRenderer, FrameRenderer}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `MeasurementTool`, `ROIShape`, and `ROITool` [INFO] [stderr] --> src/scientific/tools/mod.rs:5:23 [INFO] [stderr] | [INFO] [stderr] 5 | pub use interactive::{ROITool, ROIShape, MeasurementTool}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Align` and `Input` [INFO] [stderr] --> src/scientific/ui/channel_dialog.rs:6:25 [INFO] [stderr] | [INFO] [stderr] 6 | input::{FloatInput, Input}, [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 9 | enums::{Color, FrameType, Align}, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/scientific/ui/measurement_dialog.rs:12:25 [INFO] [stderr] | [INFO] [stderr] 12 | use crate::scientific::{self, Annotation, AnnotationType}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `FloatInput` [INFO] [stderr] --> src/scientific/ui/scale_dialog.rs:4:20 [INFO] [stderr] | [INFO] [stderr] 4 | input::{Input, FloatInput}, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Color` [INFO] [stderr] --> src/scientific/ui/cell_analysis/dialog.rs:7:13 [INFO] [stderr] | [INFO] [stderr] 7 | enums::{Color, FrameType}, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `CellStatistics` and `StatisticalAnalysis` [INFO] [stderr] --> src/scientific/ui/cell_analysis/dialog.rs:16:31 [INFO] [stderr] | [INFO] [stderr] 16 | cell_statistics::{CellStatistics, StatisticalAnalysis} [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Pack` [INFO] [stderr] --> src/scientific/ui/cell_analysis/statistics.rs:5:13 [INFO] [stderr] | [INFO] [stderr] 5 | group::{Pack, Tabs, Group}, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `dialog::show_cell_analysis_dialog` [INFO] [stderr] --> src/scientific/ui/cell_analysis/mod.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | pub use dialog::show_cell_analysis_dialog; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `statistics::show_statistics_dialog` [INFO] [stderr] --> src/scientific/ui/cell_analysis/mod.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 7 | pub use statistics::show_statistics_dialog; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `export_batch_measurements` and `export_measurement_data` [INFO] [stderr] --> src/scientific/ui/cell_analysis/mod.rs:8:18 [INFO] [stderr] | [INFO] [stderr] 8 | pub use export::{export_measurement_data, export_batch_measurements}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Font` [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:9:20 [INFO] [stderr] | [INFO] [stderr] 9 | enums::{Color, Font, FrameType, Align}, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `collections::HashMap` [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:12:34 [INFO] [stderr] | [INFO] [stderr] 12 | use std::{rc::Rc, cell::RefCell, collections::HashMap}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `FrameType` [INFO] [stderr] --> src/scientific/ui/roi/components/line_style_selector.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | enums::{FrameType, Align}, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `measurement_table::MeasurementTable` [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 7 | pub use measurement_table::MeasurementTable; // Make public [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Color` [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:7:20 [INFO] [stderr] | [INFO] [stderr] 7 | enums::{Align, Color, FrameType}, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ROIMeasurements`, `ROIShape`, and `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | types::{ROIMeasurements, ROIShape}, [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] 13 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tools::interactive::roi::measurements::MeasurementCalculator` [INFO] [stderr] --> src/scientific/ui/roi/measurement_dialog.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | tools::interactive::roi::measurements::MeasurementCalculator, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BatchDialog` [INFO] [stderr] --> src/scientific/ui/roi/mod.rs:11:24 [INFO] [stderr] | [INFO] [stderr] 11 | pub use batch_dialog::{BatchDialog, show_batch_analysis_dialog}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `batch_dialog::*` [INFO] [stderr] --> src/scientific/ui/roi/mod.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | pub use batch_dialog::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `export_dialog::*` [INFO] [stderr] --> src/scientific/ui/roi/mod.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | pub use export_dialog::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `measurement_dialog::*` [INFO] [stderr] --> src/scientific/ui/roi/mod.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | pub use measurement_dialog::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `properties_dialog::*` [INFO] [stderr] --> src/scientific/ui/roi/mod.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | pub use properties_dialog::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::batch_dialog::BatchStatistics` [INFO] [stderr] --> src/scientific/ui/roi/mod.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | pub use self::batch_dialog::BatchStatistics; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cell_analysis::*` [INFO] [stderr] --> src/scientific/ui/mod.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | pub use cell_analysis::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `roi::*` [INFO] [stderr] --> src/scientific/ui/mod.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | pub use roi::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::scientific::rendering::frame_renderer::FrameRenderer` [INFO] [stderr] --> src/scientific/rendering/scale_renderer.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use crate::scientific::rendering::frame_renderer::FrameRenderer; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Metadata` [INFO] [stderr] --> src/scientific/mod.rs:12:55 [INFO] [stderr] | [INFO] [stderr] 12 | pub use layers::{Channel, Annotation, AnnotationType, Metadata}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ColocalizationAnalysis` [INFO] [stderr] --> src/scientific/mod.rs:13:38 [INFO] [stderr] | [INFO] [stderr] 13 | pub use analysis::{IntensityProfile, ColocalizationAnalysis}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `calibration::SpatialCalibration` [INFO] [stderr] --> src/scientific/mod.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | pub use calibration::SpatialCalibration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `state::ScientificState` [INFO] [stderr] --> src/scientific/mod.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | pub use state::ScientificState; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `LegendPosition`, `MeasurementTool`, `ROIShape`, and `ROITool` [INFO] [stderr] --> src/scientific/mod.rs:16:17 [INFO] [stderr] | [INFO] [stderr] 16 | pub use types::{LegendPosition, ROIShape, ROITool, MeasurementTool}; [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `reporting::CalibrationReport` [INFO] [stderr] --> src/scientific/mod.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | pub use reporting::CalibrationReport; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `visualization::CellVisualizer` [INFO] [stderr] --> src/scientific/mod.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | pub use visualization::CellVisualizer; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Event` [INFO] [stderr] --> src/main.rs:12:23 [INFO] [stderr] | [INFO] [stderr] 12 | enums::{Shortcut, Event, CallbackTrigger}, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::scientific::tools::interactive::cell_analysis_tool::CellAnalysisState` [INFO] [stderr] --> src/main.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | use crate::scientific::tools::interactive::cell_analysis_tool::CellAnalysisState; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `prelude` [INFO] [stderr] --> src/menu/file/open.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | prelude::*, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `prelude` [INFO] [stderr] --> src/scientific/tools/interactive/cell_analysis_tool.rs:1:29 [INFO] [stderr] | [INFO] [stderr] 1 | use fltk::{image::RgbImage, prelude::*, enums::Event}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/menu/edit/crop/crop_tool.rs:132:17 [INFO] [stderr] | [INFO] [stderr] 132 | if let Some(mut fltk_image) = cropped_img { [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `now` [INFO] [stderr] --> src/menu/edit/watermark/templates/defaults.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | let now = chrono::Utc::now(); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pack` [INFO] [stderr] --> src/menu/edit/layers/dialog.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | pack: &mut Pack, [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pack` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pack` [INFO] [stderr] --> src/menu/edit/layers/dialog.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | pack: &mut Pack, [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_pack` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `filter` [INFO] [stderr] --> src/menu/edit/layers/interactive_tool/mod.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | let filter = ColorFilter::new(color); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_filter` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `frame_clone` [INFO] [stderr] --> src/menu/edit/layers/color_tool.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | let frame_clone = frame_clone.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_clone` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `frame` [INFO] [stderr] --> src/menu/scientific/analysis/handlers.rs:78:31 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn handle_show_statistics(frame: &Rc>, state: &Rc>) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `frame` [INFO] [stderr] --> src/menu/scientific/analysis/handlers.rs:92:31 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn handle_export_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `is_analyzing` [INFO] [stderr] --> src/menu/scientific/analysis/cell.rs:157:25 [INFO] [stderr] | [INFO] [stderr] 157 | let is_analyzing = state_ref.scientific_state.is_analyzing_cells(); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_analyzing` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stats` [INFO] [stderr] --> src/scientific/analysis/cell_statistics.rs:89:31 [INFO] [stderr] | [INFO] [stderr] 89 | for (metric_name, stats, values) in &metrics { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_stats` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/analysis/cell_statistics.rs:224:15 [INFO] [stderr] | [INFO] [stderr] 224 | fn percentile(mut values: impl Iterator, p: f64) -> f64 { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `unit` [INFO] [stderr] --> src/scientific/state/scientific_state.rs:449:54 [INFO] [stderr] | [INFO] [stderr] 449 | AnnotationType::Scale { pixels_per_unit, unit } => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `unit: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pixels_per_unit` [INFO] [stderr] --> src/scientific/state/scientific_state.rs:491:103 [INFO] [stderr] | [INFO] [stderr] 491 | fn draw_scale_bar(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], pixels_per_unit: f32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels_per_unit` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length` [INFO] [stderr] --> src/scientific/state/scientific_state.rs:568:105 [INFO] [stderr] | [INFO] [stderr] 568 | fn draw_measurement(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], length: f32, unit: &str) { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:422:17 [INFO] [stderr] | [INFO] [stderr] 422 | _ => {} [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:422:17 [INFO] [stderr] | [INFO] [stderr] 378 | ROIShape::Rectangle { .. } => { [INFO] [stderr] | -------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 395 | ROIShape::Ellipse { .. } => { [INFO] [stderr] | ------------------------ matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 409 | ROIShape::Line { .. } => { [INFO] [stderr] | --------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 417 | ROIShape::Polygon { .. } => { [INFO] [stderr] | ------------------------ matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 422 | _ => {} [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:235:19 [INFO] [stderr] | [INFO] [stderr] 235 | if let Ok(mut state_ref) = state.try_borrow_mut() { [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/tools/interactive/metadata_tool.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | let mut window = Window::default() [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `state_ref` [INFO] [stderr] --> src/scientific/tools/interactive/metadata_tool.rs:153:23 [INFO] [stderr] | [INFO] [stderr] 153 | if let Ok(mut state_ref) = state_clone.try_borrow_mut() { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state_ref` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_metadata` [INFO] [stderr] --> src/scientific/tools/interactive/metadata_tool.rs:154:17 [INFO] [stderr] | [INFO] [stderr] 154 | let new_metadata = editor.get_metadata(); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_metadata` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/tools/interactive/metadata_tool.rs:153:19 [INFO] [stderr] | [INFO] [stderr] 153 | if let Ok(mut state_ref) = state_clone.try_borrow_mut() { [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `convex_hull_area` [INFO] [stderr] --> src/scientific/tools/interactive/roi/measurements.rs:110:14 [INFO] [stderr] | [INFO] [stderr] 110 | let (convex_hull_area, solidity) = self.calculate_solidity(points, area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_convex_hull_area` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `points` [INFO] [stderr] --> src/scientific/tools/interactive/roi/measurements.rs:181:34 [INFO] [stderr] | [INFO] [stderr] 181 | fn calculate_solidity(&self, points: &[(i32, i32)], area: f64) -> (f64, f64) { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_points` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `channel_list` [INFO] [stderr] --> src/scientific/ui/channel_dialog.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | let channel_list = create_channel_list(&mut pack, state.clone()); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_list` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `vis_header` [INFO] [stderr] --> src/scientific/ui/channel_dialog.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | let vis_header = Frame::new(0, 0, 25, 25, ""); [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vis_header` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `action_header` [INFO] [stderr] --> src/scientific/ui/channel_dialog.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | let action_header = Frame::new(0, 0, 60, 25, ""); [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_action_header` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `wavelength` [INFO] [stderr] --> src/scientific/ui/channel_dialog.rs:109:17 [INFO] [stderr] | [INFO] [stderr] 109 | let mut wavelength = Frame::new(0, 0, 100, 35, &*wavelength_text); [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wavelength` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/channel_dialog.rs:109:13 [INFO] [stderr] | [INFO] [stderr] 109 | let mut wavelength = Frame::new(0, 0, 100, 35, &*wavelength_text); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `profile` [INFO] [stderr] --> src/scientific/ui/profile_dialog.rs:7:28 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn show_profile_dialog(profile: &IntensityProfile) { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_profile` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `frame` [INFO] [stderr] --> src/scientific/ui/scale_dialog.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | let frame = frame.clone(); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `frame` [INFO] [stderr] --> src/scientific/ui/cell_analysis/dialog.rs:113:5 [INFO] [stderr] | [INFO] [stderr] 113 | frame: &Rc>, [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/cell_analysis/statistics.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | let mut tabs = Tabs::new(WINDOW_PADDING, WINDOW_PADDING, 780, 540, ""); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/cell_analysis/statistics.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | let mut summary_group = Group::new(WINDOW_PADDING, 35, 780, 515, "Summary"); [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/cell_analysis/statistics.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | let mut correlations_group = Group::new(WINDOW_PADDING, 35, 780, 515, "Correlations"); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `measurement` [INFO] [stderr] --> src/scientific/ui/cell_analysis/export.rs:8:53 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn export_measurement_data(_state: &ImageState, measurement: &CellMeasurement) { [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurement` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `measurements` [INFO] [stderr] --> src/scientific/ui/cell_analysis/export.rs:12:55 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn export_batch_measurements(_state: &ImageState, measurements: &[CellMeasurement]) { [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurements` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | let mut scroll = Scroll::new(5, 25, 770, 270, ""); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | let mut auto_update = CheckButton::new(0, 0, 150, 30, "Auto Update"); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `path` [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:333:30 [INFO] [stderr] | [INFO] [stderr] 333 | fn export_to_file(&self, path: &std::path::Path) { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `frame` [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:350:5 [INFO] [stderr] | [INFO] [stderr] 350 | frame: &Rc>, [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `state` [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:351:5 [INFO] [stderr] | [INFO] [stderr] 351 | state: &Rc>, [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `measurements` [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:352:5 [INFO] [stderr] | [INFO] [stderr] 352 | measurements: &Vec [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurements` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | let mut path_input = Input::new(0, 0, 300, 30, None); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 94 | let mut browse_btn = Button::new(0, 0, 75, 30, Some("Browse")); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | let mut json_radio = RadioRoundButton::new(20, 35, 160, 25, Some("JSON (.json)")); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | let mut excel_radio = RadioRoundButton::new(20, 60, 160, 25, Some("Excel (.xlsx)")); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | let mut measurements_check = CheckButton::new(20, 10, 340, 25, Some("Include Measurements")); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | let mut statistics_check = CheckButton::new(20, 35, 340, 25, Some("Include Statistics")); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | let mut images_check = CheckButton::new(20, 60, 340, 25, Some("Include Images")); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | let mut metadata_check = CheckButton::new(20, 85, 340, 25, Some("Include Metadata")); [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | let mut batch_check = CheckButton::new(20, 110, 340, 25, Some("Batch Export")); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | let mut export_btn = Button::new(0, 0, 185, 30, Some("Export")); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | let mut cancel_btn = Button::new(0, 0, 185, 30, Some("Cancel")); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `image_radio` [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | let image_radio = self.image_radio.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_image_radio` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/measurement_dialog.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | let mut scroll = Scroll::new(0, 0, 380, 380, ""); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/measurement_dialog.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | let mut export_btn = Button::new(0, 0, 185, 25, "Export Data"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/measurement_dialog.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | let mut close_btn = Button::new(195, 0, 185, 25, "Close"); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scientific/ui/roi/properties_dialog.rs:138:23 [INFO] [stderr] | [INFO] [stderr] 138 | if let Ok(mut state_ref) = state.try_borrow_mut() { [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pixels_per_unit` [INFO] [stderr] --> src/scientific/rendering/scale_renderer.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | pixels_per_unit: f32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels_per_unit` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `unit` [INFO] [stderr] --> src/scientific/rendering/scale_renderer.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | unit: &str, [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_unit` [INFO] [stderr] [INFO] [stderr] warning: type `ShapeSelector` is more private than the item `InteractiveROIState::show_roi_mode_dialog` [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | pub fn show_roi_mode_dialog(on_select: impl Fn(ROIShape) + 'static) -> ShapeSelector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `InteractiveROIState::show_roi_mode_dialog` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `ShapeSelector` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | struct ShapeSelector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: `#[warn(private_interfaces)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variants `InvalidPosition`, `InvalidOpacity`, `TextRenderingError`, and `BlendingError` are never constructed [INFO] [stderr] --> src/menu/edit/watermark/mod.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 35 | pub enum WatermarkError { [INFO] [stderr] | -------------- variants in this enum [INFO] [stderr] 36 | InvalidPosition(String), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 37 | InvalidOpacity(String), [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 38 | TextRenderingError(String), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 39 | ImageLoadError(String), [INFO] [stderr] 40 | BlendingError(String), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `WatermarkError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: enum `WatermarkSource` is never used [INFO] [stderr] --> src/menu/edit/watermark/mod.rs:46:10 [INFO] [stderr] | [INFO] [stderr] 46 | pub enum WatermarkSource { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `WatermarkSource` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `remove` is never used [INFO] [stderr] --> src/menu/edit/watermark/mod.rs:127:8 [INFO] [stderr] | [INFO] [stderr] 123 | pub trait Watermark { [INFO] [stderr] | --------- method in this trait [INFO] [stderr] ... [INFO] [stderr] 127 | fn remove(&self, image: &mut image::ImageBuffer, Vec>, area: &WatermarkPosition) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `data` and `font` are never read [INFO] [stderr] --> src/menu/edit/watermark/fonts/mod.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 10 | struct StaticFontData { [INFO] [stderr] | -------------- fields in this struct [INFO] [stderr] 11 | data: Vec, [INFO] [stderr] | ^^^^ [INFO] [stderr] 12 | font: Arc>, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `get_font` and `remove_font` are never used [INFO] [stderr] --> src/menu/edit/watermark/fonts/mod.rs:61:12 [INFO] [stderr] | [INFO] [stderr] 36 | impl FontManager { [INFO] [stderr] | ---------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 61 | pub fn get_font(&self, name: &str) -> Option>> { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 73 | pub fn remove_font(&mut self, name: &str) -> Result<(), WatermarkError> { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_add_watermark` is never used [INFO] [stderr] --> src/menu/edit/watermark/handlers.rs:117:8 [INFO] [stderr] | [INFO] [stderr] 117 | pub fn handle_add_watermark(frame: &Rc>, state: &Rc>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_position_valid` is never used [INFO] [stderr] --> src/menu/edit/watermark/position.rs:64:8 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn is_position_valid( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `save_template`, `load_template`, and `save_template_to_disk` are never used [INFO] [stderr] --> src/menu/edit/watermark/templates/mod.rs:48:12 [INFO] [stderr] | [INFO] [stderr] 17 | impl TemplateManager { [INFO] [stderr] | -------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 48 | pub fn save_template( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 59 | pub fn load_template(&self, name: &str) [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 101 | fn save_template_to_disk(&self, name: &str) -> Result<(), WatermarkError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `draw` is never used [INFO] [stderr] --> src/menu/edit/watermark/removal_tool.rs:94:12 [INFO] [stderr] | [INFO] [stderr] 23 | impl WatermarkRemovalTool { [INFO] [stderr] | ------------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 94 | pub fn draw(&self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `fltk_to_image_buffer` is never used [INFO] [stderr] --> src/menu/edit/filters/mod.rs:44:15 [INFO] [stderr] | [INFO] [stderr] 44 | pub(crate) fn fltk_to_image_buffer(fltk_image: &RgbImage) -> ImageBuffer, Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `image_buffer_to_fltk` is never used [INFO] [stderr] --> src/menu/edit/filters/mod.rs:67:15 [INFO] [stderr] | [INFO] [stderr] 67 | pub(crate) fn image_buffer_to_fltk(buffer: &ImageBuffer, Vec>) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `gaussian_kernel` is never used [INFO] [stderr] --> src/menu/edit/filters/advanced/edge_detection.rs:117:8 [INFO] [stderr] | [INFO] [stderr] 23 | impl EdgeDetectionFilter { [INFO] [stderr] | ------------------------ associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 117 | fn gaussian_kernel(size: usize, sigma: f32) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_apply_edge_detection` is never used [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:241:8 [INFO] [stderr] | [INFO] [stderr] 241 | pub fn handle_apply_edge_detection( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_apply_canny_edge_detection` is never used [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:250:8 [INFO] [stderr] | [INFO] [stderr] 250 | pub fn handle_apply_canny_edge_detection( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_apply_noise` is never used [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:258:8 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn handle_apply_noise( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_apply_vignette` is never used [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:266:8 [INFO] [stderr] | [INFO] [stderr] 266 | pub fn handle_apply_vignette( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_apply_posterize` is never used [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:288:8 [INFO] [stderr] | [INFO] [stderr] 288 | pub fn handle_apply_posterize( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_apply_pixelate` is never used [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:310:8 [INFO] [stderr] | [INFO] [stderr] 310 | pub fn handle_apply_pixelate( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_apply_motion_blur` is never used [INFO] [stderr] --> src/menu/edit/filters/handlers.rs:334:8 [INFO] [stderr] | [INFO] [stderr] 334 | pub fn handle_apply_motion_blur( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `with_opacity` is never used [INFO] [stderr] --> src/menu/edit/layers/color_filter.rs:106:12 [INFO] [stderr] | [INFO] [stderr] 104 | impl ColorFilter { [INFO] [stderr] | ---------------- method in this implementation [INFO] [stderr] 105 | // this method exists to support opacity [INFO] [stderr] 106 | pub fn with_opacity(mut self, opacity: f32) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `start_interactive_layer` is never used [INFO] [stderr] --> src/menu/edit/layers/interactive_tool/mod.rs:16:8 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn start_interactive_layer( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_cell_analysis` is never used [INFO] [stderr] --> src/menu/scientific/analysis/handlers.rs:21:8 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn handle_cell_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_batch_analysis` is never used [INFO] [stderr] --> src/menu/scientific/analysis/handlers.rs:59:8 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn handle_batch_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_show_statistics` is never used [INFO] [stderr] --> src/menu/scientific/analysis/handlers.rs:78:8 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn handle_show_statistics(frame: &Rc>, state: &Rc>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_export_analysis` is never used [INFO] [stderr] --> src/menu/scientific/analysis/handlers.rs:92:8 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn handle_export_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_stop_analysis` is never used [INFO] [stderr] --> src/menu/scientific/analysis/handlers.rs:106:8 [INFO] [stderr] | [INFO] [stderr] 106 | pub fn handle_stop_analysis(frame: &Rc>, state: &Rc>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `get_watermark_options`, `get_scientific_state`, and `get_scientific_state_mut` are never used [INFO] [stderr] --> src/state/mod.rs:55:11 [INFO] [stderr] | [INFO] [stderr] 41 | impl ImageState { [INFO] [stderr] | --------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 55 | pub fn get_watermark_options(&self) -> WatermarkOptions { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 59 | pub fn get_scientific_state(&self) -> &ScientificState { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 63 | pub fn get_scientific_state_mut(&mut self) -> &mut ScientificState { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `current_filter` is never read [INFO] [stderr] --> src/state/filter_state.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 26 | pub struct FilterState { [INFO] [stderr] | ----------- field in this struct [INFO] [stderr] 27 | is_preview_active: bool, [INFO] [stderr] 28 | current_filter: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `FilterState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `get_current_filter` and `set_current_filter` are never used [INFO] [stderr] --> src/state/filter_state.rs:92:12 [INFO] [stderr] | [INFO] [stderr] 31 | impl FilterState { [INFO] [stderr] | ---------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 92 | pub fn get_current_filter(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 96 | pub fn set_current_filter(&mut self, filter: Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `message` is never read [INFO] [stderr] --> src/state/watermark_state.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 15 | pub struct WatermarkError { [INFO] [stderr] | -------------- field in this struct [INFO] [stderr] 16 | pub message: String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `WatermarkError` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `name` and `options` are never read [INFO] [stderr] --> src/state/watermark_state.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 28 | pub struct WatermarkTemplate { [INFO] [stderr] | ----------------- fields in this struct [INFO] [stderr] 29 | pub name: String, [INFO] [stderr] | ^^^^ [INFO] [stderr] 30 | pub options: WatermarkOptions, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `WatermarkTemplate` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `list_templates` is never used [INFO] [stderr] --> src/state/watermark_state.rs:41:12 [INFO] [stderr] | [INFO] [stderr] 36 | impl TemplateManager { [INFO] [stderr] | -------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 41 | pub fn list_templates(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `template_manager` and `current_template` are never read [INFO] [stderr] --> src/state/watermark_state.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 53 | pub struct WatermarkState { [INFO] [stderr] | -------------- fields in this struct [INFO] [stderr] 54 | template_manager: Arc>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] 55 | current_template: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `WatermarkState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `clear_watermark`, `get_current_watermark_type`, `get_current_template`, and `list_templates` are never used [INFO] [stderr] --> src/state/watermark_state.rs:221:12 [INFO] [stderr] | [INFO] [stderr] 61 | impl WatermarkState { [INFO] [stderr] | ------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 221 | pub fn clear_watermark(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 228 | pub fn get_current_watermark_type(&self) -> Option<&'static str> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 280 | pub fn get_current_template(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 292 | pub fn list_templates(&self) -> Result, WatermarkError> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `image` is never read [INFO] [stderr] --> src/state/layer_state.rs:8:9 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct Layer { [INFO] [stderr] | ----- field in this struct [INFO] [stderr] 7 | pub name: String, [INFO] [stderr] 8 | pub image: RgbImage, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Layer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `get_active_layer` and `set_active_layer` are never used [INFO] [stderr] --> src/state/layer_state.rs:244:12 [INFO] [stderr] | [INFO] [stderr] 33 | impl LayerState { [INFO] [stderr] | --------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 244 | pub fn get_active_layer(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 248 | pub fn set_active_layer(&mut self, index: usize) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `TemplateExport` is never constructed [INFO] [stderr] --> src/utils/template_utils.rs:15:12 [INFO] [stderr] | [INFO] [stderr] 15 | pub struct TemplateExport { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `export_template` is never used [INFO] [stderr] --> src/utils/template_utils.rs:20:8 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn export_template(template: &WatermarkTemplate, export_dir: &Path) -> Result<(), WatermarkError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `import_template` is never used [INFO] [stderr] --> src/utils/template_utils.rs:49:8 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn import_template>(template_path: P) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `validate_template` is never used [INFO] [stderr] --> src/utils/template_utils.rs:77:8 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn validate_template(template: &WatermarkTemplate) -> Result<(), WatermarkError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ImageData` is never constructed [INFO] [stderr] --> src/utils/image_data.rs:5:12 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct ImageData { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `get_intensity`, `get_image`, `width`, and `height` are never used [INFO] [stderr] --> src/utils/image_data.rs:10:12 [INFO] [stderr] | [INFO] [stderr] 9 | impl ImageData { [INFO] [stderr] | -------------- associated items in this implementation [INFO] [stderr] 10 | pub fn new(image: RgbImage) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 14 | pub fn get_intensity(&self, x: i32, y: i32) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 30 | pub fn get_image(&self) -> &RgbImage { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 34 | pub fn width(&self) -> i32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 38 | pub fn height(&self) -> i32 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `channels` is never read [INFO] [stderr] --> src/scientific/analysis/intensity_profile.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 4 | pub struct IntensityProfile { [INFO] [stderr] | ---------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 7 | pub channels: Vec, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ColocalizationAnalysis` is never constructed [INFO] [stderr] --> src/scientific/analysis/colocalization.rs:7:12 [INFO] [stderr] | [INFO] [stderr] 7 | pub struct ColocalizationAnalysis { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated functions `analyze`, `get_intensity_vectors`, `calculate_pearson`, `calculate_overlap`, `calculate_manders`, and `calculate_icq` are never used [INFO] [stderr] --> src/scientific/analysis/colocalization.rs:15:12 [INFO] [stderr] | [INFO] [stderr] 14 | impl ColocalizationAnalysis { [INFO] [stderr] | --------------------------- associated functions in this implementation [INFO] [stderr] 15 | pub fn analyze(channel1: &Channel, channel2: &Channel) -> Self { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 26 | fn get_intensity_vectors(channel1: &Channel, channel2: &Channel) -> (Vec, Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 42 | fn calculate_pearson(x: &[f32], y: &[f32]) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 61 | fn calculate_overlap(x: &[f32], y: &[f32]) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 76 | fn calculate_manders(x: &[f32], y: &[f32]) -> (f32, f32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 93 | fn calculate_icq(x: &[f32], y: &[f32]) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `create_metrics` is never used [INFO] [stderr] --> src/scientific/analysis/cell_statistics.rs:68:8 [INFO] [stderr] | [INFO] [stderr] 37 | impl CellStatistics { [INFO] [stderr] | ------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 68 | fn create_metrics<'a>(&'a self, measurements: &'a [CellMeasurement]) -> Vec<(&str, &MetricStatistics, Box + ... [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `detect_outliers` and `calculate_shape_factors` are never used [INFO] [stderr] --> src/scientific/analysis/cell_statistics.rs:244:8 [INFO] [stderr] | [INFO] [stderr] 242 | pub trait StatisticalAnalysis { [INFO] [stderr] | ------------------- methods in this trait [INFO] [stderr] 243 | fn analyze(&self) -> CellStatistics; [INFO] [stderr] 244 | fn detect_outliers(&self) -> Vec<(usize, String)>; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 245 | fn calculate_shape_factors(&self) -> Vec; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `export_statistics_report` is never used [INFO] [stderr] --> src/scientific/analysis/cell_statistics.rs:271:8 [INFO] [stderr] | [INFO] [stderr] 271 | pub fn export_statistics_report(stats: &CellStatistics, path: &std::path::Path) -> std::io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `timestamp` is never read [INFO] [stderr] --> src/scientific/analysis/cell_analysis.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 10 | pub struct CellMeasurement { [INFO] [stderr] | --------------- field in this struct [INFO] [stderr] 11 | pub timestamp: chrono::DateTime, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `CellMeasurement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `get_measurements`, `clear_measurements`, and `create_measurement_annotation` are never used [INFO] [stderr] --> src/scientific/analysis/cell_analysis.rs:165:12 [INFO] [stderr] | [INFO] [stderr] 75 | impl CellAnalyzer { [INFO] [stderr] | ----------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 165 | pub fn get_measurements(&self) -> &Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 169 | pub fn clear_measurements(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 173 | pub fn create_measurement_annotation(&self, measurement: &CellMeasurement, roi: &ROIShape) -> Annotation { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `transformation_matrix` is never read [INFO] [stderr] --> src/scientific/calibration/spatial_calibration.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 11 | pub struct SpatialCalibration { [INFO] [stderr] | ------------------ field in this struct [INFO] [stderr] ... [INFO] [stderr] 15 | pub transformation_matrix: Option<[[f32; 3]; 3]>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `SpatialCalibration` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `pixel_to_real` and `real_to_pixel` are never used [INFO] [stderr] --> src/scientific/calibration/spatial_calibration.rs:63:12 [INFO] [stderr] | [INFO] [stderr] 18 | impl SpatialCalibration { [INFO] [stderr] | ----------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 63 | pub fn pixel_to_real(&self, pixel_coord: (i32, i32)) -> (f32, f32) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 74 | pub fn real_to_pixel(&self, real_coord: (f32, f32)) -> (i32, i32) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `pseudo_color` and `opacity` are never read [INFO] [stderr] --> src/scientific/layers/channel.rs:10:9 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct Channel { [INFO] [stderr] | ------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 10 | pub pseudo_color: (u8, u8, u8), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] 11 | pub opacity: f32, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Channel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `Measurement` and `Text` are never constructed [INFO] [stderr] --> src/scientific/layers/annotation.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 5 | pub enum AnnotationType { [INFO] [stderr] | -------------- variants in this enum [INFO] [stderr] ... [INFO] [stderr] 14 | Measurement { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 18 | Text { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `AnnotationType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `image` is never read [INFO] [stderr] --> src/scientific/layers/annotation.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 25 | pub struct Annotation { [INFO] [stderr] | ---------- field in this struct [INFO] [stderr] 26 | pub name: String, [INFO] [stderr] 27 | pub image: RgbImage, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Annotation` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> src/scientific/layers/metadata.rs:49:12 [INFO] [stderr] | [INFO] [stderr] 29 | impl Calibration { [INFO] [stderr] | ---------------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 49 | pub fn new( [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `current_measurement_points`, `frame`, and `state` are never read [INFO] [stderr] --> src/scientific/state/scientific_state.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 18 | pub struct ScientificState { [INFO] [stderr] | --------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 27 | pub current_measurement_points: Vec<(i32, i32)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 33 | frame: Option>>, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 34 | state: Option>>, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/scientific/state/scientific_state.rs:130:12 [INFO] [stderr] | [INFO] [stderr] 45 | impl ScientificState { [INFO] [stderr] | -------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 130 | pub fn get_base_image(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 139 | pub fn set_frame(&mut self, frame: Rc>) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 143 | pub fn set_state(&mut self, state: Rc>) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 147 | pub fn get_frame(&self) -> Option>> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 151 | pub fn get_state(&self) -> Option>> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 155 | pub fn update_current_roi(&mut self, points: Vec<(i32, i32)>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 162 | pub fn clear_current_roi(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 220 | pub fn get_active_roi_type(&self) -> ROIShape { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 231 | pub fn add_point(&mut self, point: (i32, i32)) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 241 | pub fn clear_points(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 247 | pub fn set_show_overlay(&mut self, show: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 277 | pub fn get_annotation_count(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 324 | pub fn blend_channel(&self, composite: &mut Vec, channel: &Channel) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 426 | pub fn set_measurement_tool(&mut self, tool: MeasurementTool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 461 | fn draw_in_progress(&self, composite: &mut Vec, width: i32, height: i32, points: &[(i32, i32)], color: (u8, u8, u8)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 645 | pub fn add_measurement(&mut self, start: (i32, i32), end: (i32, i32)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 665 | pub fn calculate_roi_area(&self, points: &[(i32, i32)]) -> (f64, String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 685 | pub fn toggle_annotation_visibility(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 692 | pub fn get_visible_annotations(&self) -> Vec<&Annotation> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `analyze_roi` and `clear_measurements` are never used [INFO] [stderr] --> src/scientific/tools/interactive/cell_analysis_tool.rs:137:12 [INFO] [stderr] | [INFO] [stderr] 19 | impl CellAnalysisTool { [INFO] [stderr] | --------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 137 | pub fn analyze_roi( [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 162 | pub fn clear_measurements(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `get_cell_statistics` and `get_measurements` are never used [INFO] [stderr] --> src/scientific/tools/interactive/cell_analysis_tool.rs:193:8 [INFO] [stderr] | [INFO] [stderr] 188 | pub trait CellAnalysisState { [INFO] [stderr] | ----------------- methods in this trait [INFO] [stderr] ... [INFO] [stderr] 193 | fn get_cell_statistics(&self) -> Option; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 194 | fn get_measurements(&self) -> Option>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `outline_color` and `line_width` are never read [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 106 | pub struct ROIProperties { [INFO] [stderr] | ------------- fields in this struct [INFO] [stderr] 107 | pub outline_color: (u8, u8, u8), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 108 | pub line_width: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ROIProperties` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `base_image` and `properties` are never read [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 130 | pub struct InteractiveROIState { [INFO] [stderr] | ------------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 134 | base_image: Option, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 135 | scaling: Option, [INFO] [stderr] 136 | properties: ROIProperties, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `calculate_rectangle` and `show_roi_mode_dialog` are never used [INFO] [stderr] --> src/scientific/tools/interactive/roi_tool.rs:153:8 [INFO] [stderr] | [INFO] [stderr] 140 | impl InteractiveROIState { [INFO] [stderr] | ------------------------ associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 153 | fn calculate_rectangle(&self, start: (i32, i32), current: (i32, i32)) -> (i32, i32, i32, i32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 160 | pub fn show_roi_mode_dialog(on_select: impl Fn(ROIShape) + 'static) -> ShapeSelector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `MeasurementTool` is never constructed [INFO] [stderr] --> src/scientific/tools/interactive/measurement_tool.rs:16:12 [INFO] [stderr] | [INFO] [stderr] 16 | pub struct MeasurementTool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `MeasurementTool` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `create_measurement`, `calculate_distance`, `create_scale_bar`, and `handle_measurement` are never used [INFO] [stderr] --> src/scientific/tools/interactive/measurement_tool.rs:23:12 [INFO] [stderr] | [INFO] [stderr] 22 | impl MeasurementTool { [INFO] [stderr] | -------------------- associated items in this implementation [INFO] [stderr] 23 | pub fn new(calibration: SpatialCalibration, line_color: (u8, u8, u8), line_width: i32) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 31 | pub fn create_measurement(&self, points: Vec<(i32, i32)>, name: String, _image: RgbImage) -> Annotation { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 46 | pub fn calculate_distance(&self, points: &[(i32, i32)]) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 63 | pub fn create_scale_bar(&self, length: f32, position: (i32, i32), image: RgbImage) -> Annotation { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | pub fn handle_measurement(&self, state_ref: &mut ImageState, points: &[(i32, i32)]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `start_interactive_measurement` is never used [INFO] [stderr] --> src/scientific/tools/interactive/measurement_tool.rs:95:8 [INFO] [stderr] | [INFO] [stderr] 95 | pub fn start_interactive_measurement(frame: &Rc>, state: &Rc>, tool: MeasurementTool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `IntensityStatistics` is never constructed [INFO] [stderr] --> src/scientific/tools/interactive/roi/measurements.rs:9:8 [INFO] [stderr] | [INFO] [stderr] 9 | struct IntensityStatistics { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `MeasurementCalculator` is never constructed [INFO] [stderr] --> src/scientific/tools/interactive/roi/measurements.rs:17:12 [INFO] [stderr] | [INFO] [stderr] 17 | pub struct MeasurementCalculator { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/scientific/tools/interactive/roi/measurements.rs:22:12 [INFO] [stderr] | [INFO] [stderr] 21 | impl MeasurementCalculator { [INFO] [stderr] | -------------------------- associated items in this implementation [INFO] [stderr] 22 | pub fn new(calibration: Option) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 26 | fn generate_ellipse_points(&self, width: i32, height: i32) -> Vec<(i32, i32)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 49 | fn calculate_ellipse_measurements(&self, width: i32, height: i32, image_data: &ImageData) -> ROIMeasurements { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 78 | pub fn calculate_measurements( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 95 | fn calculate_polygon_measurements( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 133 | fn calculate_polygon_area(&self, points: &[(i32, i32)]) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 148 | fn calculate_polygon_perimeter(&self, points: &[(i32, i32)]) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 164 | fn calculate_centroid(&self, points: &[(i32, i32)]) -> (f64, f64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 181 | fn calculate_solidity(&self, points: &[(i32, i32)], area: f64) -> (f64, f64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 189 | fn calculate_shape_factors(&self, points: &[(i32, i32)]) -> (f64, f64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 212 | fn calculate_rectangle_measurements(&self, width: i32, height: i32, image_data: &ImageData) -> ROIMeasurements { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 245 | fn calculate_line_measurements(&self, points: &[(i32, i32)], image_data: &ImageData) -> ROIMeasurements { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 276 | fn calculate_intensity_statistics( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 331 | fn point_in_polygon(&self, point: (i32, i32), vertices: &[(i32, i32)]) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 352 | fn calibrate_area(&self, area: f64) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 360 | fn calibrate_length(&self, length: f64) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 368 | fn get_units(&self) -> String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple fields are never read [INFO] [stderr] --> src/scientific/tools/interactive/roi/properties.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 8 | pub struct ROIProperties { [INFO] [stderr] | ------------- fields in this struct [INFO] [stderr] 9 | pub label: String, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 10 | pub fill_color: Option<(u8, u8, u8)>, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 11 | pub outline_color: (u8, u8, u8), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 12 | pub line_width: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 13 | pub line_style: LineStyle, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 14 | pub notes: Option, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 15 | pub is_visible: bool, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 16 | pub is_selected: bool, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 17 | pub is_locked: bool, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ROIProperties` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `set_visibility`, `set_selection`, `toggle_lock`, `update_style`, and `update_colors` are never used [INFO] [stderr] --> src/scientific/tools/interactive/roi/properties.rs:37:12 [INFO] [stderr] | [INFO] [stderr] 36 | impl ROIProperties { [INFO] [stderr] | ------------------ associated items in this implementation [INFO] [stderr] 37 | pub fn new(color: (u8, u8, u8), line_width: i32) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 45 | pub fn set_visibility(&mut self, visible: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 49 | pub fn set_selection(&mut self, selected: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 53 | pub fn toggle_lock(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 57 | pub fn update_style(&mut self, line_style: LineStyle, line_width: i32) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 64 | pub fn update_colors(&mut self, outline: (u8, u8, u8), fill: Option<(u8, u8, u8)>) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ROIState` is never constructed [INFO] [stderr] --> src/scientific/tools/interactive/roi/properties.rs:73:12 [INFO] [stderr] | [INFO] [stderr] 73 | pub struct ROIState { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ROIState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/scientific/tools/interactive/roi/properties.rs:84:12 [INFO] [stderr] | [INFO] [stderr] 83 | impl ROIState { [INFO] [stderr] | ------------- associated items in this implementation [INFO] [stderr] 84 | pub fn new() -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 96 | pub fn set_frame(&mut self, frame: Rc>) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 100 | pub fn get_frame(&self) -> Option>> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 104 | pub fn get_active_tool_mut(&self) -> Option>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 108 | pub fn set_active_tool(&mut self, tool: ROITool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 112 | pub fn start_drawing(&mut self, shape_type: ROIShape) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 120 | pub fn add_point(&mut self, point: (i32, i32)) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 127 | pub fn finish_drawing(&mut self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 137 | fn update_shape(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 166 | pub fn clear(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 174 | pub fn is_active(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 178 | pub fn lock(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 182 | pub fn unlock(&mut self) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 186 | pub fn set_properties(&mut self, properties: ROIProperties) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 192 | pub fn get_measurements(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 220 | pub fn set_notes(&mut self, notes: Option) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 226 | pub fn toggle_measurements(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 230 | pub fn get_bounding_box(&self) -> Option<(i32, i32, i32, i32)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `add_scale_bar` is never used [INFO] [stderr] --> src/scientific/ui/measurement_dialog.rs:15:4 [INFO] [stderr] | [INFO] [stderr] 15 | fn add_scale_bar(state: &mut ScientificState, length: f32, unit: String) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `show_measurement_dialog` is never used [INFO] [stderr] --> src/scientific/ui/measurement_dialog.rs:31:8 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn show_measurement_dialog(state: &Rc>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `show_roi_dialog` is never used [INFO] [stderr] --> src/scientific/ui/roi_dialog.rs:15:8 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn show_roi_dialog(frame: &Rc>, state: &Rc>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `show_batch_analysis_dialog` is never used [INFO] [stderr] --> src/scientific/ui/cell_analysis/dialog.rs:112:8 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn show_batch_analysis_dialog( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `set_col_widths` is never used [INFO] [stderr] --> src/scientific/ui/cell_analysis/table.rs:88:8 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn set_col_widths(table: &mut Table, data: &[Vec]) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `customize_table` is never used [INFO] [stderr] --> src/scientific/ui/cell_analysis/table.rs:108:8 [INFO] [stderr] | [INFO] [stderr] 108 | pub fn customize_table(table: &mut Table) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `statistics_table` and `auto_update` are never read [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 36 | pub struct BatchDialog { [INFO] [stderr] | ----------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 39 | statistics_table: TableRow, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 45 | auto_update: bool, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `BatchDialog` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `add_measurement`, `hide`, and `is_visible` are never used [INFO] [stderr] --> src/scientific/ui/roi/batch_dialog.rs:312:12 [INFO] [stderr] | [INFO] [stderr] 52 | impl BatchDialog { [INFO] [stderr] | ---------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 312 | pub fn add_measurement(&mut self, measurement: ROIMeasurements) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 341 | pub fn hide(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 345 | pub fn is_visible(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `PADDING` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:10:11 [INFO] [stderr] | [INFO] [stderr] 10 | pub const PADDING: i32 = 5; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `BUTTON_HEIGHT` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:11:11 [INFO] [stderr] | [INFO] [stderr] 11 | pub const BUTTON_HEIGHT: i32 = 25; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `INPUT_HEIGHT` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:12:11 [INFO] [stderr] | [INFO] [stderr] 12 | pub const INPUT_HEIGHT: i32 = 25; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `HEADER_HEIGHT` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:14:11 [INFO] [stderr] | [INFO] [stderr] 14 | pub const HEADER_HEIGHT: i32 = 30; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `PRIMARY_COLOR` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:17:11 [INFO] [stderr] | [INFO] [stderr] 17 | pub const PRIMARY_COLOR: (u8, u8, u8) = (0, 121, 194); // Blue [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SECONDARY_COLOR` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:18:11 [INFO] [stderr] | [INFO] [stderr] 18 | pub const SECONDARY_COLOR: (u8, u8, u8) = (88, 88, 88); // Gray [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SUCCESS_COLOR` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:19:11 [INFO] [stderr] | [INFO] [stderr] 19 | pub const SUCCESS_COLOR: (u8, u8, u8) = (40, 167, 69); // Green [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `WARNING_COLOR` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:20:11 [INFO] [stderr] | [INFO] [stderr] 20 | pub const WARNING_COLOR: (u8, u8, u8) = (255, 193, 7); // Yellow [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `ERROR_COLOR` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:21:11 [INFO] [stderr] | [INFO] [stderr] 21 | pub const ERROR_COLOR: (u8, u8, u8) = (220, 53, 69); // Red [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TITLE_FONT_SIZE` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/mod.rs:26:11 [INFO] [stderr] | [INFO] [stderr] 26 | pub const TITLE_FONT_SIZE: i32 = 16; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `set_color` is never used [INFO] [stderr] --> src/scientific/ui/roi/components/color_picker.rs:183:12 [INFO] [stderr] | [INFO] [stderr] 21 | impl ColorPicker { [INFO] [stderr] | ---------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 183 | pub fn set_color(&mut self, color: (u8, u8, u8)) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `LineStyleSelector` is never constructed [INFO] [stderr] --> src/scientific/ui/roi/components/line_style_selector.rs:13:12 [INFO] [stderr] | [INFO] [stderr] 13 | pub struct LineStyleSelector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `setup_callbacks`, `get_style`, `get_width`, `set_style`, and `set_width` are never used [INFO] [stderr] --> src/scientific/ui/roi/components/line_style_selector.rs:22:12 [INFO] [stderr] | [INFO] [stderr] 21 | impl LineStyleSelector { [INFO] [stderr] | ---------------------- associated items in this implementation [INFO] [stderr] 22 | pub fn new( [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 84 | fn setup_callbacks(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 112 | pub fn get_style(&self) -> LineStyle { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 116 | pub fn get_width(&self) -> i32 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 120 | pub fn set_style(&mut self, style: LineStyle) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 133 | pub fn set_width(&mut self, width: i32) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `selected_row` is never read [INFO] [stderr] --> src/scientific/ui/roi/components/measurement_table.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 28 | pub struct MeasurementTable { [INFO] [stderr] | ---------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 33 | selected_row: Option, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `MeasurementTable` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `get_selected_measurement`, `set_row_callback`, `clear`, `get_row_count`, `get_all_measurements`, and `export_csv` are never used [INFO] [stderr] --> src/scientific/ui/roi/components/measurement_table.rs:193:12 [INFO] [stderr] | [INFO] [stderr] 36 | impl MeasurementTable { [INFO] [stderr] | --------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 193 | pub fn get_selected_measurement(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 203 | pub fn set_row_callback(&mut self, callback: F) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 212 | pub fn clear(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 219 | pub fn get_row_count(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 223 | pub fn get_all_measurements(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 227 | pub fn export_csv(&self, path: &std::path::Path) -> std::io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `JSON`, `Excel`, and `ImageROI` are never constructed [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub enum ExportFormat { [INFO] [stderr] | ------------ variants in this enum [INFO] [stderr] 18 | CSV, [INFO] [stderr] 19 | JSON, [INFO] [stderr] | ^^^^ [INFO] [stderr] 20 | Excel, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 21 | ImageROI, // Exports ROI overlay on image [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ExportFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple fields are never read [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 25 | pub struct ExportOptions { [INFO] [stderr] | ------------- fields in this struct [INFO] [stderr] 26 | pub format: ExportFormat, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 27 | pub include_measurements: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 28 | pub include_statistics: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 29 | pub include_images: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 30 | pub include_metadata: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] 31 | pub batch_export: bool, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] 32 | pub export_path: PathBuf, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ExportOptions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/scientific/ui/roi/export_dialog.rs:70:12 [INFO] [stderr] | [INFO] [stderr] 69 | impl ExportDialog { [INFO] [stderr] | ----------------- associated items in this implementation [INFO] [stderr] 70 | pub fn new(parent: Rc>) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 168 | fn setup_callbacks(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 214 | fn update_options(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 238 | fn validate_export(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 246 | fn perform_export(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 255 | fn export_csv(&self) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 259 | fn export_json(&self) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 263 | fn export_excel(&self) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 267 | fn export_image_roi(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 271 | pub fn show(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 275 | pub fn hide(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 279 | pub fn is_visible(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `MeasurementDialog` is never constructed [INFO] [stderr] --> src/scientific/ui/roi/measurement_dialog.rs:16:12 [INFO] [stderr] | [INFO] [stderr] 16 | pub struct MeasurementDialog { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `setup_callbacks`, `export_measurements`, `show`, `hide`, and `is_visible` are never used [INFO] [stderr] --> src/scientific/ui/roi/measurement_dialog.rs:25:12 [INFO] [stderr] | [INFO] [stderr] 24 | impl MeasurementDialog { [INFO] [stderr] | ---------------------- associated items in this implementation [INFO] [stderr] 25 | pub fn new( [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 85 | fn setup_callbacks(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 103 | fn export_measurements(measurements: &ROIMeasurements, path: &std::path::Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 118 | pub fn show(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 122 | pub fn hide(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 126 | pub fn is_visible(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `PropertiesDialog` is never constructed [INFO] [stderr] --> src/scientific/ui/roi/properties_dialog.rs:34:12 [INFO] [stderr] | [INFO] [stderr] 34 | pub struct PropertiesDialog { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `setup_callbacks`, `show`, `hide`, and `is_visible` are never used [INFO] [stderr] --> src/scientific/ui/roi/properties_dialog.rs:49:12 [INFO] [stderr] | [INFO] [stderr] 48 | impl PropertiesDialog { [INFO] [stderr] | --------------------- associated items in this implementation [INFO] [stderr] 49 | pub fn new( [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 130 | fn setup_callbacks(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 163 | pub fn show(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 168 | pub fn hide(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 172 | pub fn is_visible(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `Dash` and `Dot` are never constructed [INFO] [stderr] --> src/scientific/types.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 9 | pub enum LineStyle { [INFO] [stderr] | --------- variants in this enum [INFO] [stderr] 10 | Solid, [INFO] [stderr] 11 | Dash, [INFO] [stderr] | ^^^^ [INFO] [stderr] 12 | Dot, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `LineStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `integrated_density`, `std_dev`, `aspect_ratio`, `roundness`, `solidity`, and `is_calibrated` are never read [INFO] [stderr] --> src/scientific/types.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 68 | pub struct ROIMeasurements { [INFO] [stderr] | --------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 76 | pub integrated_density: f64, // Added to match usage [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 77 | pub std_dev: f64, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 78 | pub aspect_ratio: f64, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] 79 | pub roundness: f64, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 80 | pub solidity: f64, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 81 | pub shape_type: ROIShape, // Added to match usage [INFO] [stderr] 82 | pub is_calibrated: bool, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ROIMeasurements` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `active`, `unit`, `color`, and `line_width` are never read [INFO] [stderr] --> src/scientific/types.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 86 | pub struct MeasurementTool { [INFO] [stderr] | --------------- fields in this struct [INFO] [stderr] 87 | pub active: bool, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 88 | pub unit: String, [INFO] [stderr] | ^^^^ [INFO] [stderr] 89 | pub color: (u8, u8, u8), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 90 | pub line_width: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> src/scientific/types.rs:94:12 [INFO] [stderr] | [INFO] [stderr] 93 | impl MeasurementTool { [INFO] [stderr] | -------------------- associated function in this implementation [INFO] [stderr] 94 | pub fn new(unit: String) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: associated functions `draw_text_with_background`, `draw_line_with_endpoints`, `draw_measurement`, `draw_guide_text`, and `calculate_position` are never used [INFO] [stderr] --> src/scientific/rendering/frame_renderer.rs:79:12 [INFO] [stderr] | [INFO] [stderr] 15 | impl FrameRenderer { [INFO] [stderr] | ------------------ associated functions in this implementation [INFO] [stderr] ... [INFO] [stderr] 79 | pub fn draw_text_with_background( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 114 | pub fn draw_line_with_endpoints( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 132 | pub fn draw_measurement( [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 160 | pub fn draw_guide_text(text: &str, x: i32, y: i32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 173 | pub fn calculate_position( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `youtube_image-viewer` (bin "youtube_image-viewer" test) generated 232 warnings (run `cargo fix --bin "youtube_image-viewer" --tests` to apply 86 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.40s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/youtube_image_viewer-c6103162db3a5c3c) [INFO] [stdout] [INFO] [stdout] running 12 tests [INFO] [stdout] test menu::edit::watermark::fonts::tests::test_default_font_available ... ok [INFO] [stdout] test menu::edit::watermark::fonts::tests::test_font_manager_creation ... ok [INFO] [stdout] test menu::edit::watermark::image_watermark::tests::test_create_image_watermark ... ok [INFO] [stdout] test menu::edit::watermark::position::tests::test_calculate_position_bottom_right ... ok [INFO] [stdout] test menu::edit::watermark::fonts::tests::test_list_fonts ... ok [INFO] [stdout] test menu::edit::watermark::position::tests::test_calculate_position_top_left ... ok [INFO] [stdout] test menu::edit::watermark::fonts::tests::test_add_font ... ok [INFO] [stdout] test menu::edit::watermark::position::tests::test_calculate_position_center ... ok [INFO] [stdout] test menu::edit::watermark::templates::tests::test_template_manager_creation ... ok [INFO] [stdout] test menu::edit::watermark::text_watermark::tests::test_text_watermark_creation ... ok [INFO] [stdout] test menu::edit::watermark::templates::tests::test_list_templates ... ok [INFO] [stdout] test menu::edit::watermark::image_watermark::tests::test_resize_watermark ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "9c1623a8c76361cd8fdb8324de88eea09ca69fd188fee4cdf9d506a5c454886c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9c1623a8c76361cd8fdb8324de88eea09ca69fd188fee4cdf9d506a5c454886c", kill_on_drop: false }` [INFO] [stdout] 9c1623a8c76361cd8fdb8324de88eea09ca69fd188fee4cdf9d506a5c454886c