[INFO] updating cached repository StephanHeijl/global-supertrees [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/StephanHeijl/global-supertrees [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/StephanHeijl/global-supertrees" "work/ex/clippy-test-run/sources/stable/gh/StephanHeijl/global-supertrees"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/StephanHeijl/global-supertrees'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/StephanHeijl/global-supertrees" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/StephanHeijl/global-supertrees"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/StephanHeijl/global-supertrees'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 6daceb7fd6152ba353f43af41e100f638990185a [INFO] sha for GitHub repo StephanHeijl/global-supertrees: 6daceb7fd6152ba353f43af41e100f638990185a [INFO] validating manifest of StephanHeijl/global-supertrees on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of StephanHeijl/global-supertrees on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing StephanHeijl/global-supertrees [INFO] finished frobbing StephanHeijl/global-supertrees [INFO] frobbed toml for StephanHeijl/global-supertrees written to work/ex/clippy-test-run/sources/stable/gh/StephanHeijl/global-supertrees/Cargo.toml [INFO] started frobbing StephanHeijl/global-supertrees [INFO] finished frobbing StephanHeijl/global-supertrees [INFO] frobbed toml for StephanHeijl/global-supertrees written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/StephanHeijl/global-supertrees/Cargo.toml [INFO] crate StephanHeijl/global-supertrees has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting StephanHeijl/global-supertrees against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/StephanHeijl/global-supertrees:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] b3d911d70bb51a84f5f02c79ac8f4b167314e9e2cdfeccff09bdb85a24f39847 [INFO] running `"docker" "start" "-a" "b3d911d70bb51a84f5f02c79ac8f4b167314e9e2cdfeccff09bdb85a24f39847"` [INFO] [stderr] Checking itertools v0.7.8 [INFO] [stderr] Checking ndarray v0.11.2 [INFO] [stderr] Checking newick v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:234:13 [INFO] [stderr] | [INFO] [stderr] 234 | leaves: leaves, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `leaves` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:235:13 [INFO] [stderr] | [INFO] [stderr] 235 | branches: branches, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `branches` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | leaf_distances: leaf_distances, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `leaf_distances` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:237:13 [INFO] [stderr] | [INFO] [stderr] 237 | branch_distances: branch_distances, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `branch_distances` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:239:13 [INFO] [stderr] | [INFO] [stderr] 239 | branch_number: branch_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `branch_number` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:234:13 [INFO] [stderr] | [INFO] [stderr] 234 | leaves: leaves, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `leaves` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:235:13 [INFO] [stderr] | [INFO] [stderr] 235 | branches: branches, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `branches` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | leaf_distances: leaf_distances, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `leaf_distances` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:237:13 [INFO] [stderr] | [INFO] [stderr] 237 | branch_distances: branch_distances, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `branch_distances` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree.rs:239:13 [INFO] [stderr] | [INFO] [stderr] 239 | branch_number: branch_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `branch_number` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | return leaves_self == leaves_other; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `leaves_self == leaves_other` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | return Some(current_branch_idx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(current_branch_idx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree.rs:131:9 [INFO] [stderr] | [INFO] [stderr] 131 | children [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree.rs:130:24 [INFO] [stderr] | [INFO] [stderr] 130 | let children = self.build_depth_first_path(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree.rs:138:9 [INFO] [stderr] | [INFO] [stderr] 138 | snapshot_children [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree.rs:137:33 [INFO] [stderr] | [INFO] [stderr] 137 | let snapshot_children = children.iter().map(| x | (x.0.clone(), *x.1) ).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | return (tree, c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(tree, c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tree.rs:222:20 [INFO] [stderr] | [INFO] [stderr] 222 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 223 | | if read_mode == "LEAF" { [INFO] [stderr] 224 | | current_leaf.push(chr); [INFO] [stderr] 225 | | } else if read_mode == "DIST" { [INFO] [stderr] ... | [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 222 | } else if read_mode == "LEAF" { [INFO] [stderr] 223 | current_leaf.push(chr); [INFO] [stderr] 224 | } else if read_mode == "DIST" { [INFO] [stderr] 225 | current_distance.push(chr); [INFO] [stderr] 226 | } else if read_mode == "BDON" { [INFO] [stderr] 227 | continue; // Ignore edge values. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | return Tree::parse_tree_from_string(tree_string, 0, 0).0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Tree::parse_tree_from_string(tree_string, 0, 0).0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / return Tree { [INFO] [stderr] 287 | | leaves, [INFO] [stderr] 288 | | branches, [INFO] [stderr] 289 | | leaf_distances, [INFO] [stderr] ... | [INFO] [stderr] 292 | | branch_number: 0, [INFO] [stderr] 293 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 286 | Tree { [INFO] [stderr] 287 | leaves, [INFO] [stderr] 288 | branches, [INFO] [stderr] 289 | leaf_distances, [INFO] [stderr] 290 | branch_distances, [INFO] [stderr] 291 | levels_from_root: 0, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | distance_matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree.rs:372:13 [INFO] [stderr] | [INFO] [stderr] 372 | TreeDistanceMatrix::new(leaf_distance_matrix, identity_matrix, leaf_map); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `ndarray::prelude::*` [INFO] [stderr] --> src/graph_tree.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use ndarray::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/graph_tree.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tree_distance_matrix::*` [INFO] [stderr] --> src/graph_tree.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use tree_distance_matrix::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Incoming` [INFO] [stderr] --> src/graph_tree.rs:7:23 [INFO] [stderr] | [INFO] [stderr] 7 | use petgraph::{Graph, Incoming}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/graph_tree.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | return children; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `children` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/graph_tree.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | return (graph, c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(graph, c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/graph_tree.rs:111:20 [INFO] [stderr] | [INFO] [stderr] 111 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 112 | | if read_mode == "LEAF" { [INFO] [stderr] 113 | | current_leaf.push(chr); [INFO] [stderr] 114 | | } else if read_mode == "DIST" { [INFO] [stderr] ... | [INFO] [stderr] 118 | | } [INFO] [stderr] 119 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 111 | } else if read_mode == "LEAF" { [INFO] [stderr] 112 | current_leaf.push(chr); [INFO] [stderr] 113 | } else if read_mode == "DIST" { [INFO] [stderr] 114 | current_distance.push(chr); [INFO] [stderr] 115 | } else if read_mode == "BDON" { [INFO] [stderr] 116 | continue; // Ignore edge values. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | return new_distances; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_distances` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | return (d_fu, d_gu); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(d_fu, d_gu)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | return idx; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `idx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | return result_tree; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `result_tree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | return self.get_distance_ref(&leaf_one, &leaf_two); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.get_distance_ref(&leaf_one, &leaf_two)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:214:9 [INFO] [stderr] | [INFO] [stderr] 214 | return Some(self.distance_matrix[[x, y]]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(self.distance_matrix[[x, y]])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:260:9 [INFO] [stderr] | [INFO] [stderr] 260 | return csv; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `csv` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | return self.distance_matrix.shape(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.distance_matrix.shape()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:283:9 [INFO] [stderr] | [INFO] [stderr] 283 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:288:76 [INFO] [stderr] | [INFO] [stderr] 288 | let p1 = TreeDistanceMatrix::find_first_zero(identity_matrix.slice(s![l1, ..])); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:289:76 [INFO] [stderr] | [INFO] [stderr] 289 | let p2 = TreeDistanceMatrix::find_first_zero(identity_matrix.slice(s![l2, ..])); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:315:9 [INFO] [stderr] | [INFO] [stderr] 315 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:303:46 [INFO] [stderr] | [INFO] [stderr] 303 | let id_row_1 = identity_matrix.slice(s![l1, ..]); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:304:46 [INFO] [stderr] | [INFO] [stderr] 304 | let id_row_2 = identity_matrix.slice(s![l2, ..]); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:411:31 [INFO] [stderr] | [INFO] [stderr] 411 | distance_matrix.slice(s![..n_leaves, ..n_leaves]).to_owned() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:474:9 [INFO] [stderr] | [INFO] [stderr] 474 | return TreeDistanceMatrix::new_from_matrix_and_leaves(ndm, leaves.to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `TreeDistanceMatrix::new_from_matrix_and_leaves(ndm, leaves.to_vec())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:514:9 [INFO] [stderr] | [INFO] [stderr] 514 | / return TreeDistanceMatrix { [INFO] [stderr] 515 | | leaf_map, [INFO] [stderr] 516 | | leaf_map_inv, [INFO] [stderr] 517 | | distance_matrix, [INFO] [stderr] 518 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 514 | TreeDistanceMatrix { [INFO] [stderr] 515 | leaf_map, [INFO] [stderr] 516 | leaf_map_inv, [INFO] [stderr] 517 | distance_matrix, [INFO] [stderr] 518 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/tree_merging.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_merging.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | return tree.traverse_children().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `tree.traverse_children().len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/tree_merging.rs:37:42 [INFO] [stderr] | [INFO] [stderr] 37 | fn sibling_merging(mut trees: Vec) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_merging.rs:126:5 [INFO] [stderr] | [INFO] [stderr] 126 | / return TreeDistanceMatrix::new_from_matrix_and_leaves( [INFO] [stderr] 127 | | average_matrix, [INFO] [stderr] 128 | | all_leaves.iter().map(|l| l.clone()).collect(), [INFO] [stderr] 129 | | ); [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 126 | TreeDistanceMatrix::new_from_matrix_and_leaves( [INFO] [stderr] 127 | average_matrix, [INFO] [stderr] 128 | all_leaves.iter().map(|l| l.clone()).collect(), [INFO] [stderr] 129 | ) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utils.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | return hm.keys().cloned().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `hm.keys().cloned().collect()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utils.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | return set; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `set` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/tests.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / mod tests { [INFO] [stderr] 3 | | use ndarray::prelude::*; [INFO] [stderr] 4 | | use tree; [INFO] [stderr] 5 | | use tree_distance_matrix; [INFO] [stderr] ... | [INFO] [stderr] 189 | | } [INFO] [stderr] 190 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | return leaves_self == leaves_other; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `leaves_self == leaves_other` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | return Some(current_branch_idx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(current_branch_idx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree.rs:131:9 [INFO] [stderr] | [INFO] [stderr] 131 | children [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree.rs:130:24 [INFO] [stderr] | [INFO] [stderr] 130 | let children = self.build_depth_first_path(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree.rs:138:9 [INFO] [stderr] | [INFO] [stderr] 138 | snapshot_children [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree.rs:137:33 [INFO] [stderr] | [INFO] [stderr] 137 | let snapshot_children = children.iter().map(| x | (x.0.clone(), *x.1) ).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | return (tree, c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(tree, c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tree.rs:222:20 [INFO] [stderr] | [INFO] [stderr] 222 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 223 | | if read_mode == "LEAF" { [INFO] [stderr] 224 | | current_leaf.push(chr); [INFO] [stderr] 225 | | } else if read_mode == "DIST" { [INFO] [stderr] ... | [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 222 | } else if read_mode == "LEAF" { [INFO] [stderr] 223 | current_leaf.push(chr); [INFO] [stderr] 224 | } else if read_mode == "DIST" { [INFO] [stderr] 225 | current_distance.push(chr); [INFO] [stderr] 226 | } else if read_mode == "BDON" { [INFO] [stderr] 227 | continue; // Ignore edge values. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | return Tree::parse_tree_from_string(tree_string, 0, 0).0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Tree::parse_tree_from_string(tree_string, 0, 0).0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / return Tree { [INFO] [stderr] 287 | | leaves, [INFO] [stderr] 288 | | branches, [INFO] [stderr] 289 | | leaf_distances, [INFO] [stderr] ... | [INFO] [stderr] 292 | | branch_number: 0, [INFO] [stderr] 293 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 286 | Tree { [INFO] [stderr] 287 | leaves, [INFO] [stderr] 288 | branches, [INFO] [stderr] 289 | leaf_distances, [INFO] [stderr] 290 | branch_distances, [INFO] [stderr] 291 | levels_from_root: 0, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | distance_matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree.rs:372:13 [INFO] [stderr] | [INFO] [stderr] 372 | TreeDistanceMatrix::new(leaf_distance_matrix, identity_matrix, leaf_map); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `ndarray::prelude::*` [INFO] [stderr] --> src/graph_tree.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use ndarray::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/graph_tree.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tree_distance_matrix::*` [INFO] [stderr] --> src/graph_tree.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use tree_distance_matrix::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Incoming` [INFO] [stderr] --> src/graph_tree.rs:7:23 [INFO] [stderr] | [INFO] [stderr] 7 | use petgraph::{Graph, Incoming}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/graph_tree.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | return children; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `children` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/graph_tree.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | return (graph, c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(graph, c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/graph_tree.rs:111:20 [INFO] [stderr] | [INFO] [stderr] 111 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 112 | | if read_mode == "LEAF" { [INFO] [stderr] 113 | | current_leaf.push(chr); [INFO] [stderr] 114 | | } else if read_mode == "DIST" { [INFO] [stderr] ... | [INFO] [stderr] 118 | | } [INFO] [stderr] 119 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 111 | } else if read_mode == "LEAF" { [INFO] [stderr] 112 | current_leaf.push(chr); [INFO] [stderr] 113 | } else if read_mode == "DIST" { [INFO] [stderr] 114 | current_distance.push(chr); [INFO] [stderr] 115 | } else if read_mode == "BDON" { [INFO] [stderr] 116 | continue; // Ignore edge values. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | return new_distances; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_distances` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | return (d_fu, d_gu); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(d_fu, d_gu)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | return idx; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `idx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | return result_tree; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `result_tree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | return self.get_distance_ref(&leaf_one, &leaf_two); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.get_distance_ref(&leaf_one, &leaf_two)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:214:9 [INFO] [stderr] | [INFO] [stderr] 214 | return Some(self.distance_matrix[[x, y]]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(self.distance_matrix[[x, y]])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:260:9 [INFO] [stderr] | [INFO] [stderr] 260 | return csv; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `csv` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | return self.distance_matrix.shape(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.distance_matrix.shape()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:283:9 [INFO] [stderr] | [INFO] [stderr] 283 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:288:76 [INFO] [stderr] | [INFO] [stderr] 288 | let p1 = TreeDistanceMatrix::find_first_zero(identity_matrix.slice(s![l1, ..])); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:289:76 [INFO] [stderr] | [INFO] [stderr] 289 | let p2 = TreeDistanceMatrix::find_first_zero(identity_matrix.slice(s![l2, ..])); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:315:9 [INFO] [stderr] | [INFO] [stderr] 315 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:303:46 [INFO] [stderr] | [INFO] [stderr] 303 | let id_row_1 = identity_matrix.slice(s![l1, ..]); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:304:46 [INFO] [stderr] | [INFO] [stderr] 304 | let id_row_2 = identity_matrix.slice(s![l2, ..]); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/tree_distance_matrix.rs:411:31 [INFO] [stderr] | [INFO] [stderr] 411 | distance_matrix.slice(s![..n_leaves, ..n_leaves]).to_owned() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:474:9 [INFO] [stderr] | [INFO] [stderr] 474 | return TreeDistanceMatrix::new_from_matrix_and_leaves(ndm, leaves.to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `TreeDistanceMatrix::new_from_matrix_and_leaves(ndm, leaves.to_vec())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_distance_matrix.rs:514:9 [INFO] [stderr] | [INFO] [stderr] 514 | / return TreeDistanceMatrix { [INFO] [stderr] 515 | | leaf_map, [INFO] [stderr] 516 | | leaf_map_inv, [INFO] [stderr] 517 | | distance_matrix, [INFO] [stderr] 518 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 514 | TreeDistanceMatrix { [INFO] [stderr] 515 | leaf_map, [INFO] [stderr] 516 | leaf_map_inv, [INFO] [stderr] 517 | distance_matrix, [INFO] [stderr] 518 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/tree_merging.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_merging.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | return tree.traverse_children().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `tree.traverse_children().len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/tree_merging.rs:37:42 [INFO] [stderr] | [INFO] [stderr] 37 | fn sibling_merging(mut trees: Vec) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree_merging.rs:126:5 [INFO] [stderr] | [INFO] [stderr] 126 | / return TreeDistanceMatrix::new_from_matrix_and_leaves( [INFO] [stderr] 127 | | average_matrix, [INFO] [stderr] 128 | | all_leaves.iter().map(|l| l.clone()).collect(), [INFO] [stderr] 129 | | ); [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 126 | TreeDistanceMatrix::new_from_matrix_and_leaves( [INFO] [stderr] 127 | average_matrix, [INFO] [stderr] 128 | all_leaves.iter().map(|l| l.clone()).collect(), [INFO] [stderr] 129 | ) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utils.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | return hm.keys().cloned().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `hm.keys().cloned().collect()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utils.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | return set; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `set` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused variable: `graph` [INFO] [stderr] --> src/graph_tree.rs:62:22 [INFO] [stderr] | [INFO] [stderr] 62 | let (graph, new_skip) = Tree::parse_tree_from_string( [INFO] [stderr] | ^^^^^ help: consider using `_graph` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tree_merging.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | let mut new_trees: Vec = tree_leafs [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `perform_operation_on_branch` [INFO] [stderr] --> src/tree.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | pub fn perform_operation_on_branch(&mut self, target_branch_idx : usize, mut current_branch_idx : usize, op : &mut F) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_root_levels` [INFO] [stderr] --> src/tree.rs:250:5 [INFO] [stderr] | [INFO] [stderr] 250 | pub fn add_root_levels(&mut self, depth: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `traverse_children` [INFO] [stderr] --> src/graph_tree.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn traverse_children(&self) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `calculate_q_matrix` [INFO] [stderr] --> src/tree_distance_matrix.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn calculate_q_matrix(dm: &Array2) -> Array2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `calculate_pair_distance_matrix` [INFO] [stderr] --> src/tree_distance_matrix.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn calculate_pair_distance_matrix(i: usize, j: usize, dm: &Array2) -> Array2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `calculate_new_leaf_distances` [INFO] [stderr] --> src/tree_distance_matrix.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn calculate_new_leaf_distances(f: usize, g: usize, dm: &Array2) -> (f32, f32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `find_min_matrix_ne` [INFO] [stderr] --> src/tree_distance_matrix.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn find_min_matrix_ne(matrix: Array2) -> [usize; 2] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `neighbour_joining` [INFO] [stderr] --> src/tree_distance_matrix.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | pub fn neighbour_joining(&self) -> Tree { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_partial_distance_matrix` [INFO] [stderr] --> src/tree_distance_matrix.rs:450:5 [INFO] [stderr] | [INFO] [stderr] 450 | pub fn get_partial_distance_matrix(&self, leaves: &Vec) -> TreeDistanceMatrix { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new_from_matrix_and_leaves` [INFO] [stderr] --> src/tree_distance_matrix.rs:502:5 [INFO] [stderr] | [INFO] [stderr] 502 | / pub fn new_from_matrix_and_leaves( [INFO] [stderr] 503 | | distance_matrix: Array2, [INFO] [stderr] 504 | | leaves: Vec, [INFO] [stderr] 505 | | ) -> TreeDistanceMatrix { [INFO] [stderr] ... | [INFO] [stderr] 518 | | }; [INFO] [stderr] 519 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `merge_trees` [INFO] [stderr] --> src/tree_merging.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn merge_trees(trees: Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_tree_size` [INFO] [stderr] --> src/tree_merging.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | fn get_tree_size(tree: &Tree) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sibling_merging` [INFO] [stderr] --> src/tree_merging.rs:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | fn sibling_merging(mut trees: Vec) -> () { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `merge_distance_matrices` [INFO] [stderr] --> src/tree_merging.rs:96:1 [INFO] [stderr] | [INFO] [stderr] 96 | fn merge_distance_matrices(dms: Vec) -> TreeDistanceMatrix { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `keys_vec` [INFO] [stderr] --> src/utils.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn keys_vec( [INFO] [stderr] 18 | | hm: &HashMap, [INFO] [stderr] 19 | | ) -> Vec { [INFO] [stderr] 20 | | return hm.keys().cloned().collect(); [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `vec_to_set` [INFO] [stderr] --> src/utils.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn vec_to_set( [INFO] [stderr] 24 | | vector: &Vec, [INFO] [stderr] 25 | | ) -> HashSet { [INFO] [stderr] 26 | | let mut set: HashSet = HashSet::new(); [INFO] [stderr] ... | [INFO] [stderr] 30 | | return set; [INFO] [stderr] 31 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree.rs:47:23 [INFO] [stderr] | [INFO] [stderr] 47 | branches: self.branches.iter().map( | b | b.clone() ).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.branches.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree.rs:48:29 [INFO] [stderr] | [INFO] [stderr] 48 | leaf_distances: self.leaf_distances.iter().map( | ld | *ld ).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.leaf_distances.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree.rs:49:31 [INFO] [stderr] | [INFO] [stderr] 49 | branch_distances: self.branch_distances.iter().map( | bd | *bd ).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.branch_distances.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tree.rs:92:64 [INFO] [stderr] | [INFO] [stderr] 92 | let branch_distance = self.branch_distances.get(b).expect(&format!( [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 93 | | "Branch state is invalid: Branch distance for branch {} missing", [INFO] [stderr] 94 | | b [INFO] [stderr] 95 | | )); [INFO] [stderr] | |______________^ help: try this: `unwrap_or_else(|| panic!("Branch state is invalid: Branch distance for branch {} missing", b))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:98:16 [INFO] [stderr] | [INFO] [stderr] 98 | if branch.branches.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!branch.branches.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | if branch.branches.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!branch.branches.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:184:24 [INFO] [stderr] | [INFO] [stderr] 184 | if current_leaf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_leaf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:203:24 [INFO] [stderr] | [INFO] [stderr] 203 | if current_leaf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_leaf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:264:12 [INFO] [stderr] | [INFO] [stderr] 264 | if (leaf_distances.len() > 0) & (leaf_distances.len() != leaves.len()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!leaf_distances.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:268:12 [INFO] [stderr] | [INFO] [stderr] 268 | if (branch_distances.len() > 0) & (branch_distances.len() != branches.len()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!branch_distances.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:272:12 [INFO] [stderr] | [INFO] [stderr] 272 | if leaf_distances.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `leaf_distances.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:279:12 [INFO] [stderr] | [INFO] [stderr] 279 | if branch_distances.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `branch_distances.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/tree.rs:354:47 [INFO] [stderr] | [INFO] [stderr] 354 | accumulated_distances[0..l + 1].iter().sum(); [INFO] [stderr] | ^^^^^^^^ help: use: `0..=l` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/graph_tree.rs:56:39 [INFO] [stderr] | [INFO] [stderr] 56 | let node_count_name = String::from(format!(">>{}", graph.node_count())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!(">>{}", graph.node_count())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/graph_tree.rs:71:24 [INFO] [stderr] | [INFO] [stderr] 71 | if current_leaf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_leaf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/graph_tree.rs:91:24 [INFO] [stderr] | [INFO] [stderr] 91 | if current_leaf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_leaf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tree_distance_matrix.rs:145:29 [INFO] [stderr] | [INFO] [stderr] 145 | leaves.push(leaf_map_inv_vec.get(lowest_pair[0]).unwrap().1.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `leaf_map_inv_vec[lowest_pair[0]]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tree_distance_matrix.rs:155:29 [INFO] [stderr] | [INFO] [stderr] 155 | leaves.push(leaf_map_inv_vec.get(lowest_pair[1]).unwrap().1.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `leaf_map_inv_vec[lowest_pair[1]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree_distance_matrix.rs:172:41 [INFO] [stderr] | [INFO] [stderr] 172 | let tree_keys: Vec = trees.keys().map(|x| *x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `trees.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree_distance_matrix.rs:185:37 [INFO] [stderr] | [INFO] [stderr] 185 | let tree_keys: Vec = trees.keys().map(|x| *x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `trees.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/tree_distance_matrix.rs:197:46 [INFO] [stderr] | [INFO] [stderr] 197 | pub fn get_distance_ref(&self, leaf_one: &String, leaf_two: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/tree_distance_matrix.rs:197:65 [INFO] [stderr] | [INFO] [stderr] 197 | pub fn get_distance_ref(&self, leaf_one: &String, leaf_two: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/tree_distance_matrix.rs:226:16 [INFO] [stderr] | [INFO] [stderr] 226 | if key > &max_key { [INFO] [stderr] | ^^^^^^-------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `max_key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/tree_distance_matrix.rs:233:18 [INFO] [stderr] | [INFO] [stderr] 233 | for l in 0..max_key + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `0..=max_key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tree_distance_matrix.rs:234:13 [INFO] [stderr] | [INFO] [stderr] 234 | / match self.leaf_map_inv.get(&l) { [INFO] [stderr] 235 | | Some(name) => { [INFO] [stderr] 236 | | csv.push_str(name); [INFO] [stderr] 237 | | leaves.push(name.to_string()); [INFO] [stderr] ... | [INFO] [stderr] 242 | | None => {} [INFO] [stderr] 243 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 234 | if let Some(name) = self.leaf_map_inv.get(&l) { [INFO] [stderr] 235 | csv.push_str(name); [INFO] [stderr] 236 | leaves.push(name.to_string()); [INFO] [stderr] 237 | if l < max_key { [INFO] [stderr] 238 | csv.push(delim); [INFO] [stderr] 239 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the variable `v` is used as a loop counter. Consider using `for (v, item) in row.enumerate()` or similar iterators [INFO] [stderr] --> src/tree_distance_matrix.rs:251:24 [INFO] [stderr] | [INFO] [stderr] 251 | for val in row { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/tree_distance_matrix.rs:450:55 [INFO] [stderr] | [INFO] [stderr] 450 | pub fn get_partial_distance_matrix(&self, leaves: &Vec) -> TreeDistanceMatrix { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree_merging.rs:64:24 [INFO] [stderr] | [INFO] [stderr] 64 | if overlapping_leaves.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `overlapping_leaves.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree_merging.rs:68:24 [INFO] [stderr] | [INFO] [stderr] 68 | if new_leaves.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `new_leaves.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tree_merging.rs:113:17 [INFO] [stderr] | [INFO] [stderr] 113 | / match dist { [INFO] [stderr] 114 | | Some(d) => { [INFO] [stderr] 115 | | overlapping_distance_matrix[[x, y]] = d; [INFO] [stderr] 116 | | count_matrix[[x, y]] += 1.0 [INFO] [stderr] 117 | | } [INFO] [stderr] 118 | | None => {} [INFO] [stderr] 119 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 113 | if let Some(d) = dist { [INFO] [stderr] 114 | overlapping_distance_matrix[[x, y]] = d; [INFO] [stderr] 115 | count_matrix[[x, y]] += 1.0 [INFO] [stderr] 116 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree_merging.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | all_leaves.iter().map(|l| l.clone()).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `all_leaves.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | vector: &Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:27:43 [INFO] [stderr] | [INFO] [stderr] 27 | let tree_file = utils::load_tree_file(String::from(fname)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `fname` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: unused variable: `graph` [INFO] [stderr] --> src/graph_tree.rs:62:22 [INFO] [stderr] | [INFO] [stderr] 62 | let (graph, new_skip) = Tree::parse_tree_from_string( [INFO] [stderr] | ^^^^^ help: consider using `_graph` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tree_merging.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | let mut new_trees: Vec = tree_leafs [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tests.rs:40:36 [INFO] [stderr] | [INFO] [stderr] 40 | assert!(tree_file.contains("(")); [INFO] [stderr] | ^^^ help: try using a char instead: `'('` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree.rs:47:23 [INFO] [stderr] | [INFO] [stderr] 47 | branches: self.branches.iter().map( | b | b.clone() ).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.branches.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree.rs:48:29 [INFO] [stderr] | [INFO] [stderr] 48 | leaf_distances: self.leaf_distances.iter().map( | ld | *ld ).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.leaf_distances.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree.rs:49:31 [INFO] [stderr] | [INFO] [stderr] 49 | branch_distances: self.branch_distances.iter().map( | bd | *bd ).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.branch_distances.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tree.rs:92:64 [INFO] [stderr] | [INFO] [stderr] 92 | let branch_distance = self.branch_distances.get(b).expect(&format!( [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 93 | | "Branch state is invalid: Branch distance for branch {} missing", [INFO] [stderr] 94 | | b [INFO] [stderr] 95 | | )); [INFO] [stderr] | |______________^ help: try this: `unwrap_or_else(|| panic!("Branch state is invalid: Branch distance for branch {} missing", b))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:98:16 [INFO] [stderr] | [INFO] [stderr] 98 | if branch.branches.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!branch.branches.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | if branch.branches.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!branch.branches.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:184:24 [INFO] [stderr] | [INFO] [stderr] 184 | if current_leaf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_leaf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:203:24 [INFO] [stderr] | [INFO] [stderr] 203 | if current_leaf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_leaf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:264:12 [INFO] [stderr] | [INFO] [stderr] 264 | if (leaf_distances.len() > 0) & (leaf_distances.len() != leaves.len()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!leaf_distances.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:268:12 [INFO] [stderr] | [INFO] [stderr] 268 | if (branch_distances.len() > 0) & (branch_distances.len() != branches.len()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!branch_distances.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:272:12 [INFO] [stderr] | [INFO] [stderr] 272 | if leaf_distances.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `leaf_distances.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree.rs:279:12 [INFO] [stderr] | [INFO] [stderr] 279 | if branch_distances.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `branch_distances.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/tree.rs:354:47 [INFO] [stderr] | [INFO] [stderr] 354 | accumulated_distances[0..l + 1].iter().sum(); [INFO] [stderr] | ^^^^^^^^ help: use: `0..=l` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/graph_tree.rs:56:39 [INFO] [stderr] | [INFO] [stderr] 56 | let node_count_name = String::from(format!(">>{}", graph.node_count())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!(">>{}", graph.node_count())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/graph_tree.rs:71:24 [INFO] [stderr] | [INFO] [stderr] 71 | if current_leaf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_leaf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/graph_tree.rs:91:24 [INFO] [stderr] | [INFO] [stderr] 91 | if current_leaf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_leaf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tree_distance_matrix.rs:145:29 [INFO] [stderr] | [INFO] [stderr] 145 | leaves.push(leaf_map_inv_vec.get(lowest_pair[0]).unwrap().1.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `leaf_map_inv_vec[lowest_pair[0]]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tree_distance_matrix.rs:155:29 [INFO] [stderr] | [INFO] [stderr] 155 | leaves.push(leaf_map_inv_vec.get(lowest_pair[1]).unwrap().1.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `leaf_map_inv_vec[lowest_pair[1]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree_distance_matrix.rs:172:41 [INFO] [stderr] | [INFO] [stderr] 172 | let tree_keys: Vec = trees.keys().map(|x| *x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `trees.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree_distance_matrix.rs:185:37 [INFO] [stderr] | [INFO] [stderr] 185 | let tree_keys: Vec = trees.keys().map(|x| *x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `trees.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/tree_distance_matrix.rs:197:46 [INFO] [stderr] | [INFO] [stderr] 197 | pub fn get_distance_ref(&self, leaf_one: &String, leaf_two: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/tree_distance_matrix.rs:197:65 [INFO] [stderr] | [INFO] [stderr] 197 | pub fn get_distance_ref(&self, leaf_one: &String, leaf_two: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/tree_distance_matrix.rs:226:16 [INFO] [stderr] | [INFO] [stderr] 226 | if key > &max_key { [INFO] [stderr] | ^^^^^^-------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `max_key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/tree_distance_matrix.rs:233:18 [INFO] [stderr] | [INFO] [stderr] 233 | for l in 0..max_key + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `0..=max_key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tree_distance_matrix.rs:234:13 [INFO] [stderr] | [INFO] [stderr] 234 | / match self.leaf_map_inv.get(&l) { [INFO] [stderr] 235 | | Some(name) => { [INFO] [stderr] 236 | | csv.push_str(name); [INFO] [stderr] 237 | | leaves.push(name.to_string()); [INFO] [stderr] ... | [INFO] [stderr] 242 | | None => {} [INFO] [stderr] 243 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 234 | if let Some(name) = self.leaf_map_inv.get(&l) { [INFO] [stderr] 235 | csv.push_str(name); [INFO] [stderr] 236 | leaves.push(name.to_string()); [INFO] [stderr] 237 | if l < max_key { [INFO] [stderr] 238 | csv.push(delim); [INFO] [stderr] 239 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the variable `v` is used as a loop counter. Consider using `for (v, item) in row.enumerate()` or similar iterators [INFO] [stderr] --> src/tree_distance_matrix.rs:251:24 [INFO] [stderr] | [INFO] [stderr] 251 | for val in row { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/tree_distance_matrix.rs:450:55 [INFO] [stderr] | [INFO] [stderr] 450 | pub fn get_partial_distance_matrix(&self, leaves: &Vec) -> TreeDistanceMatrix { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree_merging.rs:64:24 [INFO] [stderr] | [INFO] [stderr] 64 | if overlapping_leaves.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `overlapping_leaves.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree_merging.rs:68:24 [INFO] [stderr] | [INFO] [stderr] 68 | if new_leaves.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `new_leaves.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tree_merging.rs:113:17 [INFO] [stderr] | [INFO] [stderr] 113 | / match dist { [INFO] [stderr] 114 | | Some(d) => { [INFO] [stderr] 115 | | overlapping_distance_matrix[[x, y]] = d; [INFO] [stderr] 116 | | count_matrix[[x, y]] += 1.0 [INFO] [stderr] 117 | | } [INFO] [stderr] 118 | | None => {} [INFO] [stderr] 119 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 113 | if let Some(d) = dist { [INFO] [stderr] 114 | overlapping_distance_matrix[[x, y]] = d; [INFO] [stderr] 115 | count_matrix[[x, y]] += 1.0 [INFO] [stderr] 116 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree_merging.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | all_leaves.iter().map(|l| l.clone()).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `all_leaves.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | vector: &Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:27:43 [INFO] [stderr] | [INFO] [stderr] 27 | let tree_file = utils::load_tree_file(String::from(fname)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `fname` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 12.14s [INFO] running `"docker" "inspect" "b3d911d70bb51a84f5f02c79ac8f4b167314e9e2cdfeccff09bdb85a24f39847"` [INFO] running `"docker" "rm" "-f" "b3d911d70bb51a84f5f02c79ac8f4b167314e9e2cdfeccff09bdb85a24f39847"` [INFO] [stdout] b3d911d70bb51a84f5f02c79ac8f4b167314e9e2cdfeccff09bdb85a24f39847