[INFO] cloning repository https://github.com/1jehuang/mermaid-rs-renderer [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/1jehuang/mermaid-rs-renderer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F1jehuang%2Fmermaid-rs-renderer", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F1jehuang%2Fmermaid-rs-renderer'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 84e95ab1060c8e4957e28150578e3c1c71116bfb [INFO] linting 1jehuang/mermaid-rs-renderer against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F1jehuang%2Fmermaid-rs-renderer" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/1jehuang/mermaid-rs-renderer [INFO] finished tweaking git repo https://github.com/1jehuang/mermaid-rs-renderer [INFO] tweaked toml for git repo https://github.com/1jehuang/mermaid-rs-renderer written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/1jehuang/mermaid-rs-renderer 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/1jehuang/mermaid-rs-renderer 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] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded xmlwriter v0.1.0 [INFO] [stderr] Downloaded strict-num v0.1.1 [INFO] [stderr] Downloaded unicode-vo v0.1.0 [INFO] [stderr] Downloaded float-cmp v0.9.0 [INFO] [stderr] Downloaded unicode-script v0.5.8 [INFO] [stderr] Downloaded bytemuck v1.24.0 [INFO] [stderr] Downloaded arrayref v0.3.9 [INFO] [stderr] Downloaded page_size v0.6.0 [INFO] [stderr] Downloaded ciborium-io v0.2.2 [INFO] [stderr] Downloaded core_maths v0.1.1 [INFO] [stderr] Downloaded alloca v0.4.0 [INFO] [stderr] Downloaded crunchy v0.2.4 [INFO] [stderr] Downloaded ciborium-ll v0.2.2 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.108 [INFO] [stderr] Downloaded plotters-svg v0.3.7 [INFO] [stderr] Downloaded find-msvc-tools v0.1.8 [INFO] [stderr] Downloaded ciborium v0.2.2 [INFO] [stderr] Downloaded anyhow v1.0.101 [INFO] [stderr] Downloaded rayon-core v1.13.0 [INFO] [stderr] Downloaded cc v1.2.54 [INFO] [stderr] Downloaded criterion v0.8.1 [INFO] [stderr] Downloaded itertools v0.13.0 [INFO] [stderr] Downloaded plotters v0.3.7 [INFO] [stderr] Downloaded clap_builder v4.5.57 [INFO] [stderr] Downloaded rayon v1.11.0 [INFO] [stderr] Downloaded tiny-skia v0.11.4 [INFO] [stderr] Downloaded ttf-parser v0.25.1 [INFO] [stderr] Downloaded kurbo v0.13.0 [INFO] [stderr] Downloaded zerocopy v0.8.33 [INFO] [stderr] Downloaded rustybuzz v0.20.1 [INFO] [stderr] Downloaded serde_json v1.0.149 [INFO] [stderr] Downloaded libm v0.2.15 [INFO] [stderr] Downloaded png v0.17.16 [INFO] [stderr] Downloaded fontdb v0.23.0 [INFO] [stderr] Downloaded usvg v0.46.0 [INFO] [stderr] Downloaded zerocopy-derive v0.8.33 [INFO] [stderr] Downloaded bumpalo v3.19.1 [INFO] [stderr] Downloaded roxmltree v0.21.1 [INFO] [stderr] Downloaded euclid v0.22.13 [INFO] [stderr] Downloaded zune-jpeg v0.5.11 [INFO] [stderr] Downloaded resvg v0.46.0 [INFO] [stderr] Downloaded flate2 v1.1.8 [INFO] [stderr] Downloaded slotmap v1.1.1 [INFO] [stderr] Downloaded tinyvec v1.10.0 [INFO] [stderr] Downloaded half v2.7.1 [INFO] [stderr] Downloaded clap v4.5.57 [INFO] [stderr] Downloaded js-sys v0.3.85 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.108 [INFO] [stderr] Downloaded json5 v1.3.1 [INFO] [stderr] Downloaded web-sys v0.3.85 [INFO] [stderr] Downloaded image-webp v0.2.4 [INFO] [stderr] Downloaded roxmltree v0.20.0 [INFO] [stderr] Downloaded svgtypes v0.16.1 [INFO] [stderr] Downloaded clap_derive v4.5.55 [INFO] [stderr] Downloaded wasm-bindgen v0.2.108 [INFO] [stderr] Downloaded tinytemplate v1.2.1 [INFO] [stderr] Downloaded ucd-trie v0.1.7 [INFO] [stderr] Downloaded gif v0.14.1 [INFO] [stderr] Downloaded data-url v0.3.2 [INFO] [stderr] Downloaded fontconfig-parser v0.5.8 [INFO] [stderr] Downloaded memmap2 v0.9.9 [INFO] [stderr] Downloaded unicode-properties v0.1.4 [INFO] [stderr] Downloaded simplecss v0.2.2 [INFO] [stderr] Downloaded anes v0.1.6 [INFO] [stderr] Downloaded criterion-plot v0.8.1 [INFO] [stderr] Downloaded oorandom v11.1.5 [INFO] [stderr] Downloaded crossbeam-deque v0.8.6 [INFO] [stderr] Downloaded weezl v0.1.12 [INFO] [stderr] Downloaded zune-core v0.5.1 [INFO] [stderr] Downloaded imagesize v0.14.0 [INFO] [stderr] Downloaded arrayvec v0.7.6 [INFO] [stderr] Downloaded walkdir v2.5.0 [INFO] [stderr] Downloaded rgb v0.8.52 [INFO] [stderr] Downloaded fdeflate v0.3.7 [INFO] [stderr] Downloaded cast v0.3.0 [INFO] [stderr] Downloaded plotters-backend v0.3.7 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.108 [INFO] [stderr] Downloaded unicode-bidi-mirroring v0.4.0 [INFO] [stderr] Downloaded quick-error v2.0.1 [INFO] [stderr] Downloaded zmij v1.0.16 [INFO] [stderr] Downloaded unicode-ccc v0.4.0 [INFO] [stderr] Downloaded tiny-skia-path v0.11.4 [INFO] [stderr] Downloaded same-file v1.0.6 [INFO] [stderr] Downloaded winapi-util v0.1.11 [INFO] [stderr] Downloaded color_quant v1.1.0 [INFO] [stderr] Downloaded byteorder-lite v0.1.0 [INFO] [stderr] Downloaded pico-args v0.5.0 [INFO] [stderr] Downloaded unicode-bidi v0.3.18 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 6e2351714280bf60f02e731daac4f96bd9ad8723e8ee282886032120ab7b1eef [INFO] running `Command { std: "docker" "start" "-a" "6e2351714280bf60f02e731daac4f96bd9ad8723e8ee282886032120ab7b1eef", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6e2351714280bf60f02e731daac4f96bd9ad8723e8ee282886032120ab7b1eef", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6e2351714280bf60f02e731daac4f96bd9ad8723e8ee282886032120ab7b1eef", kill_on_drop: false }` [INFO] [stdout] 6e2351714280bf60f02e731daac4f96bd9ad8723e8ee282886032120ab7b1eef [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 26bc15598c6fb3e0116fbc638ae825e1d278a2deca3d94b943e2da698d517dc2 [INFO] running `Command { std: "docker" "start" "-a" "26bc15598c6fb3e0116fbc638ae825e1d278a2deca3d94b943e2da698d517dc2", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.43 [INFO] [stderr] Compiling unicode-ident v1.0.22 [INFO] [stderr] Checking cfg-if v1.0.4 [INFO] [stderr] Checking memchr v2.7.6 [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Checking simd-adler32 v0.3.8 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Checking adler2 v2.0.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Checking bytemuck v1.24.0 [INFO] [stderr] Compiling slotmap v1.1.1 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Compiling zmij v1.0.16 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Checking float-cmp v0.9.0 [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Checking flate2 v1.1.8 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking strict-num v0.1.1 [INFO] [stderr] Checking anstyle-parse v0.2.7 [INFO] [stderr] Compiling zerocopy v0.8.33 [INFO] [stderr] Checking core_maths v0.1.1 [INFO] [stderr] Checking is_terminal_polyfill v1.70.2 [INFO] [stderr] Checking ttf-parser v0.25.1 [INFO] [stderr] Checking roxmltree v0.20.0 [INFO] [stderr] Checking arrayref v0.3.9 [INFO] [stderr] Checking colorchoice v1.0.4 [INFO] [stderr] Checking anstyle-query v1.1.5 [INFO] [stderr] Checking tinyvec_macros v0.1.1 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking anstyle v1.0.13 [INFO] [stderr] Checking tinyvec v1.10.0 [INFO] [stderr] Checking tiny-skia-path v0.11.4 [INFO] [stderr] Checking anstream v0.6.21 [INFO] [stderr] Checking fontconfig-parser v0.5.8 [INFO] [stderr] Checking memmap2 v0.9.9 [INFO] [stderr] Checking kurbo v0.13.0 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Checking fdeflate v0.3.7 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Checking unicode-ccc v0.4.0 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Checking unicode-script v0.5.8 [INFO] [stderr] Checking bitflags v2.10.0 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking regex-syntax v0.8.8 [INFO] [stderr] Checking unicode-bidi-mirroring v0.4.0 [INFO] [stderr] Checking clap_lex v0.7.7 [INFO] [stderr] Checking itoa v1.0.17 [INFO] [stderr] Checking siphasher v1.0.1 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling find-msvc-tools v0.1.8 [INFO] [stderr] Checking strsim v0.11.1 [INFO] [stderr] Checking unicode-properties v0.1.4 [INFO] [stderr] Checking clap_builder v4.5.57 [INFO] [stderr] Checking svgtypes v0.16.1 [INFO] [stderr] Compiling cc v1.2.54 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking png v0.17.16 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking rustybuzz v0.20.1 [INFO] [stderr] Checking fontdb v0.23.0 [INFO] [stderr] Checking roxmltree v0.21.1 [INFO] [stderr] Checking simplecss v0.2.2 [INFO] [stderr] Checking unicode-vo v0.1.0 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking byteorder-lite v0.1.0 [INFO] [stderr] Checking imagesize v0.14.0 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking quick-error v2.0.1 [INFO] [stderr] Checking data-url v0.3.2 [INFO] [stderr] Checking unicode-bidi v0.3.18 [INFO] [stderr] Checking zune-core v0.5.1 [INFO] [stderr] Checking base64 v0.22.1 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Checking xmlwriter v0.1.0 [INFO] [stderr] Checking pico-args v0.5.0 [INFO] [stderr] Checking weezl v0.1.12 [INFO] [stderr] Checking color_quant v1.1.0 [INFO] [stderr] Compiling anyhow v1.0.101 [INFO] [stderr] Checking zune-jpeg v0.5.11 [INFO] [stderr] Checking image-webp v0.2.4 [INFO] [stderr] Checking gif v0.14.1 [INFO] [stderr] Checking tiny-skia v0.11.4 [INFO] [stderr] Compiling alloca v0.4.0 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Checking usvg v0.46.0 [INFO] [stderr] Checking rgb v0.8.52 [INFO] [stderr] Checking plotters-backend v0.3.7 [INFO] [stderr] Checking ucd-trie v0.1.7 [INFO] [stderr] Checking ciborium-io v0.2.2 [INFO] [stderr] Checking plotters-svg v0.3.7 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking once_cell v1.21.3 [INFO] [stderr] Checking cast v0.3.0 [INFO] [stderr] Checking same-file v1.0.6 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerocopy-derive v0.8.33 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Checking regex v1.12.2 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Checking resvg v0.46.0 [INFO] [stderr] Checking plotters v0.3.7 [INFO] [stderr] Checking walkdir v2.5.0 [INFO] [stderr] Checking page_size v0.6.0 [INFO] [stderr] Checking oorandom v11.1.5 [INFO] [stderr] Checking anes v0.1.6 [INFO] [stderr] Checking criterion-plot v0.8.1 [INFO] [stderr] Checking clap v4.5.57 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Checking ciborium-ll v0.2.2 [INFO] [stderr] Checking json5 v1.3.1 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Checking ciborium v0.2.2 [INFO] [stderr] Checking mermaid-rs-renderer v0.2.1 (/opt/rustwide/workdir) [INFO] [stderr] Checking criterion v0.8.1 [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:3747:25 [INFO] [stdout] | [INFO] [stdout] 3747 | icon: icon, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `icon` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:3747:25 [INFO] [stdout] | [INFO] [stdout] 3747 | icon: icon, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `icon` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this manual char comparison can be written more succinctly [INFO] [stdout] --> src/layout/gantt.rs:101:16 [INFO] [stdout] | [INFO] [stdout] 101 | .split(|ch| ch == '-' || ch == '/' || ch == '.') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using an array of `char`: `['-', '/', '.']` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_pattern_char_comparison [INFO] [stdout] = note: `#[warn(clippy::manual_pattern_char_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/gantt.rs:213:9 [INFO] [stdout] | [INFO] [stdout] 213 | / if start.is_none() { [INFO] [stdout] 214 | | if let Some(after_id) = task.after.as_deref() { [INFO] [stdout] 215 | | if let Some((_, end)) = timing.get(after_id) { [INFO] [stdout] 216 | | start = Some(*end); [INFO] [stdout] ... | [INFO] [stdout] 219 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 213 ~ if start.is_none() [INFO] [stdout] 214 ~ && let Some(after_id) = task.after.as_deref() { [INFO] [stdout] 215 | if let Some((_, end)) = timing.get(after_id) { [INFO] [stdout] 216 | start = Some(*end); [INFO] [stdout] 217 | } [INFO] [stdout] 218 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/gantt.rs:214:13 [INFO] [stdout] | [INFO] [stdout] 214 | / if let Some(after_id) = task.after.as_deref() { [INFO] [stdout] 215 | | if let Some((_, end)) = timing.get(after_id) { [INFO] [stdout] 216 | | start = Some(*end); [INFO] [stdout] 217 | | } [INFO] [stdout] 218 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 214 ~ if let Some(after_id) = task.after.as_deref() [INFO] [stdout] 215 ~ && let Some((_, end)) = timing.get(after_id) { [INFO] [stdout] 216 | start = Some(*end); [INFO] [stdout] 217 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/label_placement.rs:302:9 [INFO] [stdout] | [INFO] [stdout] 302 | / if let Some((ax, ay)) = edges[idx].label_anchor { [INFO] [stdout] 303 | | if let Some(candidate) = edge_label_anchor_from_point(edge, (ax, ay)) { [INFO] [stdout] 304 | | push_anchor_unique(&mut anchors, candidate); [INFO] [stdout] 305 | | } [INFO] [stdout] 306 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 302 ~ if let Some((ax, ay)) = edges[idx].label_anchor [INFO] [stdout] 303 ~ && let Some(candidate) = edge_label_anchor_from_point(edge, (ax, ay)) { [INFO] [stdout] 304 | push_anchor_unique(&mut anchors, candidate); [INFO] [stdout] 305 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:500:17 [INFO] [stdout] | [INFO] [stdout] 500 | &tangent_steps, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `tangent_steps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:501:17 [INFO] [stdout] | [INFO] [stdout] 501 | &normal_steps, [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `normal_steps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:513:21 [INFO] [stdout] | [INFO] [stdout] 513 | &tangent_steps, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `tangent_steps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:514:21 [INFO] [stdout] | [INFO] [stdout] 514 | &normal_steps, [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `normal_steps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:557:21 [INFO] [stdout] | [INFO] [stdout] 557 | &tangent_steps_wide, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `tangent_steps_wide` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:558:21 [INFO] [stdout] | [INFO] [stdout] 558 | &normal_steps_wide, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `normal_steps_wide` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:570:25 [INFO] [stdout] | [INFO] [stdout] 570 | &tangent_steps_wide, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `tangent_steps_wide` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:571:25 [INFO] [stdout] | [INFO] [stdout] 571 | &normal_steps_wide, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `normal_steps_wide` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_unstable_by_key` [INFO] [stdout] --> src/layout/label_placement.rs:1656:17 [INFO] [stdout] | [INFO] [stdout] 1656 | assignments.sort_unstable_by(|a, b| a.0.cmp(&b.0)); [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] 1656 - assignments.sort_unstable_by(|a, b| a.0.cmp(&b.0)); [INFO] [stdout] 1656 + assignments.sort_unstable_by_key(|a| a.0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (13/10) [INFO] [stdout] --> src/layout/label_placement.rs:3206:1 [INFO] [stdout] | [INFO] [stdout] 3206 | / fn label_penalties( [INFO] [stdout] 3207 | | rect: Rect, [INFO] [stdout] 3208 | | anchor: (f32, f32), [INFO] [stdout] 3209 | | label_w: f32, [INFO] [stdout] ... | [INFO] [stdout] 3219 | | bounds: Option<(f32, f32)>, [INFO] [stdout] 3220 | | ) -> (f32, f32) { [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (15/10) [INFO] [stdout] --> src/layout/label_placement.rs:3367:1 [INFO] [stdout] | [INFO] [stdout] 3367 | / fn edge_endpoint_label_position_with_avoid( [INFO] [stdout] 3368 | | edge: &EdgeLayout, [INFO] [stdout] 3369 | | edge_idx: usize, [INFO] [stdout] 3370 | | start: bool, [INFO] [stdout] ... | [INFO] [stdout] 3382 | | bounds: Option<(f32, f32)>, [INFO] [stdout] 3383 | | ) -> Option<(f32, f32)> { [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/layout/ranking.rs:161:13 [INFO] [stdout] | [INFO] [stdout] 161 | bucket: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 161 - bucket: &mut Vec, [INFO] [stdout] 161 + bucket: &mut [String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/layout/ranking.rs:297:20 [INFO] [stdout] | [INFO] [stdout] 297 | if best.as_ref().map_or(true, |(bk, _)| key < *bk) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 297 - if best.as_ref().map_or(true, |(bk, _)| key < *bk) { [INFO] [stdout] 297 + if best.as_ref().is_none_or(|(bk, _)| key < *bk) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/layout/routing.rs:1316:29 [INFO] [stdout] | [INFO] [stdout] 1316 | && (!occupancy.is_some() || score == best_score) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `occupancy.is_none()` [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: this boolean expression can be simplified [INFO] [stdout] --> src/layout/routing.rs:1351:29 [INFO] [stdout] | [INFO] [stdout] 1351 | && (!occupancy.is_some() || score == best_score) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `occupancy.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: items after a test module [INFO] [stdout] --> src/cli.rs:413:1 [INFO] [stdout] | [INFO] [stdout] 413 | mod tests { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 497 | fn merge_init_config(mut config: Config, init: serde_json::Value) -> Config { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_test_module [INFO] [stdout] = note: `#[warn(clippy::items_after_test_module)]` on by default [INFO] [stdout] = help: move the items to before the test module was defined [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `(num_events - 1)` is never smaller than `0` and has therefore no effect [INFO] [stdout] --> src/layout/timeline.rs:19:43 [INFO] [stdout] | [INFO] [stdout] 19 | num_events as f32 * event_width + (num_events - 1).max(0) as f32 * event_spacing; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(num_events - 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_min_or_max [INFO] [stdout] = note: `#[warn(clippy::unnecessary_min_or_max)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/layout/mod.rs:1307:28 [INFO] [stdout] | [INFO] [stdout] 1307 | if let Some(metrics) = stage_metrics.as_deref_mut() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `stage_metrics` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] = note: `#[warn(clippy::needless_option_as_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/layout/mod.rs:1418:22 [INFO] [stdout] | [INFO] [stdout] 1418 | label_dummy_ids: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 1418 - label_dummy_ids: &mut Vec>, [INFO] [stdout] 1418 + label_dummy_ids: &mut [Option], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:1641:13 [INFO] [stdout] | [INFO] [stdout] 1641 | / if let Some(&orig_idx) = original_edge_indices.get(idx) { [INFO] [stdout] 1642 | | if orig_idx < label_dummy_ids.len() { [INFO] [stdout] 1643 | | label_dummy_ids[orig_idx] = Some(dummy_id.clone()); [INFO] [stdout] 1644 | | } [INFO] [stdout] 1645 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1641 ~ if let Some(&orig_idx) = original_edge_indices.get(idx) [INFO] [stdout] 1642 ~ && orig_idx < label_dummy_ids.len() { [INFO] [stdout] 1643 | label_dummy_ids[orig_idx] = Some(dummy_id.clone()); [INFO] [stdout] 1644 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:1670:9 [INFO] [stdout] | [INFO] [stdout] 1670 | / if let Some(&orig_idx) = original_edge_indices.get(idx) { [INFO] [stdout] 1671 | | if let Some(Some(dummy_id)) = label_dummy_ids.get(orig_idx) { [INFO] [stdout] 1672 | | label_dummy_at_rank.insert(idx, (label_rank, dummy_id.clone())); [INFO] [stdout] 1673 | | } [INFO] [stdout] 1674 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1670 ~ if let Some(&orig_idx) = original_edge_indices.get(idx) [INFO] [stdout] 1671 ~ && let Some(Some(dummy_id)) = label_dummy_ids.get(orig_idx) { [INFO] [stdout] 1672 | label_dummy_at_rank.insert(idx, (label_rank, dummy_id.clone())); [INFO] [stdout] 1673 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:1975:9 [INFO] [stdout] | [INFO] [stdout] 1975 | / if let Some(anchor_id) = subgraph_anchor_id(sub, nodes) { [INFO] [stdout] 1976 | | if nodes.contains_key(anchor_id) { [INFO] [stdout] 1977 | | node_group.insert(anchor_id.to_string(), group_idx); [INFO] [stdout] 1978 | | } [INFO] [stdout] 1979 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1975 ~ if let Some(anchor_id) = subgraph_anchor_id(sub, nodes) [INFO] [stdout] 1976 ~ && nodes.contains_key(anchor_id) { [INFO] [stdout] 1977 | node_group.insert(anchor_id.to_string(), group_idx); [INFO] [stdout] 1978 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:2023:9 [INFO] [stdout] | [INFO] [stdout] 2023 | / if let (Some(a), Some(b)) = (from_group, to_group) { [INFO] [stdout] 2024 | | if a != b { [INFO] [stdout] 2025 | | inter_group_edges += 1; [INFO] [stdout] 2026 | | let (min_g, max_g) = if a < b { (*a, *b) } else { (*b, *a) }; [INFO] [stdout] ... | [INFO] [stdout] 2031 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2023 ~ if let (Some(a), Some(b)) = (from_group, to_group) [INFO] [stdout] 2024 ~ && a != b { [INFO] [stdout] 2025 | inter_group_edges += 1; [INFO] [stdout] ... [INFO] [stdout] 2029 | *group_degree.entry(*b).or_insert(0) += 1; [INFO] [stdout] 2030 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/layout/mod.rs:2187:28 [INFO] [stdout] | [INFO] [stdout] 2187 | let cols = (groups.len() + rows - 1) / rows; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `groups.len().div_ceil(rows)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:3014:13 [INFO] [stdout] | [INFO] [stdout] 3014 | / if sub_a.nodes.iter().any(|n| n == b_id) [INFO] [stdout] 3015 | | || sub_a.nodes.iter().any(|n| n == &sub_b.label) [INFO] [stdout] 3016 | | { [INFO] [stdout] 3017 | | if parent_of[j].is_none() { [INFO] [stdout] ... | [INFO] [stdout] 3020 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 3014 ~ if (sub_a.nodes.iter().any(|n| n == b_id) [INFO] [stdout] 3015 ~ || sub_a.nodes.iter().any(|n| n == &sub_b.label) [INFO] [stdout] 3016 ~ || sub_a.nodes.iter().any(|n| n == &sub_b.label)) [INFO] [stdout] 3017 | { [INFO] [stdout] 3018 ~ && parent_of[j].is_none() { [INFO] [stdout] 3019 | parent_of[j] = Some(i); [INFO] [stdout] 3020 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:4590:9 [INFO] [stdout] | [INFO] [stdout] 4590 | / if let Some(prev) = prev_max { [INFO] [stdout] 4591 | | if min_main < prev { [INFO] [stdout] 4592 | | return; [INFO] [stdout] 4593 | | } [INFO] [stdout] 4594 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 4590 ~ if let Some(prev) = prev_max [INFO] [stdout] 4591 ~ && min_main < prev { [INFO] [stdout] 4592 | return; [INFO] [stdout] 4593 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:4619:9 [INFO] [stdout] | [INFO] [stdout] 4619 | / if let Some(anchor_id) = bound.anchor_id.as_deref() { [INFO] [stdout] 4620 | | if let Some(node) = nodes.get_mut(anchor_id) { [INFO] [stdout] 4621 | | if horizontal { [INFO] [stdout] 4622 | | node.y += delta; [INFO] [stdout] ... | [INFO] [stdout] 4627 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 4619 ~ if let Some(anchor_id) = bound.anchor_id.as_deref() [INFO] [stdout] 4620 ~ && let Some(node) = nodes.get_mut(anchor_id) { [INFO] [stdout] 4621 | if horizontal { [INFO] [stdout] ... [INFO] [stdout] 4625 | } [INFO] [stdout] 4626 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/layout/mod.rs:4687:12 [INFO] [stdout] | [INFO] [stdout] 4687 | if comp.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!comp.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parser.rs:1859:13 [INFO] [stdout] | [INFO] [stdout] 1859 | / if let Some(score) = score { [INFO] [stdout] 1860 | | if let Some(node) = graph.nodes.get_mut(&node_id) { [INFO] [stdout] 1861 | | node.value = Some(score); [INFO] [stdout] 1862 | | } [INFO] [stdout] 1863 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1859 ~ if let Some(score) = score [INFO] [stdout] 1860 ~ && let Some(node) = graph.nodes.get_mut(&node_id) { [INFO] [stdout] 1861 | node.value = Some(score); [INFO] [stdout] 1862 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parser.rs:3752:21 [INFO] [stdout] | [INFO] [stdout] 3752 | / if let Some(icon_type) = icon { [INFO] [stdout] 3753 | | if let Some(node) = graph.nodes.get_mut(&id) { [INFO] [stdout] 3754 | | node.icon = Some(icon_type); [INFO] [stdout] 3755 | | } [INFO] [stdout] 3756 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 3752 ~ if let Some(icon_type) = icon [INFO] [stdout] 3753 ~ && let Some(node) = graph.nodes.get_mut(&id) { [INFO] [stdout] 3754 | node.icon = Some(icon_type); [INFO] [stdout] 3755 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/parser.rs:3813:9 [INFO] [stdout] | [INFO] [stdout] 3813 | / if let Some(paren_end) = id_part.find(')') { [INFO] [stdout] 3814 | | Some(id_part[paren_start + 1..paren_end].trim().to_string()) [INFO] [stdout] 3815 | | } else { [INFO] [stdout] 3816 | | None [INFO] [stdout] 3817 | | } [INFO] [stdout] | |_________^ help: try: `id_part.find(')').map(|paren_end| id_part[paren_start + 1..paren_end].trim().to_string())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parser.rs:4533:42 [INFO] [stdout] | [INFO] [stdout] 4533 | for id in fork_ids.into_iter().chain(join_ids.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:510:11 [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] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 4533 - for id in fork_ids.into_iter().chain(join_ids.into_iter()) { [INFO] [stdout] 4533 + for id in fork_ids.into_iter().chain(join_ids) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/parser.rs:5114:23 [INFO] [stdout] | [INFO] [stdout] 5114 | fn split_on_ampersand<'a>(input: &'a str) -> Vec<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 5114 - fn split_on_ampersand<'a>(input: &'a str) -> Vec<&'a str> { [INFO] [stdout] 5114 + fn split_on_ampersand(input: &str) -> Vec<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/render.rs:999:17 [INFO] [stdout] | [INFO] [stdout] 999 | / if edge.arrow_start { [INFO] [stdout] 1000 | | if let Some(point) = edge.points.first().copied() { [INFO] [stdout] 1001 | | let angle = edge_endpoint_angle(&edge.points, true); [INFO] [stdout] 1002 | | overlay_arrows.push((true, point, angle, stroke.clone(), stroke_width)); [INFO] [stdout] 1003 | | } [INFO] [stdout] 1004 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 999 ~ if edge.arrow_start [INFO] [stdout] 1000 ~ && let Some(point) = edge.points.first().copied() { [INFO] [stdout] 1001 | let angle = edge_endpoint_angle(&edge.points, true); [INFO] [stdout] 1002 | overlay_arrows.push((true, point, angle, stroke.clone(), stroke_width)); [INFO] [stdout] 1003 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/render.rs:1005:17 [INFO] [stdout] | [INFO] [stdout] 1005 | / if edge.arrow_end { [INFO] [stdout] 1006 | | if let Some(point) = edge.points.last().copied() { [INFO] [stdout] 1007 | | let angle = edge_endpoint_angle(&edge.points, false); [INFO] [stdout] 1008 | | overlay_arrows.push((false, point, angle, stroke.clone(), stroke_width)); [INFO] [stdout] 1009 | | } [INFO] [stdout] 1010 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1005 ~ if edge.arrow_end [INFO] [stdout] 1006 ~ && let Some(point) = edge.points.last().copied() { [INFO] [stdout] 1007 | let angle = edge_endpoint_angle(&edge.points, false); [INFO] [stdout] 1008 | overlay_arrows.push((false, point, angle, stroke.clone(), stroke_width)); [INFO] [stdout] 1009 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/render.rs:5240:9 [INFO] [stdout] | [INFO] [stdout] 5240 | / if !attr.data_type.is_empty() { [INFO] [stdout] 5241 | | if let Some(width) = [INFO] [stdout] 5242 | | text_metrics::measure_text_width(&attr.data_type, font_size, &theme.font_family) [INFO] [stdout] ... | [INFO] [stdout] 5246 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 5240 ~ if !attr.data_type.is_empty() [INFO] [stdout] 5241 ~ && let Some(width) = [INFO] [stdout] 5242 | text_metrics::measure_text_width(&attr.data_type, font_size, &theme.font_family) [INFO] [stdout] 5243 | { [INFO] [stdout] 5244 | max_type_width = max_type_width.max(width); [INFO] [stdout] 5245 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this manual char comparison can be written more succinctly [INFO] [stdout] --> src/layout/gantt.rs:101:16 [INFO] [stdout] | [INFO] [stdout] 101 | .split(|ch| ch == '-' || ch == '/' || ch == '.') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using an array of `char`: `['-', '/', '.']` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_pattern_char_comparison [INFO] [stdout] = note: `#[warn(clippy::manual_pattern_char_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/gantt.rs:213:9 [INFO] [stdout] | [INFO] [stdout] 213 | / if start.is_none() { [INFO] [stdout] 214 | | if let Some(after_id) = task.after.as_deref() { [INFO] [stdout] 215 | | if let Some((_, end)) = timing.get(after_id) { [INFO] [stdout] 216 | | start = Some(*end); [INFO] [stdout] ... | [INFO] [stdout] 219 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 213 ~ if start.is_none() [INFO] [stdout] 214 ~ && let Some(after_id) = task.after.as_deref() { [INFO] [stdout] 215 | if let Some((_, end)) = timing.get(after_id) { [INFO] [stdout] 216 | start = Some(*end); [INFO] [stdout] 217 | } [INFO] [stdout] 218 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/gantt.rs:214:13 [INFO] [stdout] | [INFO] [stdout] 214 | / if let Some(after_id) = task.after.as_deref() { [INFO] [stdout] 215 | | if let Some((_, end)) = timing.get(after_id) { [INFO] [stdout] 216 | | start = Some(*end); [INFO] [stdout] 217 | | } [INFO] [stdout] 218 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 214 ~ if let Some(after_id) = task.after.as_deref() [INFO] [stdout] 215 ~ && let Some((_, end)) = timing.get(after_id) { [INFO] [stdout] 216 | start = Some(*end); [INFO] [stdout] 217 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/label_placement.rs:302:9 [INFO] [stdout] | [INFO] [stdout] 302 | / if let Some((ax, ay)) = edges[idx].label_anchor { [INFO] [stdout] 303 | | if let Some(candidate) = edge_label_anchor_from_point(edge, (ax, ay)) { [INFO] [stdout] 304 | | push_anchor_unique(&mut anchors, candidate); [INFO] [stdout] 305 | | } [INFO] [stdout] 306 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 302 ~ if let Some((ax, ay)) = edges[idx].label_anchor [INFO] [stdout] 303 ~ && let Some(candidate) = edge_label_anchor_from_point(edge, (ax, ay)) { [INFO] [stdout] 304 | push_anchor_unique(&mut anchors, candidate); [INFO] [stdout] 305 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:500:17 [INFO] [stdout] | [INFO] [stdout] 500 | &tangent_steps, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `tangent_steps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:501:17 [INFO] [stdout] | [INFO] [stdout] 501 | &normal_steps, [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `normal_steps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:513:21 [INFO] [stdout] | [INFO] [stdout] 513 | &tangent_steps, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `tangent_steps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:514:21 [INFO] [stdout] | [INFO] [stdout] 514 | &normal_steps, [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `normal_steps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:557:21 [INFO] [stdout] | [INFO] [stdout] 557 | &tangent_steps_wide, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `tangent_steps_wide` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:558:21 [INFO] [stdout] | [INFO] [stdout] 558 | &normal_steps_wide, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `normal_steps_wide` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:570:25 [INFO] [stdout] | [INFO] [stdout] 570 | &tangent_steps_wide, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `tangent_steps_wide` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layout/label_placement.rs:571:25 [INFO] [stdout] | [INFO] [stdout] 571 | &normal_steps_wide, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `normal_steps_wide` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_unstable_by_key` [INFO] [stdout] --> src/layout/label_placement.rs:1656:17 [INFO] [stdout] | [INFO] [stdout] 1656 | assignments.sort_unstable_by(|a, b| a.0.cmp(&b.0)); [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] 1656 - assignments.sort_unstable_by(|a, b| a.0.cmp(&b.0)); [INFO] [stdout] 1656 + assignments.sort_unstable_by_key(|a| a.0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (13/10) [INFO] [stdout] --> src/layout/label_placement.rs:3206:1 [INFO] [stdout] | [INFO] [stdout] 3206 | / fn label_penalties( [INFO] [stdout] 3207 | | rect: Rect, [INFO] [stdout] 3208 | | anchor: (f32, f32), [INFO] [stdout] 3209 | | label_w: f32, [INFO] [stdout] ... | [INFO] [stdout] 3219 | | bounds: Option<(f32, f32)>, [INFO] [stdout] 3220 | | ) -> (f32, f32) { [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (15/10) [INFO] [stdout] --> src/layout/label_placement.rs:3367:1 [INFO] [stdout] | [INFO] [stdout] 3367 | / fn edge_endpoint_label_position_with_avoid( [INFO] [stdout] 3368 | | edge: &EdgeLayout, [INFO] [stdout] 3369 | | edge_idx: usize, [INFO] [stdout] 3370 | | start: bool, [INFO] [stdout] ... | [INFO] [stdout] 3382 | | bounds: Option<(f32, f32)>, [INFO] [stdout] 3383 | | ) -> Option<(f32, f32)> { [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/layout/ranking.rs:161:13 [INFO] [stdout] | [INFO] [stdout] 161 | bucket: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 161 - bucket: &mut Vec, [INFO] [stdout] 161 + bucket: &mut [String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/layout/ranking.rs:297:20 [INFO] [stdout] | [INFO] [stdout] 297 | if best.as_ref().map_or(true, |(bk, _)| key < *bk) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 297 - if best.as_ref().map_or(true, |(bk, _)| key < *bk) { [INFO] [stdout] 297 + if best.as_ref().is_none_or(|(bk, _)| key < *bk) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/layout/routing.rs:1316:29 [INFO] [stdout] | [INFO] [stdout] 1316 | && (!occupancy.is_some() || score == best_score) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `occupancy.is_none()` [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: this boolean expression can be simplified [INFO] [stdout] --> src/layout/routing.rs:1351:29 [INFO] [stdout] | [INFO] [stdout] 1351 | && (!occupancy.is_some() || score == best_score) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `occupancy.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `(num_events - 1)` is never smaller than `0` and has therefore no effect [INFO] [stdout] --> src/layout/timeline.rs:19:43 [INFO] [stdout] | [INFO] [stdout] 19 | num_events as f32 * event_width + (num_events - 1).max(0) as f32 * event_spacing; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(num_events - 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_min_or_max [INFO] [stdout] = note: `#[warn(clippy::unnecessary_min_or_max)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/layout/mod.rs:1307:28 [INFO] [stdout] | [INFO] [stdout] 1307 | if let Some(metrics) = stage_metrics.as_deref_mut() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `stage_metrics` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] = note: `#[warn(clippy::needless_option_as_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/layout/mod.rs:1418:22 [INFO] [stdout] | [INFO] [stdout] 1418 | label_dummy_ids: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 1418 - label_dummy_ids: &mut Vec>, [INFO] [stdout] 1418 + label_dummy_ids: &mut [Option], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:1641:13 [INFO] [stdout] | [INFO] [stdout] 1641 | / if let Some(&orig_idx) = original_edge_indices.get(idx) { [INFO] [stdout] 1642 | | if orig_idx < label_dummy_ids.len() { [INFO] [stdout] 1643 | | label_dummy_ids[orig_idx] = Some(dummy_id.clone()); [INFO] [stdout] 1644 | | } [INFO] [stdout] 1645 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1641 ~ if let Some(&orig_idx) = original_edge_indices.get(idx) [INFO] [stdout] 1642 ~ && orig_idx < label_dummy_ids.len() { [INFO] [stdout] 1643 | label_dummy_ids[orig_idx] = Some(dummy_id.clone()); [INFO] [stdout] 1644 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:1670:9 [INFO] [stdout] | [INFO] [stdout] 1670 | / if let Some(&orig_idx) = original_edge_indices.get(idx) { [INFO] [stdout] 1671 | | if let Some(Some(dummy_id)) = label_dummy_ids.get(orig_idx) { [INFO] [stdout] 1672 | | label_dummy_at_rank.insert(idx, (label_rank, dummy_id.clone())); [INFO] [stdout] 1673 | | } [INFO] [stdout] 1674 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1670 ~ if let Some(&orig_idx) = original_edge_indices.get(idx) [INFO] [stdout] 1671 ~ && let Some(Some(dummy_id)) = label_dummy_ids.get(orig_idx) { [INFO] [stdout] 1672 | label_dummy_at_rank.insert(idx, (label_rank, dummy_id.clone())); [INFO] [stdout] 1673 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:1975:9 [INFO] [stdout] | [INFO] [stdout] 1975 | / if let Some(anchor_id) = subgraph_anchor_id(sub, nodes) { [INFO] [stdout] 1976 | | if nodes.contains_key(anchor_id) { [INFO] [stdout] 1977 | | node_group.insert(anchor_id.to_string(), group_idx); [INFO] [stdout] 1978 | | } [INFO] [stdout] 1979 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1975 ~ if let Some(anchor_id) = subgraph_anchor_id(sub, nodes) [INFO] [stdout] 1976 ~ && nodes.contains_key(anchor_id) { [INFO] [stdout] 1977 | node_group.insert(anchor_id.to_string(), group_idx); [INFO] [stdout] 1978 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:2023:9 [INFO] [stdout] | [INFO] [stdout] 2023 | / if let (Some(a), Some(b)) = (from_group, to_group) { [INFO] [stdout] 2024 | | if a != b { [INFO] [stdout] 2025 | | inter_group_edges += 1; [INFO] [stdout] 2026 | | let (min_g, max_g) = if a < b { (*a, *b) } else { (*b, *a) }; [INFO] [stdout] ... | [INFO] [stdout] 2031 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2023 ~ if let (Some(a), Some(b)) = (from_group, to_group) [INFO] [stdout] 2024 ~ && a != b { [INFO] [stdout] 2025 | inter_group_edges += 1; [INFO] [stdout] ... [INFO] [stdout] 2029 | *group_degree.entry(*b).or_insert(0) += 1; [INFO] [stdout] 2030 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/layout/mod.rs:2187:28 [INFO] [stdout] | [INFO] [stdout] 2187 | let cols = (groups.len() + rows - 1) / rows; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `groups.len().div_ceil(rows)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:3014:13 [INFO] [stdout] | [INFO] [stdout] 3014 | / if sub_a.nodes.iter().any(|n| n == b_id) [INFO] [stdout] 3015 | | || sub_a.nodes.iter().any(|n| n == &sub_b.label) [INFO] [stdout] 3016 | | { [INFO] [stdout] 3017 | | if parent_of[j].is_none() { [INFO] [stdout] ... | [INFO] [stdout] 3020 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 3014 ~ if (sub_a.nodes.iter().any(|n| n == b_id) [INFO] [stdout] 3015 ~ || sub_a.nodes.iter().any(|n| n == &sub_b.label) [INFO] [stdout] 3016 ~ || sub_a.nodes.iter().any(|n| n == &sub_b.label)) [INFO] [stdout] 3017 | { [INFO] [stdout] 3018 ~ && parent_of[j].is_none() { [INFO] [stdout] 3019 | parent_of[j] = Some(i); [INFO] [stdout] 3020 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:4590:9 [INFO] [stdout] | [INFO] [stdout] 4590 | / if let Some(prev) = prev_max { [INFO] [stdout] 4591 | | if min_main < prev { [INFO] [stdout] 4592 | | return; [INFO] [stdout] 4593 | | } [INFO] [stdout] 4594 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 4590 ~ if let Some(prev) = prev_max [INFO] [stdout] 4591 ~ && min_main < prev { [INFO] [stdout] 4592 | return; [INFO] [stdout] 4593 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/layout/mod.rs:4619:9 [INFO] [stdout] | [INFO] [stdout] 4619 | / if let Some(anchor_id) = bound.anchor_id.as_deref() { [INFO] [stdout] 4620 | | if let Some(node) = nodes.get_mut(anchor_id) { [INFO] [stdout] 4621 | | if horizontal { [INFO] [stdout] 4622 | | node.y += delta; [INFO] [stdout] ... | [INFO] [stdout] 4627 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 4619 ~ if let Some(anchor_id) = bound.anchor_id.as_deref() [INFO] [stdout] 4620 ~ && let Some(node) = nodes.get_mut(anchor_id) { [INFO] [stdout] 4621 | if horizontal { [INFO] [stdout] ... [INFO] [stdout] 4625 | } [INFO] [stdout] 4626 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/layout/mod.rs:4687:12 [INFO] [stdout] | [INFO] [stdout] 4687 | if comp.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!comp.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parser.rs:1859:13 [INFO] [stdout] | [INFO] [stdout] 1859 | / if let Some(score) = score { [INFO] [stdout] 1860 | | if let Some(node) = graph.nodes.get_mut(&node_id) { [INFO] [stdout] 1861 | | node.value = Some(score); [INFO] [stdout] 1862 | | } [INFO] [stdout] 1863 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1859 ~ if let Some(score) = score [INFO] [stdout] 1860 ~ && let Some(node) = graph.nodes.get_mut(&node_id) { [INFO] [stdout] 1861 | node.value = Some(score); [INFO] [stdout] 1862 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parser.rs:3752:21 [INFO] [stdout] | [INFO] [stdout] 3752 | / if let Some(icon_type) = icon { [INFO] [stdout] 3753 | | if let Some(node) = graph.nodes.get_mut(&id) { [INFO] [stdout] 3754 | | node.icon = Some(icon_type); [INFO] [stdout] 3755 | | } [INFO] [stdout] 3756 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 3752 ~ if let Some(icon_type) = icon [INFO] [stdout] 3753 ~ && let Some(node) = graph.nodes.get_mut(&id) { [INFO] [stdout] 3754 | node.icon = Some(icon_type); [INFO] [stdout] 3755 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/parser.rs:3813:9 [INFO] [stdout] | [INFO] [stdout] 3813 | / if let Some(paren_end) = id_part.find(')') { [INFO] [stdout] 3814 | | Some(id_part[paren_start + 1..paren_end].trim().to_string()) [INFO] [stdout] 3815 | | } else { [INFO] [stdout] 3816 | | None [INFO] [stdout] 3817 | | } [INFO] [stdout] | |_________^ help: try: `id_part.find(')').map(|paren_end| id_part[paren_start + 1..paren_end].trim().to_string())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parser.rs:4533:42 [INFO] [stdout] | [INFO] [stdout] 4533 | for id in fork_ids.into_iter().chain(join_ids.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:510:11 [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] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 4533 - for id in fork_ids.into_iter().chain(join_ids.into_iter()) { [INFO] [stdout] 4533 + for id in fork_ids.into_iter().chain(join_ids) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/parser.rs:5114:23 [INFO] [stdout] | [INFO] [stdout] 5114 | fn split_on_ampersand<'a>(input: &'a str) -> Vec<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 5114 - fn split_on_ampersand<'a>(input: &'a str) -> Vec<&'a str> { [INFO] [stdout] 5114 + fn split_on_ampersand(input: &str) -> Vec<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/parser.rs:5954:9 [INFO] [stdout] | [INFO] [stdout] 5954 | assert_eq!(parsed.graph.edges[2].arrow_start, true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 5954 - assert_eq!(parsed.graph.edges[2].arrow_start, true); [INFO] [stdout] 5954 + assert!(parsed.graph.edges[2].arrow_start); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/parser.rs:5955:9 [INFO] [stdout] | [INFO] [stdout] 5955 | assert_eq!(parsed.graph.edges[2].arrow_end, true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 5955 - assert_eq!(parsed.graph.edges[2].arrow_end, true); [INFO] [stdout] 5955 + assert!(parsed.graph.edges[2].arrow_end); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/parser.rs:5956:9 [INFO] [stdout] | [INFO] [stdout] 5956 | assert_eq!(parsed.graph.edges[3].directed, false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 5956 - assert_eq!(parsed.graph.edges[3].directed, false); [INFO] [stdout] 5956 + assert!(!parsed.graph.edges[3].directed); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/render.rs:999:17 [INFO] [stdout] | [INFO] [stdout] 999 | / if edge.arrow_start { [INFO] [stdout] 1000 | | if let Some(point) = edge.points.first().copied() { [INFO] [stdout] 1001 | | let angle = edge_endpoint_angle(&edge.points, true); [INFO] [stdout] 1002 | | overlay_arrows.push((true, point, angle, stroke.clone(), stroke_width)); [INFO] [stdout] 1003 | | } [INFO] [stdout] 1004 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 999 ~ if edge.arrow_start [INFO] [stdout] 1000 ~ && let Some(point) = edge.points.first().copied() { [INFO] [stdout] 1001 | let angle = edge_endpoint_angle(&edge.points, true); [INFO] [stdout] 1002 | overlay_arrows.push((true, point, angle, stroke.clone(), stroke_width)); [INFO] [stdout] 1003 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/render.rs:1005:17 [INFO] [stdout] | [INFO] [stdout] 1005 | / if edge.arrow_end { [INFO] [stdout] 1006 | | if let Some(point) = edge.points.last().copied() { [INFO] [stdout] 1007 | | let angle = edge_endpoint_angle(&edge.points, false); [INFO] [stdout] 1008 | | overlay_arrows.push((false, point, angle, stroke.clone(), stroke_width)); [INFO] [stdout] 1009 | | } [INFO] [stdout] 1010 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1005 ~ if edge.arrow_end [INFO] [stdout] 1006 ~ && let Some(point) = edge.points.last().copied() { [INFO] [stdout] 1007 | let angle = edge_endpoint_angle(&edge.points, false); [INFO] [stdout] 1008 | overlay_arrows.push((false, point, angle, stroke.clone(), stroke_width)); [INFO] [stdout] 1009 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/render.rs:5240:9 [INFO] [stdout] | [INFO] [stdout] 5240 | / if !attr.data_type.is_empty() { [INFO] [stdout] 5241 | | if let Some(width) = [INFO] [stdout] 5242 | | text_metrics::measure_text_width(&attr.data_type, font_size, &theme.font_family) [INFO] [stdout] ... | [INFO] [stdout] 5246 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 5240 ~ if !attr.data_type.is_empty() [INFO] [stdout] 5241 ~ && let Some(width) = [INFO] [stdout] 5242 | text_metrics::measure_text_width(&attr.data_type, font_size, &theme.font_family) [INFO] [stdout] 5243 | { [INFO] [stdout] 5244 | max_type_width = max_type_width.max(width); [INFO] [stdout] 5245 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 13s [INFO] running `Command { std: "docker" "inspect" "26bc15598c6fb3e0116fbc638ae825e1d278a2deca3d94b943e2da698d517dc2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "26bc15598c6fb3e0116fbc638ae825e1d278a2deca3d94b943e2da698d517dc2", kill_on_drop: false }` [INFO] [stdout] 26bc15598c6fb3e0116fbc638ae825e1d278a2deca3d94b943e2da698d517dc2