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