[INFO] cloning repository https://github.com/eliheuer/spoonbender [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/eliheuer/spoonbender" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feliheuer%2Fspoonbender", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feliheuer%2Fspoonbender'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b0c0432d41359bbe28f5bb673c44f0b53d621992 [INFO] linting eliheuer/spoonbender against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feliheuer%2Fspoonbender" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/eliheuer/spoonbender [INFO] finished tweaking git repo https://github.com/eliheuer/spoonbender [INFO] tweaked toml for git repo https://github.com/eliheuer/spoonbender written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/eliheuer/spoonbender on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/eliheuer/spoonbender 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating git repository `https://github.com/linebender/druid.git` [INFO] [stderr] Updating git repository `https://github.com/linebender/spline.git` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded unic-langid-impl v0.9.0 [INFO] [stderr] Downloaded core-text v15.0.0 [INFO] [stderr] Downloaded futures-executor v0.3.19 [INFO] [stderr] Downloaded associative-cache v1.0.1 [INFO] [stderr] Downloaded serde_repr v0.1.7 [INFO] [stderr] Downloaded glib-sys v0.10.1 [INFO] [stderr] Downloaded system-deps v1.3.2 [INFO] [stderr] Downloaded unic-ucd-bidi v0.9.0 [INFO] [stderr] Downloaded gdk-pixbuf-sys v0.10.0 [INFO] [stderr] Downloaded crc32fast v1.3.0 [INFO] [stderr] Downloaded cmake v0.1.46 [INFO] [stderr] Downloaded gdk v0.13.2 [INFO] [stderr] Downloaded gdk-pixbuf v0.9.0 [INFO] [stderr] Downloaded cairo-rs v0.9.1 [INFO] [stderr] Downloaded futures v0.3.19 [INFO] [stderr] Downloaded harfbuzz_rs v1.2.0 [INFO] [stderr] Downloaded gtk-sys v0.10.0 [INFO] [stderr] Downloaded gio v0.9.1 [INFO] [stderr] Downloaded piet v0.3.1 [INFO] [stderr] Downloaded gio-sys v0.10.1 [INFO] [stderr] Downloaded gtk v0.9.2 [INFO] [stderr] Downloaded pom v3.2.0 [INFO] [stderr] Downloaded kurbo v0.7.1 [INFO] [stderr] Downloaded utf16_lit v1.0.1 [INFO] [stderr] Downloaded tinystr v0.3.4 [INFO] [stderr] Downloaded quick-xml v0.20.0 [INFO] [stderr] Downloaded piet-coregraphics v0.3.0 [INFO] [stderr] Downloaded piet-direct2d v0.3.0 [INFO] [stderr] Downloaded piet-common v0.3.2 [INFO] [stderr] Downloaded intl_pluralrules v7.0.1 [INFO] [stderr] Downloaded piet-cairo v0.3.0 [INFO] [stderr] Downloaded norad v0.3.1 [INFO] [stderr] Downloaded unic-bidi v0.9.0 [INFO] [stderr] Downloaded type-map v0.4.0 [INFO] [stderr] Downloaded rental v0.5.6 [INFO] [stderr] Downloaded fluent-syntax v0.9.3 [INFO] [stderr] Downloaded tracing-wasm v0.1.0 [INFO] [stderr] Downloaded atk v0.9.0 [INFO] [stderr] Downloaded pango v0.9.1 [INFO] [stderr] Downloaded atk-sys v0.10.0 [INFO] [stderr] Downloaded const_fn v0.4.9 [INFO] [stderr] Downloaded gdk-sys v0.10.0 [INFO] [stderr] Downloaded freetype-sys v0.11.0 [INFO] [stderr] Downloaded pango-sys v0.10.0 [INFO] [stderr] Downloaded keyboard-types v0.5.0 [INFO] [stderr] Downloaded fluent-bundle v0.12.0 [INFO] [stderr] Downloaded svg v0.8.2 [INFO] [stderr] Downloaded cairo-sys-rs v0.10.0 [INFO] [stderr] Downloaded intl-memoizer v0.5.1 [INFO] [stderr] Downloaded unic-langid v0.9.0 [INFO] [stderr] Downloaded time v0.3.5 [INFO] [stderr] Downloaded futures-io v0.3.19 [INFO] [stderr] Downloaded glib-macros v0.10.1 [INFO] [stderr] Downloaded gobject-sys v0.10.0 [INFO] [stderr] Downloaded piet-web v0.3.1 [INFO] [stderr] Downloaded rental-impl v0.5.5 [INFO] [stderr] Downloaded harfbuzz-sys v0.4.1 [INFO] [stderr] Downloaded freetype v0.5.1 [INFO] [stderr] Downloaded lopdf v0.26.0 [INFO] [stderr] Downloaded glib v0.10.3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ce813f64e1c82d8711ff49e0f0a92bbefb1c6efdace7ae0237ab4d6ce5ca2c80 [INFO] running `Command { std: "docker" "start" "-a" "ce813f64e1c82d8711ff49e0f0a92bbefb1c6efdace7ae0237ab4d6ce5ca2c80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ce813f64e1c82d8711ff49e0f0a92bbefb1c6efdace7ae0237ab4d6ce5ca2c80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ce813f64e1c82d8711ff49e0f0a92bbefb1c6efdace7ae0237ab4d6ce5ca2c80", kill_on_drop: false }` [INFO] [stdout] ce813f64e1c82d8711ff49e0f0a92bbefb1c6efdace7ae0237ab4d6ce5ca2c80 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2fc7f7ebf36ecf7beec39e13c2f1a0f299ea2bc1fd01cb7a526a41b9d507aac4 [INFO] running `Command { std: "docker" "start" "-a" "2fc7f7ebf36ecf7beec39e13c2f1a0f299ea2bc1fd01cb7a526a41b9d507aac4", kill_on_drop: false }` [INFO] [stderr] Compiling syn v1.0.84 [INFO] [stderr] Compiling serde v1.0.133 [INFO] [stderr] Compiling unicode-segmentation v1.8.0 [INFO] [stderr] Compiling version-compare v0.0.10 [INFO] [stderr] Compiling strum v0.18.0 [INFO] [stderr] Compiling futures-channel v0.3.19 [INFO] [stderr] Compiling futures-task v0.3.19 [INFO] [stderr] Checking futures-sink v0.3.19 [INFO] [stderr] Compiling anyhow v1.0.52 [INFO] [stderr] Compiling futures-util v0.3.19 [INFO] [stderr] Checking futures-io v0.3.19 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling standback v0.2.17 [INFO] [stderr] Compiling cairo-rs v0.9.1 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling itertools v0.9.0 [INFO] [stderr] Checking arrayvec v0.5.2 [INFO] [stderr] Checking tinystr v0.3.4 [INFO] [stderr] Compiling gio v0.9.1 [INFO] [stderr] Checking unic-langid-impl v0.9.0 [INFO] [stderr] Checking unic-ucd-bidi v0.9.0 [INFO] [stderr] Checking tracing-core v0.1.21 [INFO] [stderr] Compiling pango v0.9.1 [INFO] [stderr] Compiling gdk-pixbuf v0.9.0 [INFO] [stderr] Compiling cc v1.0.72 [INFO] [stderr] Compiling const_fn v0.4.9 [INFO] [stderr] Checking kurbo v0.7.1 [INFO] [stderr] Checking unic-bidi v0.9.0 [INFO] [stderr] Checking unic-langid v0.9.0 [INFO] [stderr] Compiling time v0.2.27 [INFO] [stderr] Compiling crossbeam-utils v0.8.5 [INFO] [stderr] Compiling atk v0.9.0 [INFO] [stderr] Compiling gdk v0.13.2 [INFO] [stderr] Checking time v0.1.43 [INFO] [stderr] Compiling gtk v0.9.2 [INFO] [stderr] Checking piet v0.3.1 [INFO] [stderr] Checking xi-unicode v0.2.1 [INFO] [stderr] Compiling serde_json v1.0.74 [INFO] [stderr] Checking type-map v0.4.0 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Compiling cmake v0.1.46 [INFO] [stderr] Checking regex-automata v0.1.10 [INFO] [stderr] Checking smallvec v1.7.0 [INFO] [stderr] Compiling crossbeam-epoch v0.9.5 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Compiling freetype-sys v0.11.0 [INFO] [stderr] Checking net2 v0.2.37 [INFO] [stderr] Checking intl-memoizer v0.5.1 [INFO] [stderr] Checking regex v1.5.4 [INFO] [stderr] Checking fluent-langneg v0.13.0 [INFO] [stderr] Checking intl_pluralrules v7.0.1 [INFO] [stderr] Checking tracing-log v0.1.2 [INFO] [stderr] Checking thread_local v1.1.3 [INFO] [stderr] Checking sharded-slab v0.1.4 [INFO] [stderr] Checking keyboard-types v0.5.0 [INFO] [stderr] Checking matchers v0.0.1 [INFO] [stderr] Checking instant v0.1.12 [INFO] [stderr] Checking iovec v0.1.4 [INFO] [stderr] Checking scopeguard v1.1.0 [INFO] [stderr] Checking fluent-syntax v0.9.3 [INFO] [stderr] Checking mio v0.6.23 [INFO] [stderr] Checking inotify-sys v0.1.5 [INFO] [stderr] Compiling crc32fast v1.3.0 [INFO] [stderr] Checking xi-unicode v0.3.0 [INFO] [stderr] Checking inotify v0.7.1 [INFO] [stderr] Checking crossbeam-deque v0.8.1 [INFO] [stderr] Checking crossbeam-channel v0.5.1 [INFO] [stderr] Compiling harfbuzz-sys v0.4.1 [INFO] [stderr] Checking filetime v0.2.15 [INFO] [stderr] Checking safemem v0.3.3 [INFO] [stderr] Checking freetype v0.5.1 [INFO] [stderr] Checking line-wrap v0.1.1 [INFO] [stderr] Checking mio-extras v2.0.6 [INFO] [stderr] Checking time v0.3.5 [INFO] [stderr] Checking getrandom v0.2.3 [INFO] [stderr] Checking flate2 v1.0.22 [INFO] [stderr] Checking notify v4.0.17 [INFO] [stderr] Checking uuid v0.8.2 [INFO] [stderr] Checking rayon-core v1.9.1 [INFO] [stderr] Checking quick-xml v0.20.0 [INFO] [stderr] Compiling toml v0.5.8 [INFO] [stderr] Checking tracing-serde v0.1.2 [INFO] [stderr] Compiling runebender-lib v0.1.0 (/opt/rustwide/workdir/runebender-lib) [INFO] [stderr] Checking lzw v0.10.0 [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> runebender-lib/build.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | entries.sort_by(|a, b| a.chr.cmp(&b.chr)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 47 - entries.sort_by(|a, b| a.chr.cmp(&b.chr)); [INFO] [stdout] 47 + entries.sort_by_key(|a| a.chr); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking pom v3.2.0 [INFO] [stderr] Checking harfbuzz_rs v1.2.0 [INFO] [stderr] Checking spline v0.3.0 (https://github.com/linebender/spline.git?rev=229f7e7#229f7e72) [INFO] [stderr] Checking svg v0.8.2 [INFO] [stderr] Checking rayon v1.5.1 [INFO] [stderr] Checking plist v1.3.1 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling proc-macro-crate v0.1.5 [INFO] [stderr] Compiling thiserror-impl v1.0.30 [INFO] [stderr] Compiling strum_macros v0.18.0 [INFO] [stderr] Compiling futures-macro v0.3.19 [INFO] [stderr] Compiling glib-macros v0.10.1 [INFO] [stderr] Compiling time-macros-impl v0.1.2 [INFO] [stderr] Compiling tracing-attributes v0.1.18 [INFO] [stderr] Compiling rental-impl v0.5.5 [INFO] [stderr] Compiling druid-derive v0.4.0 (https://github.com/linebender/druid.git?rev=75e83ae5#75e83ae5) [INFO] [stderr] Checking time-macros v0.1.1 [INFO] [stderr] Compiling serde_derive v1.0.133 [INFO] [stderr] Checking tracing v0.1.29 [INFO] [stderr] Compiling thiserror v1.0.30 [INFO] [stderr] Compiling system-deps v1.3.2 [INFO] [stderr] Compiling serde_repr v0.1.7 [INFO] [stderr] Checking tracing-subscriber v0.2.25 [INFO] [stderr] Checking lopdf v0.26.0 [INFO] [stderr] Compiling glib-sys v0.10.1 [INFO] [stderr] Compiling gobject-sys v0.10.0 [INFO] [stderr] Compiling gio-sys v0.10.1 [INFO] [stderr] Compiling cairo-sys-rs v0.10.0 [INFO] [stderr] Compiling gdk-pixbuf-sys v0.10.0 [INFO] [stderr] Compiling pango-sys v0.10.0 [INFO] [stderr] Compiling gdk-sys v0.10.0 [INFO] [stderr] Compiling atk-sys v0.10.0 [INFO] [stderr] Compiling gtk-sys v0.10.0 [INFO] [stderr] Checking futures-executor v0.3.19 [INFO] [stderr] Checking glib v0.10.3 [INFO] [stderr] Checking futures v0.3.19 [INFO] [stderr] Checking rental v0.5.6 [INFO] [stderr] Checking fluent-bundle v0.12.0 [INFO] [stderr] Checking piet-cairo v0.3.0 [INFO] [stderr] Checking piet-common v0.3.2 [INFO] [stderr] Checking druid-shell v0.7.0 (https://github.com/linebender/druid.git?rev=75e83ae5#75e83ae5) [INFO] [stderr] Checking druid v0.7.0 (https://github.com/linebender/druid.git?rev=75e83ae5#75e83ae5) [INFO] [stderr] Checking druid-theme-loader v0.1.0 (/opt/rustwide/workdir/druid-theme-loader) [INFO] [stderr] Checking norad v0.3.1 [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> druid-theme-loader/src/lib.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | //! `rgba`, `rrggbb`, `rrggbbaa`, with our without a leading `#`. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 18 | //! `rgba`, `rrggbb`, `rrggbbaa`, with our without a leading `#`. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> druid-theme-loader/src/lib.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | //! `rgba`, `rrggbb`, `rrggbbaa`, with our without a leading `#`. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 18 | //! `rgba`, `rrggbb`, `rrggbbaa`, with our without a leading `#`. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::ops::RangeInclusive` [INFO] [stdout] --> runebender-lib/src/util.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | / ('a'..='z') [INFO] [stdout] 58 | | .into_iter() [INFO] [stdout] | |____________________^ help: consider removing `.into_iter()`: `('a'..='z')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a slice pattern where every element takes a reference [INFO] [stdout] --> runebender-lib/src/clipboard.rs:395:15 [INFO] [stdout] | [INFO] [stdout] 395 | ("m", &[ref x, ref y]) => Some(PathEl::MoveTo(pt(x, y)?)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 395 - ("m", &[ref x, ref y]) => Some(PathEl::MoveTo(pt(x, y)?)), [INFO] [stdout] 395 + ("m", [x, y]) => Some(PathEl::MoveTo(pt(x, y)?)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a slice pattern where every element takes a reference [INFO] [stdout] --> runebender-lib/src/clipboard.rs:396:15 [INFO] [stdout] | [INFO] [stdout] 396 | ("l", &[ref x, ref y]) => Some(PathEl::LineTo(pt(x, y)?)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 396 - ("l", &[ref x, ref y]) => Some(PathEl::LineTo(pt(x, y)?)), [INFO] [stdout] 396 + ("l", [x, y]) => Some(PathEl::LineTo(pt(x, y)?)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a slice pattern where every element takes a reference [INFO] [stdout] --> runebender-lib/src/clipboard.rs:397:15 [INFO] [stdout] | [INFO] [stdout] 397 | ("c", &[ref x1, ref y1, ref x2, ref y2, ref x3, ref y3]) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 397 - ("c", &[ref x1, ref y1, ref x2, ref y2, ref x3, ref y3]) => { [INFO] [stdout] 397 + ("c", [x1, y1, x2, y2, x3, y3]) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> runebender-lib/src/draw.rs:98:25 [INFO] [stdout] | [INFO] [stdout] 98 | let grid_fade = (self.space.zoom / 1.0).min(0.3).max(0.001); // Adjusted max and min values [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `(self.space.zoom / 1.0).clamp(0.001, 0.3)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] = note: `#[warn(clippy::manual_clamp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> runebender-lib/src/draw.rs:172:29 [INFO] [stdout] | [INFO] [stdout] 172 | self.stroke(&seg, &selected_seg_color, 3.0); [INFO] [stdout] | ^^^^ help: change this to: `seg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> runebender-lib/src/edit_session.rs:100:20 [INFO] [stdout] | [INFO] [stdout] 100 | paths: Arc::new(paths), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>` is not `Send` and `Sync` as `Vec` is not `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `Vec` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | (b'0'..=b'9').contains(&b) || b == b'.' || b == b'-' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] = note: `#[warn(clippy::manual_is_ascii_check)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 36 - (b'0'..=b'9').contains(&b) || b == b'.' || b == b'-' [INFO] [stdout] 36 + b.is_ascii_digit() || b == b'.' || b == b'-' [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:40:22 [INFO] [stdout] | [INFO] [stdout] 40 | is_numeric(b) || (b'A'..=b'Z').contains(&b) || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 - is_numeric(b) || (b'A'..=b'Z').contains(&b) || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] 40 + is_numeric(b) || b.is_ascii_uppercase() || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:40:52 [INFO] [stdout] | [INFO] [stdout] 40 | is_numeric(b) || (b'A'..=b'Z').contains(&b) || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 - is_numeric(b) || (b'A'..=b'Z').contains(&b) || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] 40 + is_numeric(b) || (b'A'..=b'Z').contains(&b) || b.is_ascii_lowercase() || b == b'_' [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | (b'0'..=b'9').contains(&b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 44 - (b'0'..=b'9').contains(&b) [INFO] [stdout] 44 + b.is_ascii_digit() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | (b'0'..=b'9').contains(&b) || (b'A'..=b'F').contains(&b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 48 - (b'0'..=b'9').contains(&b) || (b'A'..=b'F').contains(&b) [INFO] [stdout] 48 + b.is_ascii_digit() || (b'A'..=b'F').contains(&b) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> runebender-lib/src/tools/ellipse.rs:37:21 [INFO] [stdout] | [INFO] [stdout] 37 | vec2.x.abs() * -1.0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using: `-vec2.x.abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/ellipse.rs:163:1 [INFO] [stdout] | [INFO] [stdout] 163 | / impl Default for GestureState { [INFO] [stdout] 164 | | fn default() -> Self { [INFO] [stdout] 165 | | GestureState::Ready [INFO] [stdout] 166 | | } [INFO] [stdout] 167 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 22 + #[derive(Default)] [INFO] [stdout] 23 | enum GestureState { [INFO] [stdout] 24 ~ #[default] [INFO] [stdout] 25 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/knife.rs:61:1 [INFO] [stdout] | [INFO] [stdout] 61 | / impl Default for GestureState { [INFO] [stdout] 62 | | fn default() -> Self { [INFO] [stdout] 63 | | GestureState::Ready [INFO] [stdout] 64 | | } [INFO] [stdout] 65 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 31 + #[derive(Default)] [INFO] [stdout] 32 | enum GestureState { [INFO] [stdout] 33 ~ #[default] [INFO] [stdout] 34 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::ops::Range` [INFO] [stdout] --> runebender-lib/src/tools/knife.rs:499:13 [INFO] [stdout] | [INFO] [stdout] 499 | / (0..longer) [INFO] [stdout] 500 | | .into_iter() [INFO] [stdout] | |____________________________^ help: consider removing `.into_iter()`: `(0..longer)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> runebender-lib/src/tools/knife.rs:519:14 [INFO] [stdout] | [INFO] [stdout] 519 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> runebender-lib/src/tools/knife.rs:520:31 [INFO] [stdout] | [INFO] [stdout] 520 | .zip(two.points().into_iter()) [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> runebender-lib/src/tools/knife.rs:520:18 [INFO] [stdout] | [INFO] [stdout] 520 | .zip(two.points().into_iter()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 520 - .zip(two.points().into_iter()) [INFO] [stdout] 520 + .zip(&*two.points()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `paths.get(0)` [INFO] [stdout] --> runebender-lib/src/tools/knife.rs:636:21 [INFO] [stdout] | [INFO] [stdout] 636 | let path1 = paths.get(0).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `paths.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> runebender-lib/src/tools/measure.rs:79:36 [INFO] [stdout] | [INFO] [stdout] 79 | let t_fixed = (intersection.line_t.max(0.0).min(1.0) * T_SCALE) as u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `intersection.line_t.clamp(0.0, 1.0)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/pen.rs:226:1 [INFO] [stdout] | [INFO] [stdout] 226 | / impl Default for State { [INFO] [stdout] 227 | | fn default() -> Self { [INFO] [stdout] 228 | | State::Ready [INFO] [stdout] 229 | | } [INFO] [stdout] 230 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 37 + #[derive(Default)] [INFO] [stdout] 38 | enum State { [INFO] [stdout] 39 ~ #[default] [INFO] [stdout] 40 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/preview.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | / impl Default for State { [INFO] [stdout] 88 | | fn default() -> Self { [INFO] [stdout] 89 | | State::Ready [INFO] [stdout] 90 | | } [INFO] [stdout] 91 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 21 + #[derive(Default)] [INFO] [stdout] 22 | enum State { [INFO] [stdout] 23 ~ #[default] [INFO] [stdout] 24 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> runebender-lib/src/tools/rectangle.rs:52:21 [INFO] [stdout] | [INFO] [stdout] 52 | vec2.x.abs() * -1.0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using: `-vec2.x.abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/rectangle.rs:195:1 [INFO] [stdout] | [INFO] [stdout] 195 | / impl Default for GestureState { [INFO] [stdout] 196 | | fn default() -> Self { [INFO] [stdout] 197 | | GestureState::Ready [INFO] [stdout] 198 | | } [INFO] [stdout] 199 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 36 + #[derive(Default)] [INFO] [stdout] 37 | enum GestureState { [INFO] [stdout] 38 ~ #[default] [INFO] [stdout] 39 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/metaball.rs:25:1 [INFO] [stdout] | [INFO] [stdout] 25 | / impl Default for State { [INFO] [stdout] 26 | | fn default() -> Self { [INFO] [stdout] 27 | | State::Ready [INFO] [stdout] 28 | | } [INFO] [stdout] 29 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 15 + #[derive(Default)] [INFO] [stdout] 16 | enum State { [INFO] [stdout] 17 ~ #[default] [INFO] [stdout] 18 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> runebender-lib/src/tools/select.rs:145:39 [INFO] [stdout] | [INFO] [stdout] 145 | ctx.stroke_styled(&bbox, &selection_stroke, 2.0, &style); [INFO] [stdout] | ^^^^^ help: change this to: `bbox` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> runebender-lib/src/tools/select.rs:519:13 [INFO] [stdout] | [INFO] [stdout] 519 | / !(bbox.width() == 0. && q.modifies_x_axis()) [INFO] [stdout] 520 | | && !(bbox.height() == 0. && q.modifies_y_axis()) [INFO] [stdout] | |________________________________________________________________^ help: try: `!(bbox.width() == 0. && q.modifies_x_axis() || bbox.height() == 0. && q.modifies_y_axis())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> runebender-lib/src/tools/select.rs:599:27 [INFO] [stdout] | [INFO] [stdout] 599 | ctx.stroke_styled(&bbox, &selection_stroke, 0.5, &style); [INFO] [stdout] | ^^^^^ help: change this to: `bbox` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/star.rs:194:1 [INFO] [stdout] | [INFO] [stdout] 194 | / impl Default for GestureState { [INFO] [stdout] 195 | | fn default() -> Self { [INFO] [stdout] 196 | | GestureState::Ready [INFO] [stdout] 197 | | } [INFO] [stdout] 198 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 38 + #[derive(Default)] [INFO] [stdout] 39 | enum GestureState { [INFO] [stdout] 40 ~ #[default] [INFO] [stdout] 41 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> runebender-lib/src/data.rs:224:31 [INFO] [stdout] | [INFO] [stdout] 224 | let session = Arc::new(EditSession::new(glyph_name, self)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` is not `Send` and `Sync` as `EditSession` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `EditSession` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> runebender-lib/src/widgets/coord_pane.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | / if ctx.is_active() { [INFO] [stdout] 74 | | ctx.set_active(false); [INFO] [stdout] 75 | | ctx.request_paint(); [INFO] [stdout] 76 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 72 ~ Event::MouseUp(_) [INFO] [stdout] 73 ~ if ctx.is_active() => { [INFO] [stdout] 74 | ctx.set_active(false); [INFO] [stdout] 75 | ctx.request_paint(); [INFO] [stdout] 76 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> runebender-lib/src/widgets/editable_label.rs:42:20 [INFO] [stdout] | [INFO] [stdout] 42 | on_completion: Box Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> runebender-lib/src/widgets/fontinfo.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | Ok(v) if v == 0.0 => Some(None), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 90 - Ok(v) if v == 0.0 => Some(None), [INFO] [stdout] 90 + Ok(0.0) => Some(None), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/glyph.rs:87:21 [INFO] [stdout] | [INFO] [stdout] 87 | let scale = paint_rect.height() as f64 / glyph_bounds.height(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `paint_rect.height()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/glyph.rs:89:35 [INFO] [stdout] | [INFO] [stdout] 89 | let affine = Affine::new([scale as f64, 0.0, 0.0, -scale as f64, 0.0, baseline]); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `scale` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/glyph.rs:89:59 [INFO] [stdout] | [INFO] [stdout] 89 | let affine = Affine::new([scale as f64, 0.0, 0.0, -scale as f64, 0.0, baseline]); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `(-scale)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `new` usually return `Self` [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | / pub fn new() -> impl Widget { [INFO] [stdout] 123 | | Padding::new( [INFO] [stdout] 124 | | 8.0, // Adjust this value to increase or decrease padding [INFO] [stdout] 125 | | GlyphGrid { [INFO] [stdout] ... | [INFO] [stdout] 129 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stdout] = note: `#[warn(clippy::new_ret_no_self)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:151:21 [INFO] [stdout] | [INFO] [stdout] 151 | let scale = geom.height() as f64 / data.upm; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `geom.height()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:153:41 [INFO] [stdout] | [INFO] [stdout] 153 | let scaled_width = bb.width() * scale as f64; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `scale` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:154:23 [INFO] [stdout] | [INFO] [stdout] 154 | let l_pad = ((geom.width() as f64 - scaled_width) / 2.25).round(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `geom.width()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:155:24 [INFO] [stdout] | [INFO] [stdout] 155 | let baseline = (geom.height() * 0.3) as f64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(geom.height() * 0.3)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:157:13 [INFO] [stdout] | [INFO] [stdout] 157 | scale as f64, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `scale` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:160:13 [INFO] [stdout] | [INFO] [stdout] 160 | -scale as f64, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `(-scale)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:212:17 [INFO] [stdout] | [INFO] [stdout] 212 | / if ctx.is_active() { [INFO] [stdout] 213 | | ctx.set_active(false); [INFO] [stdout] 214 | | ctx.request_paint(); [INFO] [stdout] 215 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 211 ~ Event::MouseUp(_) [INFO] [stdout] 212 ~ if ctx.is_active() => { [INFO] [stdout] 213 | ctx.set_active(false); [INFO] [stdout] 214 | ctx.request_paint(); [INFO] [stdout] 215 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> runebender-lib/src/widgets/scroll_zoom.rs:41:25 [INFO] [stdout] | [INFO] [stdout] 41 | let next_zoom = (last_zoom + delta).min(MAX_ZOOM).max(MIN_ZOOM); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `(last_zoom + delta).clamp(MIN_ZOOM, MAX_ZOOM)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> runebender-lib/src/widgets/scroll_zoom.rs:46:25 [INFO] [stdout] | [INFO] [stdout] 46 | let next_zoom = (data.session.viewport.zoom + delta) [INFO] [stdout] | _________________________^ [INFO] [stdout] 47 | | .min(MAX_ZOOM) [INFO] [stdout] 48 | | .max(MIN_ZOOM); [INFO] [stdout] | |__________________________^ help: replace with clamp: `(data.session.viewport.zoom + delta).clamp(MIN_ZOOM, MAX_ZOOM)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> runebender-lib/src/point_list.rs:279:19 [INFO] [stdout] | [INFO] [stdout] 279 | pub fn cursor(&mut self, id: Option) -> Cursor { [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] 279 | pub fn cursor(&mut self, id: Option) -> Cursor<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> runebender-lib/src/selection.rs:117:17 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn iter(&self) -> PathSelectionIter { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 117 | pub fn iter(&self) -> PathSelectionIter<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::ops::RangeInclusive` [INFO] [stdout] --> runebender-lib/src/util.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | / ('a'..='z') [INFO] [stdout] 58 | | .into_iter() [INFO] [stdout] | |____________________^ help: consider removing `.into_iter()`: `('a'..='z')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a slice pattern where every element takes a reference [INFO] [stdout] --> runebender-lib/src/clipboard.rs:395:15 [INFO] [stdout] | [INFO] [stdout] 395 | ("m", &[ref x, ref y]) => Some(PathEl::MoveTo(pt(x, y)?)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 395 - ("m", &[ref x, ref y]) => Some(PathEl::MoveTo(pt(x, y)?)), [INFO] [stdout] 395 + ("m", [x, y]) => Some(PathEl::MoveTo(pt(x, y)?)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a slice pattern where every element takes a reference [INFO] [stdout] --> runebender-lib/src/clipboard.rs:396:15 [INFO] [stdout] | [INFO] [stdout] 396 | ("l", &[ref x, ref y]) => Some(PathEl::LineTo(pt(x, y)?)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 396 - ("l", &[ref x, ref y]) => Some(PathEl::LineTo(pt(x, y)?)), [INFO] [stdout] 396 + ("l", [x, y]) => Some(PathEl::LineTo(pt(x, y)?)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a slice pattern where every element takes a reference [INFO] [stdout] --> runebender-lib/src/clipboard.rs:397:15 [INFO] [stdout] | [INFO] [stdout] 397 | ("c", &[ref x1, ref y1, ref x2, ref y2, ref x3, ref y3]) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 397 - ("c", &[ref x1, ref y1, ref x2, ref y2, ref x3, ref y3]) => { [INFO] [stdout] 397 + ("c", [x1, y1, x2, y2, x3, y3]) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> runebender-lib/src/draw.rs:98:25 [INFO] [stdout] | [INFO] [stdout] 98 | let grid_fade = (self.space.zoom / 1.0).min(0.3).max(0.001); // Adjusted max and min values [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `(self.space.zoom / 1.0).clamp(0.001, 0.3)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] = note: `#[warn(clippy::manual_clamp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> runebender-lib/src/draw.rs:172:29 [INFO] [stdout] | [INFO] [stdout] 172 | self.stroke(&seg, &selected_seg_color, 3.0); [INFO] [stdout] | ^^^^ help: change this to: `seg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> runebender-lib/src/edit_session.rs:100:20 [INFO] [stdout] | [INFO] [stdout] 100 | paths: Arc::new(paths), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>` is not `Send` and `Sync` as `Vec` is not `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `Vec` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | (b'0'..=b'9').contains(&b) || b == b'.' || b == b'-' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] = note: `#[warn(clippy::manual_is_ascii_check)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 36 - (b'0'..=b'9').contains(&b) || b == b'.' || b == b'-' [INFO] [stdout] 36 + b.is_ascii_digit() || b == b'.' || b == b'-' [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:40:22 [INFO] [stdout] | [INFO] [stdout] 40 | is_numeric(b) || (b'A'..=b'Z').contains(&b) || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 - is_numeric(b) || (b'A'..=b'Z').contains(&b) || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] 40 + is_numeric(b) || b.is_ascii_uppercase() || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:40:52 [INFO] [stdout] | [INFO] [stdout] 40 | is_numeric(b) || (b'A'..=b'Z').contains(&b) || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 - is_numeric(b) || (b'A'..=b'Z').contains(&b) || (b'a'..=b'z').contains(&b) || b == b'_' [INFO] [stdout] 40 + is_numeric(b) || (b'A'..=b'Z').contains(&b) || b.is_ascii_lowercase() || b == b'_' [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | (b'0'..=b'9').contains(&b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 44 - (b'0'..=b'9').contains(&b) [INFO] [stdout] 44 + b.is_ascii_digit() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> runebender-lib/src/plist.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | (b'0'..=b'9').contains(&b) || (b'A'..=b'F').contains(&b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 48 - (b'0'..=b'9').contains(&b) || (b'A'..=b'F').contains(&b) [INFO] [stdout] 48 + b.is_ascii_digit() || (b'A'..=b'F').contains(&b) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> runebender-lib/src/tools/ellipse.rs:37:21 [INFO] [stdout] | [INFO] [stdout] 37 | vec2.x.abs() * -1.0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using: `-vec2.x.abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/ellipse.rs:163:1 [INFO] [stdout] | [INFO] [stdout] 163 | / impl Default for GestureState { [INFO] [stdout] 164 | | fn default() -> Self { [INFO] [stdout] 165 | | GestureState::Ready [INFO] [stdout] 166 | | } [INFO] [stdout] 167 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 22 + #[derive(Default)] [INFO] [stdout] 23 | enum GestureState { [INFO] [stdout] 24 ~ #[default] [INFO] [stdout] 25 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/knife.rs:61:1 [INFO] [stdout] | [INFO] [stdout] 61 | / impl Default for GestureState { [INFO] [stdout] 62 | | fn default() -> Self { [INFO] [stdout] 63 | | GestureState::Ready [INFO] [stdout] 64 | | } [INFO] [stdout] 65 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 31 + #[derive(Default)] [INFO] [stdout] 32 | enum GestureState { [INFO] [stdout] 33 ~ #[default] [INFO] [stdout] 34 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> runebender-lib/src/tools/measure.rs:79:36 [INFO] [stdout] | [INFO] [stdout] 79 | let t_fixed = (intersection.line_t.max(0.0).min(1.0) * T_SCALE) as u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `intersection.line_t.clamp(0.0, 1.0)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/pen.rs:226:1 [INFO] [stdout] | [INFO] [stdout] 226 | / impl Default for State { [INFO] [stdout] 227 | | fn default() -> Self { [INFO] [stdout] 228 | | State::Ready [INFO] [stdout] 229 | | } [INFO] [stdout] 230 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 37 + #[derive(Default)] [INFO] [stdout] 38 | enum State { [INFO] [stdout] 39 ~ #[default] [INFO] [stdout] 40 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/preview.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | / impl Default for State { [INFO] [stdout] 88 | | fn default() -> Self { [INFO] [stdout] 89 | | State::Ready [INFO] [stdout] 90 | | } [INFO] [stdout] 91 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 21 + #[derive(Default)] [INFO] [stdout] 22 | enum State { [INFO] [stdout] 23 ~ #[default] [INFO] [stdout] 24 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> runebender-lib/src/tools/rectangle.rs:52:21 [INFO] [stdout] | [INFO] [stdout] 52 | vec2.x.abs() * -1.0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using: `-vec2.x.abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/rectangle.rs:195:1 [INFO] [stdout] | [INFO] [stdout] 195 | / impl Default for GestureState { [INFO] [stdout] 196 | | fn default() -> Self { [INFO] [stdout] 197 | | GestureState::Ready [INFO] [stdout] 198 | | } [INFO] [stdout] 199 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 36 + #[derive(Default)] [INFO] [stdout] 37 | enum GestureState { [INFO] [stdout] 38 ~ #[default] [INFO] [stdout] 39 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/metaball.rs:25:1 [INFO] [stdout] | [INFO] [stdout] 25 | / impl Default for State { [INFO] [stdout] 26 | | fn default() -> Self { [INFO] [stdout] 27 | | State::Ready [INFO] [stdout] 28 | | } [INFO] [stdout] 29 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 15 + #[derive(Default)] [INFO] [stdout] 16 | enum State { [INFO] [stdout] 17 ~ #[default] [INFO] [stdout] 18 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> runebender-lib/src/tools/select.rs:145:39 [INFO] [stdout] | [INFO] [stdout] 145 | ctx.stroke_styled(&bbox, &selection_stroke, 2.0, &style); [INFO] [stdout] | ^^^^^ help: change this to: `bbox` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> runebender-lib/src/tools/select.rs:519:13 [INFO] [stdout] | [INFO] [stdout] 519 | / !(bbox.width() == 0. && q.modifies_x_axis()) [INFO] [stdout] 520 | | && !(bbox.height() == 0. && q.modifies_y_axis()) [INFO] [stdout] | |________________________________________________________________^ help: try: `!(bbox.width() == 0. && q.modifies_x_axis() || bbox.height() == 0. && q.modifies_y_axis())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> runebender-lib/src/tools/select.rs:599:27 [INFO] [stdout] | [INFO] [stdout] 599 | ctx.stroke_styled(&bbox, &selection_stroke, 0.5, &style); [INFO] [stdout] | ^^^^^ help: change this to: `bbox` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> runebender-lib/src/tools/star.rs:194:1 [INFO] [stdout] | [INFO] [stdout] 194 | / impl Default for GestureState { [INFO] [stdout] 195 | | fn default() -> Self { [INFO] [stdout] 196 | | GestureState::Ready [INFO] [stdout] 197 | | } [INFO] [stdout] 198 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 38 + #[derive(Default)] [INFO] [stdout] 39 | enum GestureState { [INFO] [stdout] 40 ~ #[default] [INFO] [stdout] 41 ~ Ready, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> runebender-lib/src/data.rs:224:31 [INFO] [stdout] | [INFO] [stdout] 224 | let session = Arc::new(EditSession::new(glyph_name, self)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` is not `Send` and `Sync` as `EditSession` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `EditSession` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> runebender-lib/src/widgets/coord_pane.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | / if ctx.is_active() { [INFO] [stdout] 74 | | ctx.set_active(false); [INFO] [stdout] 75 | | ctx.request_paint(); [INFO] [stdout] 76 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 72 ~ Event::MouseUp(_) [INFO] [stdout] 73 ~ if ctx.is_active() => { [INFO] [stdout] 74 | ctx.set_active(false); [INFO] [stdout] 75 | ctx.request_paint(); [INFO] [stdout] 76 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> runebender-lib/src/widgets/editable_label.rs:42:20 [INFO] [stdout] | [INFO] [stdout] 42 | on_completion: Box Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> runebender-lib/src/widgets/fontinfo.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | Ok(v) if v == 0.0 => Some(None), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 90 - Ok(v) if v == 0.0 => Some(None), [INFO] [stdout] 90 + Ok(0.0) => Some(None), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/glyph.rs:87:21 [INFO] [stdout] | [INFO] [stdout] 87 | let scale = paint_rect.height() as f64 / glyph_bounds.height(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `paint_rect.height()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/glyph.rs:89:35 [INFO] [stdout] | [INFO] [stdout] 89 | let affine = Affine::new([scale as f64, 0.0, 0.0, -scale as f64, 0.0, baseline]); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `scale` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/glyph.rs:89:59 [INFO] [stdout] | [INFO] [stdout] 89 | let affine = Affine::new([scale as f64, 0.0, 0.0, -scale as f64, 0.0, baseline]); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `(-scale)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `new` usually return `Self` [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | / pub fn new() -> impl Widget { [INFO] [stdout] 123 | | Padding::new( [INFO] [stdout] 124 | | 8.0, // Adjust this value to increase or decrease padding [INFO] [stdout] 125 | | GlyphGrid { [INFO] [stdout] ... | [INFO] [stdout] 129 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stdout] = note: `#[warn(clippy::new_ret_no_self)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:151:21 [INFO] [stdout] | [INFO] [stdout] 151 | let scale = geom.height() as f64 / data.upm; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `geom.height()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:153:41 [INFO] [stdout] | [INFO] [stdout] 153 | let scaled_width = bb.width() * scale as f64; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `scale` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:154:23 [INFO] [stdout] | [INFO] [stdout] 154 | let l_pad = ((geom.width() as f64 - scaled_width) / 2.25).round(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `geom.width()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:155:24 [INFO] [stdout] | [INFO] [stdout] 155 | let baseline = (geom.height() * 0.3) as f64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(geom.height() * 0.3)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:157:13 [INFO] [stdout] | [INFO] [stdout] 157 | scale as f64, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `scale` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:160:13 [INFO] [stdout] | [INFO] [stdout] 160 | -scale as f64, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `(-scale)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> runebender-lib/src/widgets/grid.rs:212:17 [INFO] [stdout] | [INFO] [stdout] 212 | / if ctx.is_active() { [INFO] [stdout] 213 | | ctx.set_active(false); [INFO] [stdout] 214 | | ctx.request_paint(); [INFO] [stdout] 215 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 211 ~ Event::MouseUp(_) [INFO] [stdout] 212 ~ if ctx.is_active() => { [INFO] [stdout] 213 | ctx.set_active(false); [INFO] [stdout] 214 | ctx.request_paint(); [INFO] [stdout] 215 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> runebender-lib/src/widgets/scroll_zoom.rs:41:25 [INFO] [stdout] | [INFO] [stdout] 41 | let next_zoom = (last_zoom + delta).min(MAX_ZOOM).max(MIN_ZOOM); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `(last_zoom + delta).clamp(MIN_ZOOM, MAX_ZOOM)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> runebender-lib/src/widgets/scroll_zoom.rs:46:25 [INFO] [stdout] | [INFO] [stdout] 46 | let next_zoom = (data.session.viewport.zoom + delta) [INFO] [stdout] | _________________________^ [INFO] [stdout] 47 | | .min(MAX_ZOOM) [INFO] [stdout] 48 | | .max(MIN_ZOOM); [INFO] [stdout] | |__________________________^ help: replace with clamp: `(data.session.viewport.zoom + delta).clamp(MIN_ZOOM, MAX_ZOOM)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> runebender-lib/src/point_list.rs:279:19 [INFO] [stdout] | [INFO] [stdout] 279 | pub fn cursor(&mut self, id: Option) -> Cursor { [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] 279 | pub fn cursor(&mut self, id: Option) -> Cursor<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> runebender-lib/src/selection.rs:117:17 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn iter(&self) -> PathSelectionIter { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 117 | pub fn iter(&self) -> PathSelectionIter<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking spoonbender v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of `default` to create a unit struct [INFO] [stdout] --> src/main.rs:23:19 [INFO] [stdout] | [INFO] [stdout] 23 | .delegate(Delegate::default()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] = note: `#[warn(clippy::default_constructed_unit_structs)]` on by default [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 23 - .delegate(Delegate::default()) [INFO] [stdout] 23 + .delegate(Delegate) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `default` to create a unit struct [INFO] [stdout] --> src/main.rs:23:19 [INFO] [stdout] | [INFO] [stdout] 23 | .delegate(Delegate::default()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] = note: `#[warn(clippy::default_constructed_unit_structs)]` on by default [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 23 - .delegate(Delegate::default()) [INFO] [stdout] 23 + .delegate(Delegate) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 54s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: quick-xml v0.20.0, svg v0.8.2 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3` [INFO] running `Command { std: "docker" "inspect" "2fc7f7ebf36ecf7beec39e13c2f1a0f299ea2bc1fd01cb7a526a41b9d507aac4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2fc7f7ebf36ecf7beec39e13c2f1a0f299ea2bc1fd01cb7a526a41b9d507aac4", kill_on_drop: false }` [INFO] [stdout] 2fc7f7ebf36ecf7beec39e13c2f1a0f299ea2bc1fd01cb7a526a41b9d507aac4