[INFO] fetching crate rs-paint 1.0.0...
[INFO] checking rs-paint-1.0.0 against master#642c19bfc3a5c1de985bf5d0cc8207ac9d22708a for pr-148577
[INFO] extracting crate rs-paint 1.0.0 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate rs-paint 1.0.0
[INFO] finished tweaking crates.io crate rs-paint 1.0.0
[INFO] tweaked toml for crates.io crate rs-paint 1.0.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate rs-paint 1.0.0 on toolchain 642c19bfc3a5c1de985bf5d0cc8207ac9d22708a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rs-paint 1.0.0 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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded thiserror-impl v1.0.57
[INFO] [stderr]   Downloaded crc32fast v1.4.0
[INFO] [stderr]   Downloaded thiserror v1.0.57
[INFO] [stderr]   Downloaded ravif v0.11.5
[INFO] [stderr]   Downloaded rgb v0.8.37
[INFO] [stderr]   Downloaded error-code v3.2.0
[INFO] [stderr]   Downloaded profiling-procmacros v1.0.15
[INFO] [stderr]   Downloaded bytemuck v1.15.0
[INFO] [stderr]   Downloaded gtk4-macros v0.8.1
[INFO] [stderr]   Downloaded gobject-sys v0.19.0
[INFO] [stderr]   Downloaded built v0.7.1
[INFO] [stderr]   Downloaded objc2-encode v4.0.3
[INFO] [stderr]   Downloaded arboard v3.4.0
[INFO] [stderr]   Downloaded clap v4.5.10
[INFO] [stderr]   Downloaded gdk4 v0.8.1
[INFO] [stderr]   Downloaded gtk4-sys v0.8.1
[INFO] [stderr]   Downloaded png v0.17.13
[INFO] [stderr]   Downloaded clap_builder v4.5.10
[INFO] [stderr]   Downloaded cairo-sys-rs v0.19.2
[INFO] [stderr]   Downloaded gio v0.19.2
[INFO] [stderr]   Downloaded libfuzzer-sys v0.4.7
[INFO] [stderr]   Downloaded exr v1.72.0
[INFO] [stderr]   Downloaded glib v0.19.3
[INFO] [stderr]   Downloaded toml_edit v0.21.1
[INFO] [stderr]   Downloaded toml_edit v0.22.6
[INFO] [stderr]   Downloaded gio-sys v0.19.0
[INFO] [stderr]   Downloaded gtk4 v0.8.1
[INFO] [stderr]   Downloaded glib-macros v0.19.2
[INFO] [stderr]   Downloaded imgref v1.10.1
[INFO] [stderr]   Downloaded system-deps v6.2.0
[INFO] [stderr]   Downloaded gdk4-sys v0.8.1
[INFO] [stderr]   Downloaded glib-sys v0.19.0
[INFO] [stderr]   Downloaded pango v0.19.2
[INFO] [stderr]   Downloaded image-webp v0.1.1
[INFO] [stderr]   Downloaded anyhow v1.0.81
[INFO] [stderr]   Downloaded cfg-expr v0.15.7
[INFO] [stderr]   Downloaded toml v0.8.10
[INFO] [stderr]   Downloaded cairo-rs v0.19.2
[INFO] [stderr]   Downloaded gdk-pixbuf v0.19.2
[INFO] [stderr]   Downloaded half v2.4.0
[INFO] [stderr]   Downloaded bitstream-io v2.2.0
[INFO] [stderr]   Downloaded jobserver v0.1.28
[INFO] [stderr]   Downloaded zune-jpeg v0.4.11
[INFO] [stderr]   Downloaded graphene-rs v0.19.2
[INFO] [stderr]   Downloaded gsk4 v0.8.1
[INFO] [stderr]   Downloaded gdk-pixbuf-sys v0.19.0
[INFO] [stderr]   Downloaded graphene-sys v0.19.0
[INFO] [stderr]   Downloaded gsk4-sys v0.8.1
[INFO] [stderr]   Downloaded pango-sys v0.19.0
[INFO] [stderr]   Downloaded target-lexicon v0.12.14
[INFO] [stderr]   Downloaded profiling v1.0.15
[INFO] [stderr]   Downloaded avif-serialize v0.8.1
[INFO] [stderr]   Downloaded image v0.25.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a7090377ad25dcf4adfcd46345bf019364e5da0df21cd70f0f0a5e60da53a7ff
[INFO] running `Command { std: "docker" "start" "-a" "a7090377ad25dcf4adfcd46345bf019364e5da0df21cd70f0f0a5e60da53a7ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a7090377ad25dcf4adfcd46345bf019364e5da0df21cd70f0f0a5e60da53a7ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a7090377ad25dcf4adfcd46345bf019364e5da0df21cd70f0f0a5e60da53a7ff", kill_on_drop: false }`
[INFO] [stdout] a7090377ad25dcf4adfcd46345bf019364e5da0df21cd70f0f0a5e60da53a7ff
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 249147a5de65fb62c3c1584944a77eb2eeea6c1fc166bc8de7ef1d2401d5f242
[INFO] running `Command { std: "docker" "start" "-a" "249147a5de65fb62c3c1584944a77eb2eeea6c1fc166bc8de7ef1d2401d5f242", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde v1.0.204
[INFO] [stderr]    Compiling hashbrown v0.14.3
[INFO] [stderr]    Compiling target-lexicon v0.12.14
[INFO] [stderr]    Compiling winnow v0.6.5
[INFO] [stderr]    Compiling smallvec v1.13.1
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]    Compiling proc-macro2 v1.0.78
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]     Checking memchr v2.7.1
[INFO] [stderr]    Compiling thiserror v1.0.57
[INFO] [stderr]    Compiling crossbeam-utils v0.8.19
[INFO] [stderr]     Checking futures-core v0.3.30
[INFO] [stderr]    Compiling num-traits v0.2.18
[INFO] [stderr]     Checking futures-task v0.3.30
[INFO] [stderr]    Compiling anyhow v1.0.81
[INFO] [stderr]     Checking futures-channel v0.3.30
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling lock_api v0.4.11
[INFO] [stderr]    Compiling num-bigint v0.4.4
[INFO] [stderr]     Checking either v1.10.0
[INFO] [stderr]    Compiling num-rational v0.4.1
[INFO] [stderr]    Compiling semver v1.0.22
[INFO] [stderr]    Compiling crc32fast v1.4.0
[INFO] [stderr]    Compiling gio v0.19.2
[INFO] [stderr]     Checking miniz_oxide v0.7.2
[INFO] [stderr]    Compiling built v0.7.1
[INFO] [stderr]     Checking aligned-vec v0.5.0
[INFO] [stderr]     Checking futures-io v0.3.30
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking log v0.4.21
[INFO] [stderr]    Compiling indexmap v2.2.5
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking bytemuck v1.15.0
[INFO] [stderr]     Checking flate2 v1.0.28
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling cfg-expr v0.15.7
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking imgref v1.10.1
[INFO] [stderr]     Checking once_cell v1.19.0
[INFO] [stderr]     Checking bitstream-io v2.2.0
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]     Checking crossbeam-deque v0.8.5
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking rayon-core v1.12.1
[INFO] [stderr]    Compiling quote v1.0.35
[INFO] [stderr]     Checking v_frame v0.3.8
[INFO] [stderr]    Compiling rustc_version v0.4.0
[INFO] [stderr]     Checking weezl v0.1.8
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]    Compiling syn v2.0.52
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking rgb v0.8.37
[INFO] [stderr]     Checking flume v0.11.0
[INFO] [stderr]     Checking avif-serialize v0.8.1
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling field-offset v0.3.6
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking fdeflate v0.3.4
[INFO] [stderr]     Checking half v2.4.0
[INFO] [stderr]     Checking jpeg-decoder v0.3.1
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking linux-raw-sys v0.4.14
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking anstream v0.6.14
[INFO] [stderr]     Checking gif v0.13.1
[INFO] [stderr]     Checking png v0.17.13
[INFO] [stderr]     Checking zune-jpeg v0.4.11
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking exr v1.72.0
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking x11rb-protocol v0.13.1
[INFO] [stderr]     Checking regex-syntax v0.8.4
[INFO] [stderr]     Checking clap_lex v0.7.1
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking clap_builder v4.5.10
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking av1-grain v0.2.3
[INFO] [stderr]    Compiling toml_datetime v0.6.5
[INFO] [stderr]    Compiling serde_spanned v0.6.5
[INFO] [stderr]    Compiling toml_edit v0.22.6
[INFO] [stderr]    Compiling toml_edit v0.21.1
[INFO] [stderr]     Checking regex-automata v0.4.7
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]    Compiling proc-macro-crate v3.1.0
[INFO] [stderr]     Checking regex v1.10.5
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]    Compiling gtk4-macros v0.8.1
[INFO] [stderr]    Compiling toml v0.8.10
[INFO] [stderr]     Checking serde_cbor v0.11.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.57
[INFO] [stderr]    Compiling futures-macro v0.3.30
[INFO] [stderr]    Compiling glib-macros v0.19.2
[INFO] [stderr]    Compiling profiling-procmacros v1.0.15
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling clap_derive v4.5.8
[INFO] [stderr]    Compiling serde_derive v1.0.204
[INFO] [stderr]    Compiling system-deps v6.2.0
[INFO] [stderr]     Checking profiling v1.0.15
[INFO] [stderr]    Compiling glib-sys v0.19.0
[INFO] [stderr]    Compiling gobject-sys v0.19.0
[INFO] [stderr]    Compiling gio-sys v0.19.0
[INFO] [stderr]    Compiling pango-sys v0.19.0
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.19.0
[INFO] [stderr]    Compiling cairo-sys-rs v0.19.2
[INFO] [stderr]    Compiling gdk4-sys v0.8.1
[INFO] [stderr]    Compiling graphene-sys v0.19.0
[INFO] [stderr]    Compiling gsk4-sys v0.8.1
[INFO] [stderr]    Compiling gtk4-sys v0.8.1
[INFO] [stderr]     Checking image-webp v0.1.1
[INFO] [stderr]     Checking futures-util v0.3.30
[INFO] [stderr]     Checking clap v4.5.10
[INFO] [stderr]     Checking futures-executor v0.3.30
[INFO] [stderr]     Checking glib v0.19.3
[INFO] [stderr]     Checking ravif v0.11.5
[INFO] [stderr]     Checking image v0.25.1
[INFO] [stderr]     Checking arboard v3.4.0
[INFO] [stderr]     Checking cairo-rs v0.19.2
[INFO] [stderr]     Checking graphene-rs v0.19.2
[INFO] [stderr]     Checking pango v0.19.2
[INFO] [stderr]     Checking gdk-pixbuf v0.19.2
[INFO] [stderr]     Checking gdk4 v0.8.1
[INFO] [stderr]     Checking gsk4 v0.8.1
[INFO] [stderr]     Checking gtk4 v0.8.1
[INFO] [stderr]     Checking rs-paint v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]   --> src/image/undo/tree.rs:11:43
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::collections::{HashMap, VecDeque, HashSet};
[INFO] [stdout]    |                                           ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]   --> src/image/undo/tree.rs:11:43
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::collections::{HashMap, VecDeque, HashSet};
[INFO] [stdout]    |                                           ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FusedLayer`
[INFO] [stdout]  --> src/image/resize.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::{FusedLayer, Image, ImageLike, ImageLikeUnchecked, TrackedLayeredImage, Pixel,};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FusedLayer`
[INFO] [stdout]  --> src/image/resize.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::{FusedLayer, Image, ImageLike, ImageLikeUnchecked, TrackedLayeredImage, Pixel,};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/image/resize.rs:21:62
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn interpolation_fn<I: ImageLikeUnchecked>(&self) -> (fn(&I, f32, f32) -> Pixel) {
[INFO] [stdout]    |                                                              ^                         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 21 -     pub fn interpolation_fn<I: ImageLikeUnchecked>(&self) -> (fn(&I, f32, f32) -> Pixel) {
[INFO] [stdout] 21 +     pub fn interpolation_fn<I: ImageLikeUnchecked>(&self) -> fn(&I, f32, f32) -> Pixel  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/image/resize.rs:21:62
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn interpolation_fn<I: ImageLikeUnchecked>(&self) -> (fn(&I, f32, f32) -> Pixel) {
[INFO] [stdout]    |                                                              ^                         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 21 -     pub fn interpolation_fn<I: ImageLikeUnchecked>(&self) -> (fn(&I, f32, f32) -> Pixel) {
[INFO] [stdout] 21 +     pub fn interpolation_fn<I: ImageLikeUnchecked>(&self) -> fn(&I, f32, f32) -> Pixel  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CursorState` and `FreeTransformState`
[INFO] [stdout]   --> src/ui/canvas.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 | use super::toolbar::mode::{CursorState, FreeTransformState, MouseMode, TransformationSelection};
[INFO] [stdout]    |                            ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CursorState` and `FreeTransformState`
[INFO] [stdout]   --> src/ui/canvas.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 | use super::toolbar::mode::{CursorState, FreeTransformState, MouseMode, TransformationSelection};
[INFO] [stdout]    |                            ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::shape::ShapeState`
[INFO] [stdout]  --> src/ui/toolbar/mode/mode_toolbar.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::shape::ShapeState;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::shape::ShapeState`
[INFO] [stdout]  --> src/ui/toolbar/mode/mode_toolbar.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::shape::ShapeState;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FreeTransformState`
[INFO] [stdout]  --> src/ui/toolbar/mode/mode_toolbar.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::{FreeTransformState, MouseModeVariant};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RadioField`
[INFO] [stdout]  --> src/ui/toolbar/mode/mode_toolbar.rs:9:89
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::ui::form::{CheckboxField, DropdownField, Form, FormBuilderIsh, NaturalField, RadioField};
[INFO] [stdout]   |                                                                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FreeTransformState`
[INFO] [stdout]  --> src/ui/toolbar/mode/mode_toolbar.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::{FreeTransformState, MouseModeVariant};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RadioField`
[INFO] [stdout]  --> src/ui/toolbar/mode/mode_toolbar.rs:9:89
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::ui::form::{CheckboxField, DropdownField, Form, FormBuilderIsh, NaturalField, RadioField};
[INFO] [stdout]   |                                                                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SplineSegment3`
[INFO] [stdout]  --> src/ui/toolbar/mode/pencil.rs:6:41
[INFO] [stdout]   |
[INFO] [stdout] 6 | use spline::{IncrementalSplineSnapshot, SplineSegment3, SplineSegment4, SplineSegment};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SplineSegment3`
[INFO] [stdout]  --> src/ui/toolbar/mode/pencil.rs:6:41
[INFO] [stdout]   |
[INFO] [stdout] 6 | use spline::{IncrementalSplineSnapshot, SplineSegment3, SplineSegment4, SplineSegment};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShapeType`
[INFO] [stdout]  --> src/ui/toolbar/mode/shape.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::shape::{Shape, ShapeType};
[INFO] [stdout]   |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShapeType`
[INFO] [stdout]  --> src/ui/toolbar/mode/shape.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::shape::{Shape, ShapeType};
[INFO] [stdout]   |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::image::DrawableImage`
[INFO] [stdout]  --> src/ui/toolbar/mode/text.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::image::DrawableImage;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::image::DrawableImage`
[INFO] [stdout]  --> src/ui/toolbar/mode/text.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::image::DrawableImage;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `close_dialog`
[INFO] [stdout]  --> src/ui/toolbar/mode/text.rs:3:25
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::ui::dialog::{close_dialog, no_button_dialog};
[INFO] [stdout]   |                         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `close_dialog`
[INFO] [stdout]  --> src/ui/toolbar/mode/text.rs:3:25
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::ui::dialog::{close_dialog, no_button_dialog};
[INFO] [stdout]   |                         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::image::undo::action::ActionName`
[INFO] [stdout]  --> src/ui/toolbar/mode/text.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::image::undo::action::ActionName;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::image::undo::action::ActionName`
[INFO] [stdout]  --> src/ui/toolbar/mode/text.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::image::undo::action::ActionName;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TextView`
[INFO] [stdout]   --> src/ui/toolbar/mode/text.rs:13:42
[INFO] [stdout]    |
[INFO] [stdout] 13 | use gtk::{gdk, pango, cairo, prelude::*, TextView};
[INFO] [stdout]    |                                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TextView`
[INFO] [stdout]   --> src/ui/toolbar/mode/text.rs:13:42
[INFO] [stdout]    |
[INFO] [stdout] 13 | use gtk::{gdk, pango, cairo, prelude::*, TextView};
[INFO] [stdout]    |                                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `last_ident`
[INFO] [stdout]   --> src/ui/dialog/nary.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | macro_rules! last_ident {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Crop`
[INFO] [stdout]   --> src/ui/dialog.rs:11:77
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::image::resize::{Scale, ScaleMethod, Expand, ExpandJustification, Crop};
[INFO] [stdout]    |                                                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `last_ident`
[INFO] [stdout]   --> src/ui/dialog/nary.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 14 | macro_rules! last_ident {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Crop`
[INFO] [stdout]   --> src/ui/dialog.rs:11:77
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::image::resize::{Scale, ScaleMethod, Expand, ExpandJustification, Crop};
[INFO] [stdout]    |                                                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]  --> src/ui/layer_window.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use gtk::{prelude::*, GestureClick, Ordering};
[INFO] [stdout]   |                                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]  --> src/ui/layer_window.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use gtk::{prelude::*, GestureClick, Ordering};
[INFO] [stdout]   |                                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CloseDialog` and `close_dialog`
[INFO] [stdout]   --> src/ui.rs:15:55
[INFO] [stdout]    |
[INFO] [stdout] 15 | ...d_dialog_str, close_dialog, expand_dialog, no_button_dialog, ok_dialog_str_, scale_dialog, truncate_dialog, CloseDialog};
[INFO] [stdout]    |                  ^^^^^^^^^^^^                                                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CloseDialog` and `close_dialog`
[INFO] [stdout]   --> src/ui.rs:15:55
[INFO] [stdout]    |
[INFO] [stdout] 15 | ...d_dialog_str, close_dialog, expand_dialog, no_button_dialog, ok_dialog_str_, scale_dialog, truncate_dialog, CloseDialog};
[INFO] [stdout]    |                  ^^^^^^^^^^^^                                                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/shape.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `geometry::matrix_width_height` and `image::DrawableImage`
[INFO] [stdout]  --> src/shape.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{geometry::matrix_width_height, image::DrawableImage, transformable::Transformable};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/shape.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `geometry::matrix_width_height` and `image::DrawableImage`
[INFO] [stdout]  --> src/shape.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{geometry::matrix_width_height, image::DrawableImage, transformable::Transformable};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/image/brush.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TrackedLayeredImage`
[INFO] [stdout]  --> src/image/resize.rs:2:63
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::{FusedLayer, Image, ImageLike, ImageLikeUnchecked, TrackedLayeredImage, Pixel,};
[INFO] [stdout]   |                                                               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]   --> src/ui/dialog.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use gtk::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `layer_to_clone_idx`
[INFO] [stdout]    --> src/image/undo.rs:251:35
[INFO] [stdout]     |
[INFO] [stdout] 251 |             ImageDiff::CloneLayer(layer_to_clone_idx, clone_idx) => {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_layer_to_clone_idx`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_sz`
[INFO] [stdout]    --> src/image/resize.rs:193:13
[INFO] [stdout]     |
[INFO] [stdout] 193 |         let new_sz = new_w * new_h;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_sz`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `image`
[INFO] [stdout]    --> src/image/resize.rs:315:30
[INFO] [stdout]     |
[INFO] [stdout] 315 |     fn new_layer_data(&self, image: &mut Image) -> Self::LayerData {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_image`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `image`
[INFO] [stdout]    --> src/image/resize.rs:407:30
[INFO] [stdout]     |
[INFO] [stdout] 407 |     fn new_layer_data(&self, image: &mut Image) -> Self::LayerData {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_image`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/image/brush.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TrackedLayeredImage`
[INFO] [stdout]  --> src/image/resize.rs:2:63
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::{FusedLayer, Image, ImageLike, ImageLikeUnchecked, TrackedLayeredImage, Pixel,};
[INFO] [stdout]   |                                                               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]   --> src/ui/dialog.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use gtk::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `layer_to_clone_idx`
[INFO] [stdout]    --> src/image/undo.rs:251:35
[INFO] [stdout]     |
[INFO] [stdout] 251 |             ImageDiff::CloneLayer(layer_to_clone_idx, clone_idx) => {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_layer_to_clone_idx`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_sz`
[INFO] [stdout]    --> src/image/resize.rs:193:13
[INFO] [stdout]     |
[INFO] [stdout] 193 |         let new_sz = new_w * new_h;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_sz`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `image`
[INFO] [stdout]    --> src/image/resize.rs:315:30
[INFO] [stdout]     |
[INFO] [stdout] 315 |     fn new_layer_data(&self, image: &mut Image) -> Self::LayerData {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_image`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `image`
[INFO] [stdout]    --> src/image/resize.rs:407:30
[INFO] [stdout]     |
[INFO] [stdout] 407 |     fn new_layer_data(&self, image: &mut Image) -> Self::LayerData {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_image`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selection`
[INFO] [stdout]    --> src/ui/canvas.rs:999:13
[INFO] [stdout]     |
[INFO] [stdout] 999 |         let selection = std::mem::replace(&mut self.selection, Selection::NoSelection);
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named variant `NoSelection`
[INFO] [stdout]     |
[INFO] [stdout] 999 -         let selection = std::mem::replace(&mut self.selection, Selection::NoSelection);
[INFO] [stdout] 999 +         let ui::selection::Selection::NoSelection = std::mem::replace(&mut self.selection, Selection::NoSelection);
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 999 |         let _selection = std::mem::replace(&mut self.selection, Selection::NoSelection);
[INFO] [stdout]     |             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lock_aspect_ratio`
[INFO] [stdout]   --> src/ui/toolbar/mode/rectangle_select.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         lock_aspect_ratio: bool, /* TODO actually do this? */
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_lock_aspect_ratio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `originial_rect`
[INFO] [stdout]   --> src/ui/toolbar/mode/rectangle_select.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |         originial_rect@(ox, oy, ow, oh): (usize, usize, usize, usize),
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_originial_rect`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor_pos`
[INFO] [stdout]   --> src/ui/toolbar/mode/rectangle_select.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         cursor_pos@(cx, cy): (usize, usize),
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cursor_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `extra_rotation`
[INFO] [stdout]   --> src/ui/toolbar/mode/free_transform.rs:63:22
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn just_rotation(extra_rotation: f64) -> Self {
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_extra_rotation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/ui/toolbar/mode/free_transform.rs:462:21
[INFO] [stdout]     |
[INFO] [stdout] 462 |                 let res = if should_clamp {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel_width`
[INFO] [stdout]    --> src/ui/toolbar/mode/text.rs:169:50
[INFO] [stdout]     |
[INFO] [stdout] 169 |     fn draw(&mut self, cr: &gtk::cairo::Context, pixel_width: f64, pixel_height: f64) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel_height`
[INFO] [stdout]    --> src/ui/toolbar/mode/text.rs:169:68
[INFO] [stdout]     |
[INFO] [stdout] 169 |     fn draw(&mut self, cr: &gtk::cairo::Context, pixel_width: f64, pixel_height: f64) {
[INFO] [stdout]     |                                                                    ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/ui/toolbar/mode/text.rs:248:29
[INFO] [stdout]     |
[INFO] [stdout] 248 |             Self::Inserting(x, y, get_text_specs) => {
[INFO] [stdout]     |                             ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/ui/toolbar/mode/text.rs:248:32
[INFO] [stdout]     |
[INFO] [stdout] 248 |             Self::Inserting(x, y, get_text_specs) => {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `canvas`
[INFO] [stdout]   --> src/ui/toolbar/mode.rs:79:28
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn handle_close(&self, canvas: &mut Canvas, toolbar: &Toolbar, new_mode: &MouseMode) {}
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `toolbar`
[INFO] [stdout]   --> src/ui/toolbar/mode.rs:79:49
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn handle_close(&self, canvas: &mut Canvas, toolbar: &Toolbar, new_mode: &MouseMode) {}
[INFO] [stdout]    |                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_toolbar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_mode`
[INFO] [stdout]   --> src/ui/toolbar/mode.rs:79:68
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn handle_close(&self, canvas: &mut Canvas, toolbar: &Toolbar, new_mode: &MouseMode) {}
[INFO] [stdout]    |                                                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selection`
[INFO] [stdout]    --> src/ui/canvas.rs:999:13
[INFO] [stdout]     |
[INFO] [stdout] 999 |         let selection = std::mem::replace(&mut self.selection, Selection::NoSelection);
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named variant `NoSelection`
[INFO] [stdout]     |
[INFO] [stdout] 999 -         let selection = std::mem::replace(&mut self.selection, Selection::NoSelection);
[INFO] [stdout] 999 +         let ui::selection::Selection::NoSelection = std::mem::replace(&mut self.selection, Selection::NoSelection);
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 999 |         let _selection = std::mem::replace(&mut self.selection, Selection::NoSelection);
[INFO] [stdout]     |             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lock_aspect_ratio`
[INFO] [stdout]   --> src/ui/toolbar/mode/rectangle_select.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         lock_aspect_ratio: bool, /* TODO actually do this? */
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_lock_aspect_ratio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `originial_rect`
[INFO] [stdout]   --> src/ui/toolbar/mode/rectangle_select.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |         originial_rect@(ox, oy, ow, oh): (usize, usize, usize, usize),
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_originial_rect`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor_pos`
[INFO] [stdout]   --> src/ui/toolbar/mode/rectangle_select.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         cursor_pos@(cx, cy): (usize, usize),
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cursor_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `extra_rotation`
[INFO] [stdout]   --> src/ui/toolbar/mode/free_transform.rs:63:22
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn just_rotation(extra_rotation: f64) -> Self {
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_extra_rotation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/ui/toolbar/mode/free_transform.rs:462:21
[INFO] [stdout]     |
[INFO] [stdout] 462 |                 let res = if should_clamp {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> src/ui/form/gadget.rs:243:62
[INFO] [stdout]     |
[INFO] [stdout] 243 |             b.connect_clicked(clone!(@strong self_p => move |b| {
[INFO] [stdout]     |                                                              ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel_width`
[INFO] [stdout]    --> src/ui/toolbar/mode/text.rs:169:50
[INFO] [stdout]     |
[INFO] [stdout] 169 |     fn draw(&mut self, cr: &gtk::cairo::Context, pixel_width: f64, pixel_height: f64) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel_height`
[INFO] [stdout]    --> src/ui/toolbar/mode/text.rs:169:68
[INFO] [stdout]     |
[INFO] [stdout] 169 |     fn draw(&mut self, cr: &gtk::cairo::Context, pixel_width: f64, pixel_height: f64) {
[INFO] [stdout]     |                                                                    ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/ui/toolbar/mode/text.rs:248:29
[INFO] [stdout]     |
[INFO] [stdout] 248 |             Self::Inserting(x, y, get_text_specs) => {
[INFO] [stdout]     |                             ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/ui/toolbar/mode/text.rs:248:32
[INFO] [stdout]     |
[INFO] [stdout] 248 |             Self::Inserting(x, y, get_text_specs) => {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `canvas`
[INFO] [stdout]   --> src/ui/toolbar/mode.rs:79:28
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn handle_close(&self, canvas: &mut Canvas, toolbar: &Toolbar, new_mode: &MouseMode) {}
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `toolbar`
[INFO] [stdout]   --> src/ui/toolbar/mode.rs:79:49
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn handle_close(&self, canvas: &mut Canvas, toolbar: &Toolbar, new_mode: &MouseMode) {}
[INFO] [stdout]    |                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_toolbar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_mode`
[INFO] [stdout]   --> src/ui/toolbar/mode.rs:79:68
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn handle_close(&self, canvas: &mut Canvas, toolbar: &Toolbar, new_mode: &MouseMode) {}
[INFO] [stdout]    |                                                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/form.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let mut buttons: Rc<RefCell<Vec<gtk::ToggleButton>>> = Rc::new(RefCell::new(vec![]));
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]    --> src/ui.rs:253:81
[INFO] [stdout]     |
[INFO] [stdout] 253 |         ui_p.borrow().window.connect_close_request(clone!(@strong ui_p => move |app| {
[INFO] [stdout]     |                                                                                 ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `canvas_p`
[INFO] [stdout]    --> src/ui.rs:552:21
[INFO] [stdout]     |
[INFO] [stdout] 552 |         if let Some(canvas_p) = ui_p.borrow().active_canvas_p() {
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x01`
[INFO] [stdout]    --> src/shape.rs:116:14
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let (x01, y01) = calc_matrix.transform_point(0.1, 0.1);
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_x01`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y01`
[INFO] [stdout]    --> src/shape.rs:116:19
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let (x01, y01) = calc_matrix.transform_point(0.1, 0.1);
[INFO] [stdout]     |                   ^^^ help: if this is intentional, prefix it with an underscore: `_y01`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x02`
[INFO] [stdout]    --> src/shape.rs:117:14
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let (x02, y02) = calc_matrix.transform_point(0.2, 0.2);
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_x02`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x066`
[INFO] [stdout]    --> src/shape.rs:122:14
[INFO] [stdout]     |
[INFO] [stdout] 122 |         let (x066, y066) = calc_matrix.transform_point(0.666, 0.666);
[INFO] [stdout]     |              ^^^^ help: if this is intentional, prefix it with an underscore: `_x066`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y0125`
[INFO] [stdout]    --> src/shape.rs:194:29
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let (x0125, y0125) = calc_matrix.transform_point(0.125, 0.125);
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_y0125`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `image::Layer` is more private than the item `image::FusedLayer::from_layer`
[INFO] [stdout]    --> src/image.rs:488:5
[INFO] [stdout]     |
[INFO] [stdout] 488 |     pub fn from_layer(layer: Layer) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `image::FusedLayer::from_layer` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `image::Layer` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/image.rs:447:1
[INFO] [stdout]     |
[INFO] [stdout] 447 | struct Layer {
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `image::Layer` is more private than the item `image::FusedLayer::unfused`
[INFO] [stdout]    --> src/image.rs:498:5
[INFO] [stdout]     |
[INFO] [stdout] 498 |     pub fn unfused(&self) -> Layer {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `image::FusedLayer::unfused` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `image::Layer` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/image.rs:447:1
[INFO] [stdout]     |
[INFO] [stdout] 447 | struct Layer {
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ImageLikeUncheckedMut` is more private than the item `SingleLayerAction`
[INFO] [stdout]    --> src/image/undo/action.rs:66:1
[INFO] [stdout]     |
[INFO] [stdout]  66 | pub trait SingleLayerAction<I>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `SingleLayerAction` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but trait `ImageLikeUncheckedMut` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/image.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | trait ImageLikeUncheckedMut: ImageLikeUnchecked + ImageLikeMut + {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_bounds)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ImageLikeUncheckedMut` is more private than the item `StaticSingleLayerAction`
[INFO] [stdout]    --> src/image/undo/action.rs:74:1
[INFO] [stdout]     |
[INFO] [stdout]  74 | pub trait StaticSingleLayerAction<I>: SingleLayerAction<I>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `StaticSingleLayerAction` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but trait `ImageLikeUncheckedMut` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/image.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | trait ImageLikeUncheckedMut: ImageLikeUnchecked + ImageLikeMut + {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FormGadget` is more private than the item `gadget::<impl form::FormBuilder>::with_gadget`
[INFO] [stdout]   --> src/ui/form/gadget.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn with_gadget(self, new_gadget: &impl FormGadget) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `gadget::<impl form::FormBuilder>::with_gadget` is reachable at visibility `pub(in crate::ui)`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `FormGadget` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/ui/form/gadget.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | trait FormGadget {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FormGadget` is more private than the item `gadget::<impl form::FlowFormBuilder>::with_gadget`
[INFO] [stdout]   --> src/ui/form/gadget.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn with_gadget(self, new_gadget: &impl FormGadget) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `gadget::<impl form::FlowFormBuilder>::with_gadget` is reachable at visibility `pub(in crate::ui)`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `FormGadget` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/ui/form/gadget.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | trait FormGadget {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_pix_at_mut` is never used
[INFO] [stdout]    --> src/image.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub trait ImageLikeMut: ImageLike + {
[INFO] [stdout]     |           ------------ method in this trait
[INFO] [stdout] 180 |     fn try_pix_at_mut(&mut self, r: usize, c: usize) -> Option<&mut Pixel>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pix_at_mut` and `pix_at_mut_flat` are never used
[INFO] [stdout]    --> src/image.rs:189:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | trait ImageLikeUncheckedMut: ImageLikeUnchecked + ImageLikeMut + {
[INFO] [stdout]     |       --------------------- methods in this trait
[INFO] [stdout] 188 |     #[inline]
[INFO] [stdout] 189 |     fn pix_at_mut(&mut self, r: usize, c: usize) -> &mut Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     fn pix_at_mut_flat(&mut self, i:usize) -> &mut Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> src/ui/form/gadget.rs:243:62
[INFO] [stdout]     |
[INFO] [stdout] 243 |             b.connect_clicked(clone!(@strong self_p => move |b| {
[INFO] [stdout]     |                                                              ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_image`, `width`, and `height` are never used
[INFO] [stdout]    --> src/image.rs:472:12
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl FusedLayer {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 472 |     pub fn from_image(image: Image) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     fn width(&self) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 509 |     fn height(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `active_drawable_mut` and `active_layer_mut` are never used
[INFO] [stdout]    --> src/image.rs:619:8
[INFO] [stdout]     |
[INFO] [stdout] 590 | impl FusedLayeredImage {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 619 |     fn active_drawable_mut(&mut self) -> &mut DrawableImage {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 648 |     pub fn active_layer_mut(&mut self) -> &mut FusedLayer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_pix_at_mut` is never used
[INFO] [stdout]    --> src/image.rs:911:8
[INFO] [stdout]     |
[INFO] [stdout] 907 | pub trait TrackedLayeredImage {
[INFO] [stdout]     |           ------------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 911 |     fn try_pix_at_mut(&mut self, r: i32, c: i32) -> Option<&mut Pixel>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SingleLayerManualUndo` is never constructed
[INFO] [stdout]    --> src/image/undo.rs:165:5
[INFO] [stdout]     |
[INFO] [stdout] 163 | enum ImageDiff {
[INFO] [stdout]     |      --------- variant in this enum
[INFO] [stdout] 164 |     Diff(Vec<(usize, Pixel, Pixel)>, LayerIndex), // [(pos, old_pix, new_pix)], layer#
[INFO] [stdout] 165 |     SingleLayerManualUndo(Box<dyn SingleLayerAction<Image>>, LayerIndex),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InsertText` is never constructed
[INFO] [stdout]   --> src/image/undo/action.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub enum ActionName {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     InsertText,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActionName` 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 `name` is never used
[INFO] [stdout]   --> src/image/undo/action.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub trait SingleLayerAction<I>
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn name(&self) -> ActionName;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StaticSingleLayerAction` is never used
[INFO] [stdout]   --> src/image/undo/action.rs:74:11
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub trait StaticSingleLayerAction<I>: SingleLayerAction<I>
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exec_undoable_action` and `push_undo_action` are never used
[INFO] [stdout]    --> src/image/undo/action.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl ImageHistory {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn exec_undoable_action(&mut self, mut action: Box<dyn SingleLayerAction<Image>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     fn push_undo_action(&mut self, action: Box<dyn SingleLayerAction<Image>>, layer_index: LayerIndex) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `outline_path` is never read
[INFO] [stdout]   --> src/image/bitmask.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ImageBitmask {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     outline_path: Option<cairo::Path>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `gen_outline_path` and `outline_path` are never used
[INFO] [stdout]    --> src/image/bitmask.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl ImageBitmask {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn gen_outline_path(&self, cr: &cairo::Context) -> cairo::Path {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn outline_path(&mut self, cr: &cairo::Context)-> &cairo::Path {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exec_auto_diff_action` and `exec_undoable_action` are never used
[INFO] [stdout]    --> src/ui/canvas.rs:718:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl Canvas {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 718 |     pub fn exec_auto_diff_action<A>(&mut self, action: A)
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 727 |     pub fn exec_undoable_action(&mut self, action: Box<dyn SingleLayerAction<Image>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplineSegment3` is never constructed
[INFO] [stdout]  --> src/ui/toolbar/mode/pencil/spline.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SplineSegment3 {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_grouped` is never used
[INFO] [stdout]   --> src/ui/toolbar/mode/pencil/spline.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl SplineSegment3 {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn from_grouped(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `One` is never constructed
[INFO] [stdout]    --> src/ui/toolbar/mode/pencil/spline.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub enum IncrementalSplineSnapshot {
[INFO] [stdout]     |          ------------------------- variant in this enum
[INFO] [stdout] 146 |     NoPoints,
[INFO] [stdout] 147 |     One((i32, i32)),
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `IncrementalSplineSnapshot` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TransferToFreeTransform` is never constructed
[INFO] [stdout]   --> src/ui/toolbar/mode/text.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum TextState {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 24 |     TransferToFreeTransform(f64, f64), // text origin (x, y)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextState` 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 `kind` is never read
[INFO] [stdout]    --> src/ui/toolbar/palette.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | struct PrimarySecondaryButton {
[INFO] [stdout]     |        ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 129 |     kind: PrimaryOrSecondary,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `No` is never constructed
[INFO] [stdout]   --> src/ui/dialog.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum CloseDialog {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 19 |     Yes,
[INFO] [stdout] 20 |     No,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yes_no_dialog` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:24:16
[INFO] [stdout]     |
[INFO] [stdout]  24 |         pub fn [< $name _dialog >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 | nary_dialog!(yes_no, yes, no; false);
[INFO] [stdout]     | ------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yes_no_dialog_str` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:110:16
[INFO] [stdout]     |
[INFO] [stdout] 110 |         pub fn [< $name _dialog_str >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 | nary_dialog!(yes_no, yes, no; false);
[INFO] [stdout]     | ------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_dialog` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:24:16
[INFO] [stdout]     |
[INFO] [stdout]  24 |         pub fn [< $name _dialog >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 | nary_dialog!(close, close; false);
[INFO] [stdout]     | --------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_dialog_str` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:110:16
[INFO] [stdout]     |
[INFO] [stdout] 110 |         pub fn [< $name _dialog_str >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 | nary_dialog!(close, close; false);
[INFO] [stdout]     | --------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ok_cancel_dialog_str` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:110:16
[INFO] [stdout]     |
[INFO] [stdout] 110 |         pub fn [< $name _dialog_str >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 | nary_dialog!(ok_cancel, ok, cancel; false);
[INFO] [stdout]     | ------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ok_dialog_` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn ok_dialog_(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `container` is never read
[INFO] [stdout]   --> src/ui/tab.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Tab {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     container: gtk::Box,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextField` is never constructed
[INFO] [stdout]   --> src/ui/form.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TextField {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]   --> src/ui/form.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl TextField {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 30 |     pub fn new(label: Option<&str>, default_text: &str, phantom_text: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn value(&self) -> String {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RadioField` is never constructed
[INFO] [stdout]    --> src/ui/form.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct RadioField<T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ui/form.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | impl<T> RadioField<T> {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 195 |     pub fn new(label: Option<&str>, variants: Vec<(&str, T)>, default: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn value(&self) -> Option<&T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_value` is never used
[INFO] [stdout]    --> src/ui/form.rs:337:12
[INFO] [stdout]     |
[INFO] [stdout] 306 | impl SliderField {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn set_value(&self, new_value: usize) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FlowForm` is never constructed
[INFO] [stdout]    --> src/ui/form.rs:625:12
[INFO] [stdout]     |
[INFO] [stdout] 625 | pub struct FlowForm {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `builder` and `widget` are never used
[INFO] [stdout]    --> src/ui/form.rs:630:12
[INFO] [stdout]     |
[INFO] [stdout] 629 | impl FlowForm {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 630 |     pub fn builder() -> FlowFormBuilder {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 634 |     pub fn widget(&self) -> &impl IsA<gtk::Widget> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FlowFormBuilder` is never constructed
[INFO] [stdout]    --> src/ui/form.rs:639:12
[INFO] [stdout]     |
[INFO] [stdout] 639 | pub struct FlowFormBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `build`, `title`, and `orientation` are never used
[INFO] [stdout]    --> src/ui/form.rs:660:8
[INFO] [stdout]     |
[INFO] [stdout] 659 | impl FlowFormBuilder {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 660 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 674 |     pub fn build(self) -> FlowForm {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 688 |     pub fn title(mut self, new_title: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 693 |     pub fn orientation(self, orientation: gtk::Orientation) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_gadget` is never used
[INFO] [stdout]   --> src/ui/form/gadget.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl FlowFormBuilder {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 22 |     pub fn with_gadget(self, new_gadget: &impl FormGadget) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `scrolled_window` is never read
[INFO] [stdout]    --> src/ui/layer_window.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct LayerWindow {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] 168 |     tab_wrapper: gtk::Box,
[INFO] [stdout] 169 |     scrolled_window: gtk::ScrolledWindow,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/toolbar.rs:304:36
[INFO] [stdout]     |
[INFO] [stdout] 304 |     pub fn get_boxed_transformable(&self) -> std::cell::RefMut<Option<Box<dyn Transformable>>> {
[INFO] [stdout]     |                                    ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 304 |     pub fn get_boxed_transformable(&self) -> std::cell::RefMut<'_, Option<Box<dyn Transformable>>> {
[INFO] [stdout]     |                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/form.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let mut buttons: Rc<RefCell<Vec<gtk::ToggleButton>>> = Rc::new(RefCell::new(vec![]));
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]    --> src/ui.rs:253:81
[INFO] [stdout]     |
[INFO] [stdout] 253 |         ui_p.borrow().window.connect_close_request(clone!(@strong ui_p => move |app| {
[INFO] [stdout]     |                                                                                 ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `canvas_p`
[INFO] [stdout]    --> src/ui.rs:552:21
[INFO] [stdout]     |
[INFO] [stdout] 552 |         if let Some(canvas_p) = ui_p.borrow().active_canvas_p() {
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x01`
[INFO] [stdout]    --> src/shape.rs:116:14
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let (x01, y01) = calc_matrix.transform_point(0.1, 0.1);
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_x01`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y01`
[INFO] [stdout]    --> src/shape.rs:116:19
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let (x01, y01) = calc_matrix.transform_point(0.1, 0.1);
[INFO] [stdout]     |                   ^^^ help: if this is intentional, prefix it with an underscore: `_y01`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x02`
[INFO] [stdout]    --> src/shape.rs:117:14
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let (x02, y02) = calc_matrix.transform_point(0.2, 0.2);
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_x02`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x066`
[INFO] [stdout]    --> src/shape.rs:122:14
[INFO] [stdout]     |
[INFO] [stdout] 122 |         let (x066, y066) = calc_matrix.transform_point(0.666, 0.666);
[INFO] [stdout]     |              ^^^^ help: if this is intentional, prefix it with an underscore: `_x066`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y0125`
[INFO] [stdout]    --> src/shape.rs:194:29
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let (x0125, y0125) = calc_matrix.transform_point(0.125, 0.125);
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_y0125`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `image::Layer` is more private than the item `image::FusedLayer::from_layer`
[INFO] [stdout]    --> src/image.rs:488:5
[INFO] [stdout]     |
[INFO] [stdout] 488 |     pub fn from_layer(layer: Layer) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `image::FusedLayer::from_layer` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `image::Layer` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/image.rs:447:1
[INFO] [stdout]     |
[INFO] [stdout] 447 | struct Layer {
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `image::Layer` is more private than the item `image::FusedLayer::unfused`
[INFO] [stdout]    --> src/image.rs:498:5
[INFO] [stdout]     |
[INFO] [stdout] 498 |     pub fn unfused(&self) -> Layer {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `image::FusedLayer::unfused` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `image::Layer` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/image.rs:447:1
[INFO] [stdout]     |
[INFO] [stdout] 447 | struct Layer {
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ImageLikeUncheckedMut` is more private than the item `SingleLayerAction`
[INFO] [stdout]    --> src/image/undo/action.rs:66:1
[INFO] [stdout]     |
[INFO] [stdout]  66 | pub trait SingleLayerAction<I>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `SingleLayerAction` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but trait `ImageLikeUncheckedMut` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/image.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | trait ImageLikeUncheckedMut: ImageLikeUnchecked + ImageLikeMut + {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_bounds)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ImageLikeUncheckedMut` is more private than the item `StaticSingleLayerAction`
[INFO] [stdout]    --> src/image/undo/action.rs:74:1
[INFO] [stdout]     |
[INFO] [stdout]  74 | pub trait StaticSingleLayerAction<I>: SingleLayerAction<I>
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `StaticSingleLayerAction` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but trait `ImageLikeUncheckedMut` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/image.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | trait ImageLikeUncheckedMut: ImageLikeUnchecked + ImageLikeMut + {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FormGadget` is more private than the item `gadget::<impl form::FormBuilder>::with_gadget`
[INFO] [stdout]   --> src/ui/form/gadget.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn with_gadget(self, new_gadget: &impl FormGadget) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `gadget::<impl form::FormBuilder>::with_gadget` is reachable at visibility `pub(in crate::ui)`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `FormGadget` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/ui/form/gadget.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | trait FormGadget {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FormGadget` is more private than the item `gadget::<impl form::FlowFormBuilder>::with_gadget`
[INFO] [stdout]   --> src/ui/form/gadget.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn with_gadget(self, new_gadget: &impl FormGadget) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `gadget::<impl form::FlowFormBuilder>::with_gadget` is reachable at visibility `pub(in crate::ui)`
[INFO] [stdout]    |
[INFO] [stdout] note: but trait `FormGadget` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/ui/form/gadget.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | trait FormGadget {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_pix_at_mut` is never used
[INFO] [stdout]    --> src/image.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub trait ImageLikeMut: ImageLike + {
[INFO] [stdout]     |           ------------ method in this trait
[INFO] [stdout] 180 |     fn try_pix_at_mut(&mut self, r: usize, c: usize) -> Option<&mut Pixel>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pix_at_mut` and `pix_at_mut_flat` are never used
[INFO] [stdout]    --> src/image.rs:189:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | trait ImageLikeUncheckedMut: ImageLikeUnchecked + ImageLikeMut + {
[INFO] [stdout]     |       --------------------- methods in this trait
[INFO] [stdout] 188 |     #[inline]
[INFO] [stdout] 189 |     fn pix_at_mut(&mut self, r: usize, c: usize) -> &mut Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     fn pix_at_mut_flat(&mut self, i:usize) -> &mut Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_image`, `width`, and `height` are never used
[INFO] [stdout]    --> src/image.rs:472:12
[INFO] [stdout]     |
[INFO] [stdout] 471 | impl FusedLayer {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 472 |     pub fn from_image(image: Image) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     fn width(&self) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 509 |     fn height(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `active_drawable_mut` and `active_layer_mut` are never used
[INFO] [stdout]    --> src/image.rs:619:8
[INFO] [stdout]     |
[INFO] [stdout] 590 | impl FusedLayeredImage {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 619 |     fn active_drawable_mut(&mut self) -> &mut DrawableImage {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 648 |     pub fn active_layer_mut(&mut self) -> &mut FusedLayer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_pix_at_mut` is never used
[INFO] [stdout]    --> src/image.rs:911:8
[INFO] [stdout]     |
[INFO] [stdout] 907 | pub trait TrackedLayeredImage {
[INFO] [stdout]     |           ------------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 911 |     fn try_pix_at_mut(&mut self, r: i32, c: i32) -> Option<&mut Pixel>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SingleLayerManualUndo` is never constructed
[INFO] [stdout]    --> src/image/undo.rs:165:5
[INFO] [stdout]     |
[INFO] [stdout] 163 | enum ImageDiff {
[INFO] [stdout]     |      --------- variant in this enum
[INFO] [stdout] 164 |     Diff(Vec<(usize, Pixel, Pixel)>, LayerIndex), // [(pos, old_pix, new_pix)], layer#
[INFO] [stdout] 165 |     SingleLayerManualUndo(Box<dyn SingleLayerAction<Image>>, LayerIndex),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InsertText` is never constructed
[INFO] [stdout]   --> src/image/undo/action.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub enum ActionName {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     InsertText,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActionName` 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 `name` is never used
[INFO] [stdout]   --> src/image/undo/action.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub trait SingleLayerAction<I>
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn name(&self) -> ActionName;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StaticSingleLayerAction` is never used
[INFO] [stdout]   --> src/image/undo/action.rs:74:11
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub trait StaticSingleLayerAction<I>: SingleLayerAction<I>
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exec_undoable_action` and `push_undo_action` are never used
[INFO] [stdout]    --> src/image/undo/action.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl ImageHistory {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn exec_undoable_action(&mut self, mut action: Box<dyn SingleLayerAction<Image>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     fn push_undo_action(&mut self, action: Box<dyn SingleLayerAction<Image>>, layer_index: LayerIndex) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `outline_path` is never read
[INFO] [stdout]   --> src/image/bitmask.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ImageBitmask {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     outline_path: Option<cairo::Path>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `gen_outline_path` and `outline_path` are never used
[INFO] [stdout]    --> src/image/bitmask.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl ImageBitmask {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn gen_outline_path(&self, cr: &cairo::Context) -> cairo::Path {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn outline_path(&mut self, cr: &cairo::Context)-> &cairo::Path {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exec_auto_diff_action` and `exec_undoable_action` are never used
[INFO] [stdout]    --> src/ui/canvas.rs:718:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl Canvas {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 718 |     pub fn exec_auto_diff_action<A>(&mut self, action: A)
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 727 |     pub fn exec_undoable_action(&mut self, action: Box<dyn SingleLayerAction<Image>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplineSegment3` is never constructed
[INFO] [stdout]  --> src/ui/toolbar/mode/pencil/spline.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SplineSegment3 {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_grouped` is never used
[INFO] [stdout]   --> src/ui/toolbar/mode/pencil/spline.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl SplineSegment3 {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn from_grouped(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `One` is never constructed
[INFO] [stdout]    --> src/ui/toolbar/mode/pencil/spline.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub enum IncrementalSplineSnapshot {
[INFO] [stdout]     |          ------------------------- variant in this enum
[INFO] [stdout] 146 |     NoPoints,
[INFO] [stdout] 147 |     One((i32, i32)),
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `IncrementalSplineSnapshot` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TransferToFreeTransform` is never constructed
[INFO] [stdout]   --> src/ui/toolbar/mode/text.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum TextState {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 24 |     TransferToFreeTransform(f64, f64), // text origin (x, y)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextState` 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 `kind` is never read
[INFO] [stdout]    --> src/ui/toolbar/palette.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | struct PrimarySecondaryButton {
[INFO] [stdout]     |        ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 129 |     kind: PrimaryOrSecondary,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `No` is never constructed
[INFO] [stdout]   --> src/ui/dialog.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum CloseDialog {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 19 |     Yes,
[INFO] [stdout] 20 |     No,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yes_no_dialog` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:24:16
[INFO] [stdout]     |
[INFO] [stdout]  24 |         pub fn [< $name _dialog >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 | nary_dialog!(yes_no, yes, no; false);
[INFO] [stdout]     | ------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yes_no_dialog_str` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:110:16
[INFO] [stdout]     |
[INFO] [stdout] 110 |         pub fn [< $name _dialog_str >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 | nary_dialog!(yes_no, yes, no; false);
[INFO] [stdout]     | ------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_dialog` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:24:16
[INFO] [stdout]     |
[INFO] [stdout]  24 |         pub fn [< $name _dialog >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 | nary_dialog!(close, close; false);
[INFO] [stdout]     | --------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_dialog_str` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:110:16
[INFO] [stdout]     |
[INFO] [stdout] 110 |         pub fn [< $name _dialog_str >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 | nary_dialog!(close, close; false);
[INFO] [stdout]     | --------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ok_cancel_dialog_str` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:110:16
[INFO] [stdout]     |
[INFO] [stdout] 110 |         pub fn [< $name _dialog_str >]<G, $([< F $variant>]),*>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 | nary_dialog!(ok_cancel, ok, cancel; false);
[INFO] [stdout]     | ------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `nary_dialog` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ok_dialog_` is never used
[INFO] [stdout]    --> src/ui/dialog/nary.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn ok_dialog_(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `container` is never read
[INFO] [stdout]   --> src/ui/tab.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Tab {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     container: gtk::Box,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextField` is never constructed
[INFO] [stdout]   --> src/ui/form.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TextField {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]   --> src/ui/form.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl TextField {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 30 |     pub fn new(label: Option<&str>, default_text: &str, phantom_text: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn value(&self) -> String {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RadioField` is never constructed
[INFO] [stdout]    --> src/ui/form.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct RadioField<T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ui/form.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | impl<T> RadioField<T> {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 195 |     pub fn new(label: Option<&str>, variants: Vec<(&str, T)>, default: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn value(&self) -> Option<&T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_value` is never used
[INFO] [stdout]    --> src/ui/form.rs:337:12
[INFO] [stdout]     |
[INFO] [stdout] 306 | impl SliderField {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn set_value(&self, new_value: usize) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FlowForm` is never constructed
[INFO] [stdout]    --> src/ui/form.rs:625:12
[INFO] [stdout]     |
[INFO] [stdout] 625 | pub struct FlowForm {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `builder` and `widget` are never used
[INFO] [stdout]    --> src/ui/form.rs:630:12
[INFO] [stdout]     |
[INFO] [stdout] 629 | impl FlowForm {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 630 |     pub fn builder() -> FlowFormBuilder {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 634 |     pub fn widget(&self) -> &impl IsA<gtk::Widget> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FlowFormBuilder` is never constructed
[INFO] [stdout]    --> src/ui/form.rs:639:12
[INFO] [stdout]     |
[INFO] [stdout] 639 | pub struct FlowFormBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `build`, `title`, and `orientation` are never used
[INFO] [stdout]    --> src/ui/form.rs:660:8
[INFO] [stdout]     |
[INFO] [stdout] 659 | impl FlowFormBuilder {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 660 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 674 |     pub fn build(self) -> FlowForm {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 688 |     pub fn title(mut self, new_title: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 693 |     pub fn orientation(self, orientation: gtk::Orientation) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_gadget` is never used
[INFO] [stdout]   --> src/ui/form/gadget.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl FlowFormBuilder {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 22 |     pub fn with_gadget(self, new_gadget: &impl FormGadget) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `scrolled_window` is never read
[INFO] [stdout]    --> src/ui/layer_window.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct LayerWindow {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] 168 |     tab_wrapper: gtk::Box,
[INFO] [stdout] 169 |     scrolled_window: gtk::ScrolledWindow,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/toolbar.rs:304:36
[INFO] [stdout]     |
[INFO] [stdout] 304 |     pub fn get_boxed_transformable(&self) -> std::cell::RefMut<Option<Box<dyn Transformable>>> {
[INFO] [stdout]     |                                    ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 304 |     pub fn get_boxed_transformable(&self) -> std::cell::RefMut<'_, Option<Box<dyn Transformable>>> {
[INFO] [stdout]     |                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 37s
[INFO] running `Command { std: "docker" "inspect" "249147a5de65fb62c3c1584944a77eb2eeea6c1fc166bc8de7ef1d2401d5f242", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "249147a5de65fb62c3c1584944a77eb2eeea6c1fc166bc8de7ef1d2401d5f242", kill_on_drop: false }`
[INFO] [stdout] 249147a5de65fb62c3c1584944a77eb2eeea6c1fc166bc8de7ef1d2401d5f242
