[INFO] cloning repository https://github.com/iantbutler01/acdc_rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/iantbutler01/acdc_rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiantbutler01%2Facdc_rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiantbutler01%2Facdc_rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 2f94cdd80aa70ed5f397f91fd5d2744e7dd27950 [INFO] linting iantbutler01/acdc_rs against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiantbutler01%2Facdc_rs" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/iantbutler01/acdc_rs [INFO] finished tweaking git repo https://github.com/iantbutler01/acdc_rs [INFO] tweaked toml for git repo https://github.com/iantbutler01/acdc_rs written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/iantbutler01/acdc_rs 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/iantbutler01/acdc_rs 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] Downloading crates ... [INFO] [stderr] Downloaded pyo3-build-config v0.19.2 [INFO] [stderr] Downloaded pyo3-macros-backend v0.19.2 [INFO] [stderr] Downloaded pyo3-macros v0.19.2 [INFO] [stderr] Downloaded pyo3-ffi v0.19.2 [INFO] [stderr] Downloaded pyo3 v0.19.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 643350417fd1b61077eba6623b2b28eff6838e31f4b7cf657ac856aadc9eda25 [INFO] running `Command { std: "docker" "start" "-a" "643350417fd1b61077eba6623b2b28eff6838e31f4b7cf657ac856aadc9eda25", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "643350417fd1b61077eba6623b2b28eff6838e31f4b7cf657ac856aadc9eda25", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "643350417fd1b61077eba6623b2b28eff6838e31f4b7cf657ac856aadc9eda25", kill_on_drop: false }` [INFO] [stdout] 643350417fd1b61077eba6623b2b28eff6838e31f4b7cf657ac856aadc9eda25 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 70fc2cdb0a8512639754c9f15f4641869148872e8b5e293ba776a2bfba222864 [INFO] running `Command { std: "docker" "start" "-a" "70fc2cdb0a8512639754c9f15f4641869148872e8b5e293ba776a2bfba222864", kill_on_drop: false }` [INFO] [stderr] Compiling semver v1.0.26 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling memchr v2.7.4 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Checking smallvec v1.15.0 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling syn v2.0.101 [INFO] [stderr] Compiling pyo3-build-config v0.19.2 [INFO] [stderr] Checking hashbrown v0.15.3 [INFO] [stderr] Checking fixedbitset v0.4.2 [INFO] [stderr] Checking unindent v0.1.11 [INFO] [stderr] Compiling indoc v1.0.9 [INFO] [stderr] Compiling glob v0.3.2 [INFO] [stderr] Compiling relative-path v1.9.3 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling rstest_macros v0.18.2 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Compiling pyo3-ffi v0.19.2 [INFO] [stderr] Compiling pyo3 v0.19.2 [INFO] [stderr] Checking petgraph v0.6.5 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Compiling pyo3-macros-backend v0.19.2 [INFO] [stderr] Compiling regex v1.11.1 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling pyo3-macros v0.19.2 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking rstest v0.18.2 [INFO] [stderr] Checking serde_json v1.0.140 [INFO] [stderr] Checking acdc_rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/output_format.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/directory_pattern.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PathBuf` [INFO] [stdout] --> src/patterns/directory_pattern.rs:4:23 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/go_patterns.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/patterns/go_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/java_patterns.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/patterns/java_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/rust_patterns.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/patterns/rust_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/lib.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | use serde_json; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/output_format.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `addr_of` [INFO] [stdout] --> src/lib.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | create_exception!(acdc_rs, AcdcError, PyException); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `$crate::pyobject_native_type_info` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `$crate::pyobject_native_type_info` may come from an old version of the `pyo3` crate, try updating your dependency with `cargo update -p pyo3` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `$crate::pyobject_native_type_info` which comes from the expansion of the macro `create_exception` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `addr_of` [INFO] [stdout] --> src/lib.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | create_exception!(acdc_rs, AcdcError, PyException); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `$crate::pyobject_native_type_info` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `$crate::pyobject_native_type_info` may come from an old version of the `pyo3` crate, try updating your dependency with `cargo update -p pyo3` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the macro `$crate::pyobject_native_type_info` which comes from the expansion of the macro `create_exception` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/directory_pattern.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PathBuf` [INFO] [stdout] --> src/patterns/directory_pattern.rs:4:23 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/go_patterns.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/patterns/go_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/java_patterns.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/patterns/java_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::graph::NodeIndex` [INFO] [stdout] --> src/patterns/rust_patterns.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use petgraph::graph::NodeIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/patterns/rust_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/lib.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | use serde_json; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `addr_of` [INFO] [stdout] --> src/lib.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | create_exception!(acdc_rs, AcdcError, PyException); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `$crate::pyobject_native_type_info` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `$crate::pyobject_native_type_info` may come from an old version of the `pyo3` crate, try updating your dependency with `cargo update -p pyo3` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `$crate::pyobject_native_type_info` which comes from the expansion of the macro `create_exception` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `addr_of` [INFO] [stdout] --> src/lib.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | create_exception!(acdc_rs, AcdcError, PyException); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `$crate::pyobject_native_type_info` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `$crate::pyobject_native_type_info` may come from an old version of the `pyo3` crate, try updating your dependency with `cargo update -p pyo3` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the macro `$crate::pyobject_native_type_info` which comes from the expansion of the macro `create_exception` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::visit::EdgeRef` [INFO] [stdout] --> src/output_format.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use petgraph::visit::EdgeRef; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::visit::EdgeRef` [INFO] [stdout] --> src/patterns/directory_pattern.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use petgraph::visit::EdgeRef; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::visit::EdgeRef` [INFO] [stdout] --> src/output_format.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use petgraph::visit::EdgeRef; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::visit::EdgeRef` [INFO] [stdout] --> src/patterns/directory_pattern.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use petgraph::visit::EdgeRef; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `graph` [INFO] [stdout] --> src/output_format.rs:164:30 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn from_system_graph(graph: &SystemGraph) -> Self { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_graph` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:393:13 [INFO] [stdout] | [INFO] [stdout] 393 | let mut remaining: Vec = nodes [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `subcluster_counter` is never read [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:400:13 [INFO] [stdout] | [INFO] [stdout] 400 | subcluster_counter += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:505:13 [INFO] [stdout] | [INFO] [stdout] 505 | let mut remaining: Vec = nodes [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `subcluster_counter` is never read [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:512:13 [INFO] [stdout] | [INFO] [stdout] 512 | subcluster_counter += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `is_mutual_cycle` is assigned to, but never used [INFO] [stdout] --> src/patterns/subgraph_dominator.rs:155:13 [INFO] [stdout] | [INFO] [stdout] 155 | let mut is_mutual_cycle = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_is_mutual_cycle` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_mutual_cycle` is never read [INFO] [stdout] --> src/patterns/subgraph_dominator.rs:188:17 [INFO] [stdout] | [INFO] [stdout] 188 | is_mutual_cycle = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `graph` [INFO] [stdout] --> src/output_format.rs:164:30 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn from_system_graph(graph: &SystemGraph) -> Self { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_graph` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/acdc.rs:90:16 [INFO] [stdout] | [INFO] [stdout] 90 | if !system_graph [INFO] [stdout] | ________________^ [INFO] [stdout] 91 | | .get_node_data(node_id_from_orig) [INFO] [stdout] 92 | | .is_some_and(|d| !d.is_cluster()) [INFO] [stdout] | |_________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 90 ~ if system_graph [INFO] [stdout] 91 + .get_node_data(node_id_from_orig).is_none_or(|d| d.is_cluster()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:393:13 [INFO] [stdout] | [INFO] [stdout] 393 | let mut remaining: Vec = nodes [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `subcluster_counter` is never read [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:400:13 [INFO] [stdout] | [INFO] [stdout] 400 | subcluster_counter += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:505:13 [INFO] [stdout] | [INFO] [stdout] 505 | let mut remaining: Vec = nodes [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `subcluster_counter` is never read [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:512:13 [INFO] [stdout] | [INFO] [stdout] 512 | subcluster_counter += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/graph_types.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | / pub fn from_str(s: &str) -> Self { [INFO] [stdout] 25 | | match s.to_uppercase().as_str() { [INFO] [stdout] 26 | | "FILE" => NodeType::File, [INFO] [stdout] 27 | | "MODULE" => NodeType::Module, [INFO] [stdout] ... | [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/graph_types.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 91 | / pub fn from_str(s: &str) -> Self { [INFO] [stdout] 92 | | match s.to_uppercase().as_str() { [INFO] [stdout] 93 | | "CALLS" | "CALL" => EdgeType::Calls, [INFO] [stdout] 94 | | "IMPORTS" | "USES" | "INCLUDES" => EdgeType::Imports, [INFO] [stdout] ... | [INFO] [stdout] 104 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `is_mutual_cycle` is assigned to, but never used [INFO] [stdout] --> src/patterns/subgraph_dominator.rs:155:13 [INFO] [stdout] | [INFO] [stdout] 155 | let mut is_mutual_cycle = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_is_mutual_cycle` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_mutual_cycle` is never read [INFO] [stdout] --> src/patterns/subgraph_dominator.rs:188:17 [INFO] [stdout] | [INFO] [stdout] 188 | is_mutual_cycle = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/acdc.rs:90:16 [INFO] [stdout] | [INFO] [stdout] 90 | if !system_graph [INFO] [stdout] | ________________^ [INFO] [stdout] 91 | | .get_node_data(node_id_from_orig) [INFO] [stdout] 92 | | .is_some_and(|d| !d.is_cluster()) [INFO] [stdout] | |_________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 90 ~ if system_graph [INFO] [stdout] 91 + .get_node_data(node_id_from_orig).is_none_or(|d| d.is_cluster()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/patterns/cluster_last.rs:121:24 [INFO] [stdout] | [INFO] [stdout] 121 | if let Ok(_) = system_graph.move_node_to_cluster(node_id, cluster_id) { [INFO] [stdout] | -------^^^^^--------------------------------------------------------- help: try: `if system_graph.move_node_to_cluster(node_id, cluster_id).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/directory_pattern.rs:79:30 [INFO] [stdout] | [INFO] [stdout] 79 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/go_patterns.rs:49:38 [INFO] [stdout] | [INFO] [stdout] 49 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/graph_types.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | / pub fn from_str(s: &str) -> Self { [INFO] [stdout] 25 | | match s.to_uppercase().as_str() { [INFO] [stdout] 26 | | "FILE" => NodeType::File, [INFO] [stdout] 27 | | "MODULE" => NodeType::Module, [INFO] [stdout] ... | [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/go_patterns.rs:139:26 [INFO] [stdout] | [INFO] [stdout] 139 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/java_patterns.rs:49:38 [INFO] [stdout] | [INFO] [stdout] 49 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/graph_types.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 91 | / pub fn from_str(s: &str) -> Self { [INFO] [stdout] 92 | | match s.to_uppercase().as_str() { [INFO] [stdout] 93 | | "CALLS" | "CALL" => EdgeType::Calls, [INFO] [stdout] 94 | | "IMPORTS" | "USES" | "INCLUDES" => EdgeType::Imports, [INFO] [stdout] ... | [INFO] [stdout] 104 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/java_patterns.rs:141:26 [INFO] [stdout] | [INFO] [stdout] 141 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/js_patterns.rs:47:58 [INFO] [stdout] | [INFO] [stdout] 47 | ... module_map.entry(module).or_insert_with(Vec::new).push(node_id); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/patterns/js_patterns.rs:219:22 [INFO] [stdout] | [INFO] [stdout] 219 | (node_data.name.chars().next().map_or(false, |c| c.is_uppercase()) && [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_some_and` instead [INFO] [stdout] | [INFO] [stdout] 219 - (node_data.name.chars().next().map_or(false, |c| c.is_uppercase()) && [INFO] [stdout] 219 + (node_data.name.chars().next().is_some_and(|c| c.is_uppercase()) && [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/patterns/js_patterns.rs:225:21 [INFO] [stdout] | [INFO] [stdout] 225 | / node_data.path.as_ref().map_or(false, |p| { [INFO] [stdout] 226 | | let p_str = p.to_string_lossy(); [INFO] [stdout] 227 | | p_str.ends_with(".jsx") || p_str.ends_with(".tsx") [INFO] [stdout] 228 | | }); [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] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 225 - node_data.path.as_ref().map_or(false, |p| { [INFO] [stdout] 225 + node_data.path.as_ref().is_some_and(|p| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/js_patterns.rs:254:36 [INFO] [stdout] | [INFO] [stdout] 254 | ... .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's keys [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:206:26 [INFO] [stdout] | [INFO] [stdout] 206 | for (file, _) in &file_names { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 206 - for (file, _) in &file_names { [INFO] [stdout] 206 + for file in file_names.keys() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:207:32 [INFO] [stdout] | [INFO] [stdout] 207 | if let Some(ext) = file.split('.').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 207 - if let Some(ext) = file.split('.').last() { [INFO] [stdout] 207 + if let Some(ext) = file.split('.').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:222:14 [INFO] [stdout] | [INFO] [stdout] 222 | .map(|(node_type, count)| { [INFO] [stdout] | ______________^ [INFO] [stdout] 223 | | if *count > nodes.len() / 2 { [INFO] [stdout] 224 | | Some(node_type.clone()) [INFO] [stdout] 225 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 228 | | }) [INFO] [stdout] 229 | | .flatten(); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] help: try replacing `map` with `and_then` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 222 ~ .and_then(|(node_type, count)| { [INFO] [stdout] 223 + if *count > nodes.len() / 2 { [INFO] [stdout] 224 + Some(node_type.clone()) [INFO] [stdout] 225 + } else { [INFO] [stdout] 226 + None [INFO] [stdout] 227 + } [INFO] [stdout] 228 ~ }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:270:20 [INFO] [stdout] | [INFO] [stdout] 270 | if nodes.iter().any(|&id| id == target_id) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `nodes.contains(&target_id)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:366:29 [INFO] [stdout] | [INFO] [stdout] 366 | / ... path.to_string_lossy() [INFO] [stdout] 367 | | ... .split('/') [INFO] [stdout] 368 | | ... .last() [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 368 - .last() [INFO] [stdout] 368 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:478:29 [INFO] [stdout] | [INFO] [stdout] 478 | / ... path.to_string_lossy() [INFO] [stdout] 479 | | ... .split('/') [INFO] [stdout] 480 | | ... .last() [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 480 - .last() [INFO] [stdout] 480 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/python_patterns.rs:97:26 [INFO] [stdout] | [INFO] [stdout] 97 | .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/patterns/python_patterns.rs:192:9 [INFO] [stdout] | [INFO] [stdout] 192 | / central_importers [INFO] [stdout] 193 | | .sort_by(|(_, related1), (_, related2)| related2.len().cmp(&related1.len())); [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] 193 - .sort_by(|(_, related1), (_, related2)| related2.len().cmp(&related1.len())); [INFO] [stdout] 193 + .sort_by_key(|(_, related2)| std::cmp::Reverse(related2.len())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/patterns/rust_patterns.rs:44:28 [INFO] [stdout] | [INFO] [stdout] 44 | if components.last().map_or(false, |&last| last == "mod.rs") { [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] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 44 - if components.last().map_or(false, |&last| last == "mod.rs") { [INFO] [stdout] 44 + if components.last().is_some_and(|&last| last == "mod.rs") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/rust_patterns.rs:66:34 [INFO] [stdout] | [INFO] [stdout] 66 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/rust_patterns.rs:156:26 [INFO] [stdout] | [INFO] [stdout] 156 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/patterns/subgraph_dominator.rs:74:21 [INFO] [stdout] | [INFO] [stdout] 74 | / if is_dominated { [INFO] [stdout] 75 | | if covered_set.insert(node_to_check) { [INFO] [stdout] 76 | | changed_in_iteration = true; [INFO] [stdout] 77 | | } [INFO] [stdout] 78 | | } [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] 74 ~ if is_dominated [INFO] [stdout] 75 ~ && covered_set.insert(node_to_check) { [INFO] [stdout] 76 | changed_in_iteration = true; [INFO] [stdout] 77 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/patterns/cluster_last.rs:121:24 [INFO] [stdout] | [INFO] [stdout] 121 | if let Ok(_) = system_graph.move_node_to_cluster(node_id, cluster_id) { [INFO] [stdout] | -------^^^^^--------------------------------------------------------- help: try: `if system_graph.move_node_to_cluster(node_id, cluster_id).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/directory_pattern.rs:79:30 [INFO] [stdout] | [INFO] [stdout] 79 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SystemGraph` [INFO] [stdout] --> src/system_graph.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | / pub fn new() -> Self { [INFO] [stdout] 15 | | SystemGraph { [INFO] [stdout] 16 | | graph: DiGraph::new(), [INFO] [stdout] 17 | | original_id_to_node_id: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 20 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 13 + impl Default for SystemGraph { [INFO] [stdout] 14 + fn default() -> Self { [INFO] [stdout] 15 + Self::new() [INFO] [stdout] 16 + } [INFO] [stdout] 17 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/system_graph.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 23 | let node_id = self.graph.add_node(data); [INFO] [stdout] | ---------------------------------------- unnecessary `let` binding [INFO] [stdout] 24 | node_id [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 23 ~ [INFO] [stdout] 24 ~ self.graph.add_node(data) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/go_patterns.rs:49:38 [INFO] [stdout] | [INFO] [stdout] 49 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/go_patterns.rs:139:26 [INFO] [stdout] | [INFO] [stdout] 139 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/java_patterns.rs:49:38 [INFO] [stdout] | [INFO] [stdout] 49 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/java_patterns.rs:141:26 [INFO] [stdout] | [INFO] [stdout] 141 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/js_patterns.rs:47:58 [INFO] [stdout] | [INFO] [stdout] 47 | ... module_map.entry(module).or_insert_with(Vec::new).push(node_id); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/patterns/js_patterns.rs:219:22 [INFO] [stdout] | [INFO] [stdout] 219 | (node_data.name.chars().next().map_or(false, |c| c.is_uppercase()) && [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_some_and` instead [INFO] [stdout] | [INFO] [stdout] 219 - (node_data.name.chars().next().map_or(false, |c| c.is_uppercase()) && [INFO] [stdout] 219 + (node_data.name.chars().next().is_some_and(|c| c.is_uppercase()) && [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/patterns/js_patterns.rs:225:21 [INFO] [stdout] | [INFO] [stdout] 225 | / node_data.path.as_ref().map_or(false, |p| { [INFO] [stdout] 226 | | let p_str = p.to_string_lossy(); [INFO] [stdout] 227 | | p_str.ends_with(".jsx") || p_str.ends_with(".tsx") [INFO] [stdout] 228 | | }); [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] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 225 - node_data.path.as_ref().map_or(false, |p| { [INFO] [stdout] 225 + node_data.path.as_ref().is_some_and(|p| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/js_patterns.rs:254:36 [INFO] [stdout] | [INFO] [stdout] 254 | ... .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's keys [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:206:26 [INFO] [stdout] | [INFO] [stdout] 206 | for (file, _) in &file_names { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 206 - for (file, _) in &file_names { [INFO] [stdout] 206 + for file in file_names.keys() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:207:32 [INFO] [stdout] | [INFO] [stdout] 207 | if let Some(ext) = file.split('.').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 207 - if let Some(ext) = file.split('.').last() { [INFO] [stdout] 207 + if let Some(ext) = file.split('.').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:222:14 [INFO] [stdout] | [INFO] [stdout] 222 | .map(|(node_type, count)| { [INFO] [stdout] | ______________^ [INFO] [stdout] 223 | | if *count > nodes.len() / 2 { [INFO] [stdout] 224 | | Some(node_type.clone()) [INFO] [stdout] 225 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 228 | | }) [INFO] [stdout] 229 | | .flatten(); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] help: try replacing `map` with `and_then` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 222 ~ .and_then(|(node_type, count)| { [INFO] [stdout] 223 + if *count > nodes.len() / 2 { [INFO] [stdout] 224 + Some(node_type.clone()) [INFO] [stdout] 225 + } else { [INFO] [stdout] 226 + None [INFO] [stdout] 227 + } [INFO] [stdout] 228 ~ }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:270:20 [INFO] [stdout] | [INFO] [stdout] 270 | if nodes.iter().any(|&id| id == target_id) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `nodes.contains(&target_id)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:366:29 [INFO] [stdout] | [INFO] [stdout] 366 | / ... path.to_string_lossy() [INFO] [stdout] 367 | | ... .split('/') [INFO] [stdout] 368 | | ... .last() [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 368 - .last() [INFO] [stdout] 368 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/patterns/large_cluster_breakdown.rs:478:29 [INFO] [stdout] | [INFO] [stdout] 478 | / ... path.to_string_lossy() [INFO] [stdout] 479 | | ... .split('/') [INFO] [stdout] 480 | | ... .last() [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 480 - .last() [INFO] [stdout] 480 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/python_patterns.rs:97:26 [INFO] [stdout] | [INFO] [stdout] 97 | .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/patterns/python_patterns.rs:192:9 [INFO] [stdout] | [INFO] [stdout] 192 | / central_importers [INFO] [stdout] 193 | | .sort_by(|(_, related1), (_, related2)| related2.len().cmp(&related1.len())); [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] 193 - .sort_by(|(_, related1), (_, related2)| related2.len().cmp(&related1.len())); [INFO] [stdout] 193 + .sort_by_key(|(_, related2)| std::cmp::Reverse(related2.len())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/patterns/rust_patterns.rs:44:28 [INFO] [stdout] | [INFO] [stdout] 44 | if components.last().map_or(false, |&last| last == "mod.rs") { [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] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 44 - if components.last().map_or(false, |&last| last == "mod.rs") { [INFO] [stdout] 44 + if components.last().is_some_and(|&last| last == "mod.rs") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/rust_patterns.rs:66:34 [INFO] [stdout] | [INFO] [stdout] 66 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/patterns/rust_patterns.rs:156:26 [INFO] [stdout] | [INFO] [stdout] 156 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/patterns/subgraph_dominator.rs:74:21 [INFO] [stdout] | [INFO] [stdout] 74 | / if is_dominated { [INFO] [stdout] 75 | | if covered_set.insert(node_to_check) { [INFO] [stdout] 76 | | changed_in_iteration = true; [INFO] [stdout] 77 | | } [INFO] [stdout] 78 | | } [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] 74 ~ if is_dominated [INFO] [stdout] 75 ~ && covered_set.insert(node_to_check) { [INFO] [stdout] 76 | changed_in_iteration = true; [INFO] [stdout] 77 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SystemGraph` [INFO] [stdout] --> src/system_graph.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | / pub fn new() -> Self { [INFO] [stdout] 15 | | SystemGraph { [INFO] [stdout] 16 | | graph: DiGraph::new(), [INFO] [stdout] 17 | | original_id_to_node_id: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 20 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 13 + impl Default for SystemGraph { [INFO] [stdout] 14 + fn default() -> Self { [INFO] [stdout] 15 + Self::new() [INFO] [stdout] 16 + } [INFO] [stdout] 17 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/system_graph.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 23 | let node_id = self.graph.add_node(data); [INFO] [stdout] | ---------------------------------------- unnecessary `let` binding [INFO] [stdout] 24 | node_id [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 23 ~ [INFO] [stdout] 24 ~ self.graph.add_node(data) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pretty_assertions::assert_eq` [INFO] [stdout] --> tests/patterns/test_core_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use pretty_assertions::assert_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rstest::rstest` [INFO] [stdout] --> tests/patterns/test_core_patterns.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use rstest::rstest; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `assert_cluster_size`, `assert_node_in_cluster`, and `assert_node_not_in_cluster` [INFO] [stdout] --> tests/patterns/test_core_patterns.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | assert_cluster_size, assert_node_in_cluster, assert_node_not_in_cluster, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pretty_assertions::assert_eq` [INFO] [stdout] --> tests/patterns/test_java_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use pretty_assertions::assert_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rstest::rstest` [INFO] [stdout] --> tests/patterns/test_java_patterns.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use rstest::rstest; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `assert_node_in_cluster` [INFO] [stdout] --> tests/patterns/test_java_patterns.rs:8:26 [INFO] [stdout] | [INFO] [stdout] 8 | assert_cluster_size, assert_node_in_cluster, assert_node_not_in_cluster, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pretty_assertions::assert_eq` [INFO] [stdout] --> tests/patterns/test_orphan_adoption.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use pretty_assertions::assert_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rstest::rstest` [INFO] [stdout] --> tests/patterns/test_orphan_adoption.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use rstest::rstest; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `assert_node_not_in_cluster` and `assert_nodes_in_same_cluster` [INFO] [stdout] --> tests/patterns/test_orphan_adoption.rs:8:50 [INFO] [stdout] | [INFO] [stdout] 8 | assert_cluster_size, assert_node_in_cluster, assert_node_not_in_cluster, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | assert_nodes_in_same_cluster, TestGraphBuilder, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pretty_assertions::assert_eq` [INFO] [stdout] --> tests/patterns/test_python_patterns.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use pretty_assertions::assert_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rstest::rstest` [INFO] [stdout] --> tests/patterns/test_python_patterns.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use rstest::rstest; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `assert_cluster_size` and `assert_node_in_cluster` [INFO] [stdout] --> tests/patterns/test_python_patterns.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | assert_cluster_size, assert_node_in_cluster, assert_node_not_in_cluster, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pretty_assertions::assert_eq` [INFO] [stdout] --> tests/patterns/test_subgraph_dominator.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use pretty_assertions::assert_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rstest::rstest` [INFO] [stdout] --> tests/patterns/test_subgraph_dominator.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use rstest::rstest; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `assert_node_in_cluster` [INFO] [stdout] --> tests/patterns/test_subgraph_dominator.rs:8:26 [INFO] [stdout] | [INFO] [stdout] 8 | assert_cluster_size, assert_node_in_cluster, assert_node_not_in_cluster, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TestGraphBuilder` [INFO] [stdout] --> tests/test_utils.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn new() -> Self { [INFO] [stdout] 14 | | TestGraphBuilder { [INFO] [stdout] 15 | | system_graph: SystemGraph::new(), [INFO] [stdout] 16 | | node_mapping: std::collections::HashMap::new(), [INFO] [stdout] 17 | | } [INFO] [stdout] 18 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 12 + impl Default for TestGraphBuilder { [INFO] [stdout] 13 + fn default() -> Self { [INFO] [stdout] 14 + Self::new() [INFO] [stdout] 15 + } [INFO] [stdout] 16 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> tests/test_utils.rs:28:33 [INFO] [stdout] | [INFO] [stdout] 28 | let path_buf = path.map(|p| PathBuf::from(p)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `PathBuf::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> tests/test_utils.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | assert!(false, "At least one node is not in a cluster"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> tests/test_utils.rs:95:13 [INFO] [stdout] | [INFO] [stdout] 95 | assert!(false, "Node is not in any cluster"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> tests/test_utils.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 120 | assert!(false, "Cluster node not found"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::visit::EdgeRef` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use petgraph::visit::EdgeRef; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `petgraph::visit::EdgeRef` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use petgraph::visit::EdgeRef; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> tests/patterns/test_python_patterns.rs:161:11 [INFO] [stdout] | [INFO] [stdout] 161 | ..Default::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] = note: `#[warn(clippy::needless_update)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> tests/patterns/test_subgraph_dominator.rs:65:11 [INFO] [stdout] | [INFO] [stdout] 65 | ..Default::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TestGraphBuilder` [INFO] [stdout] --> tests/test_utils.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn new() -> Self { [INFO] [stdout] 14 | | TestGraphBuilder { [INFO] [stdout] 15 | | system_graph: SystemGraph::new(), [INFO] [stdout] 16 | | node_mapping: std::collections::HashMap::new(), [INFO] [stdout] 17 | | } [INFO] [stdout] 18 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 12 + impl Default for TestGraphBuilder { [INFO] [stdout] 13 + fn default() -> Self { [INFO] [stdout] 14 + Self::new() [INFO] [stdout] 15 + } [INFO] [stdout] 16 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> tests/test_utils.rs:28:33 [INFO] [stdout] | [INFO] [stdout] 28 | let path_buf = path.map(|p| PathBuf::from(p)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `PathBuf::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> tests/test_utils.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | assert!(false, "At least one node is not in a cluster"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> tests/test_utils.rs:95:13 [INFO] [stdout] | [INFO] [stdout] 95 | assert!(false, "Node is not in any cluster"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> tests/test_utils.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 120 | assert!(false, "Cluster node not found"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.73s [INFO] running `Command { std: "docker" "inspect" "70fc2cdb0a8512639754c9f15f4641869148872e8b5e293ba776a2bfba222864", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "70fc2cdb0a8512639754c9f15f4641869148872e8b5e293ba776a2bfba222864", kill_on_drop: false }` [INFO] [stdout] 70fc2cdb0a8512639754c9f15f4641869148872e8b5e293ba776a2bfba222864