[INFO] updating cached repository bbrener1/gravity_clustering [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/bbrener1/gravity_clustering [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/bbrener1/gravity_clustering" "work/ex/clippy-test-run/sources/stable/gh/bbrener1/gravity_clustering"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/bbrener1/gravity_clustering'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/bbrener1/gravity_clustering" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bbrener1/gravity_clustering"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bbrener1/gravity_clustering'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d239d072c1b38f5bbd94e4d6b347206f6f1b91be [INFO] sha for GitHub repo bbrener1/gravity_clustering: d239d072c1b38f5bbd94e4d6b347206f6f1b91be [INFO] validating manifest of bbrener1/gravity_clustering 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 bbrener1/gravity_clustering 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 bbrener1/gravity_clustering [INFO] finished frobbing bbrener1/gravity_clustering [INFO] frobbed toml for bbrener1/gravity_clustering written to work/ex/clippy-test-run/sources/stable/gh/bbrener1/gravity_clustering/Cargo.toml [INFO] started frobbing bbrener1/gravity_clustering [INFO] finished frobbing bbrener1/gravity_clustering [INFO] frobbed toml for bbrener1/gravity_clustering written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bbrener1/gravity_clustering/Cargo.toml [INFO] crate bbrener1/gravity_clustering 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 bbrener1/gravity_clustering against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/bbrener1/gravity_clustering:/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] 95f4b6060a663ffd8f45bb63eef1619948268260b83f7850582b38bffcb4de13 [INFO] running `"docker" "start" "-a" "95f4b6060a663ffd8f45bb63eef1619948268260b83f7850582b38bffcb4de13"` [INFO] [stderr] Checking gravity_clustering v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/mobile_gravity_field.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [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/mobile_gravity_field.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | features: features, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `features` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/mobile_gravity_field.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [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/mobile_gravity_field.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | features: features, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `features` [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/mobile_gravity_field.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | current_positions: current_positions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_positions` [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/mobile_gravity_field.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | fuzz: fuzz, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `fuzz` [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/mobile_gravity_field.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | parameters: parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [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/single_pathfinder.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/single_pathfinder.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [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/single_pathfinder.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | sample_indecies: sample_indecies, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sample_indecies` [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] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/single_pathfinder.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | features: features, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `features` [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/mobile_gravity_field.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | current_positions: current_positions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_positions` [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/single_pathfinder.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | sample_subsamples: sample_subsamples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sample_subsamples` [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/mobile_gravity_field.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | fuzz: fuzz, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `fuzz` [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/cluster.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/mobile_gravity_field.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | parameters: parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [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] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/single_pathfinder.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] [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/single_pathfinder.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [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/single_pathfinder.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | sample_indecies: sample_indecies, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sample_indecies` [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/single_pathfinder.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | features: features, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `features` [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/single_pathfinder.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | sample_subsamples: sample_subsamples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sample_subsamples` [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/cluster.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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: unused import: `std::fs::File` [INFO] [stderr] --> src/main.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `rayon::iter::IntoParallelIterator` [INFO] [stderr] --> src/io.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use rayon::iter::IntoParallelIterator; [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/io.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | arg_struct [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/io.rs:54:26 [INFO] [stderr] | [INFO] [stderr] 54 | let arg_struct = Parameters { [INFO] [stderr] | __________________________^ [INFO] [stderr] 55 | | auto: false, [INFO] [stderr] 56 | | verbose: false, [INFO] [stderr] 57 | | command: Command::FitPredict, [INFO] [stderr] ... | [INFO] [stderr] 83 | | [INFO] [stderr] 84 | | }; [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: immediately dereferencing a reference [INFO] [stderr] --> src/io.rs:603:46 [INFO] [stderr] | [INFO] [stderr] 603 | let mut row = standardized.slice_mut(s![i,..]); [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: unnecessary parentheses around assigned value [INFO] [stderr] --> src/io.rs:642:32 [INFO] [stderr] | [INFO] [stderr] 642 | products[[i,j]] /= (&geo[i] * &geo[j]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/io.rs:691:5 [INFO] [stderr] | [INFO] [stderr] 691 | out [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/io.rs:690:15 [INFO] [stderr] | [INFO] [stderr] 690 | let out = intermediate2.iter().map(|x| x.0).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: unused imports: `ArrayView`, `Axis`, `Ix3`, `Zip`, `stack` [INFO] [stderr] --> src/mobile_gravity_field.rs:3:29 [INFO] [stderr] | [INFO] [stderr] 3 | use ndarray::{Array,Ix1,Ix2,Ix3,Zip,Axis,ArrayView,stack}; [INFO] [stderr] | ^^^ ^^^ ^^^^ ^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::max` [INFO] [stderr] --> src/mobile_gravity_field.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cmp::max; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `distance` [INFO] [stderr] --> src/mobile_gravity_field.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use distance; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `length` [INFO] [stderr] --> src/mobile_gravity_field.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use length; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Rng`, `ThreadRng` [INFO] [stderr] --> src/single_pathfinder.rs:5:12 [INFO] [stderr] | [INFO] [stderr] 5 | use rand::{Rng,ThreadRng,thread_rng}; [INFO] [stderr] | ^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/single_pathfinder.rs:356:13 [INFO] [stderr] | [INFO] [stderr] 356 | return true [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [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/single_pathfinder.rs:359:13 [INFO] [stderr] | [INFO] [stderr] 359 | return false [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [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 import: `std::collections::HashSet` [INFO] [stderr] --> src/cluster.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::HashSet; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Axis`, `Ix3`, `Zip`, `stack` [INFO] [stderr] --> src/cluster.rs:3:29 [INFO] [stderr] | [INFO] [stderr] 3 | use ndarray::{Array,Ix1,Ix2,Ix3,Zip,Axis,ArrayView,stack}; [INFO] [stderr] | ^^^ ^^^ ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::max` [INFO] [stderr] --> src/cluster.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cmp::max; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `single_pathfinder::Pathfinder` [INFO] [stderr] --> src/cluster.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use single_pathfinder::Pathfinder; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `length` [INFO] [stderr] --> src/cluster.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use length; [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/cluster.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | radius [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/cluster.rs:70:22 [INFO] [stderr] | [INFO] [stderr] 70 | let radius = self.members.iter().map(|x| self.distance.measure(self.array.row(*x).view(), self.center.view())).sum::() / self.weight as f64; [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 imports: `Array`, `Axis`, `Ix2` [INFO] [stderr] --> src/main.rs:23:15 [INFO] [stderr] | [INFO] [stderr] 23 | use ndarray::{Array,Axis,Ix1,Ix2,Zip,ArrayView}; [INFO] [stderr] | ^^^^^ ^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/main.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `rayon::iter::IntoParallelIterator` [INFO] [stderr] --> src/io.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use rayon::iter::IntoParallelIterator; [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/io.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | arg_struct [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/io.rs:54:26 [INFO] [stderr] | [INFO] [stderr] 54 | let arg_struct = Parameters { [INFO] [stderr] | __________________________^ [INFO] [stderr] 55 | | auto: false, [INFO] [stderr] 56 | | verbose: false, [INFO] [stderr] 57 | | command: Command::FitPredict, [INFO] [stderr] ... | [INFO] [stderr] 83 | | [INFO] [stderr] 84 | | }; [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: immediately dereferencing a reference [INFO] [stderr] --> src/io.rs:603:46 [INFO] [stderr] | [INFO] [stderr] 603 | let mut row = standardized.slice_mut(s![i,..]); [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: unnecessary parentheses around assigned value [INFO] [stderr] --> src/io.rs:642:32 [INFO] [stderr] | [INFO] [stderr] 642 | products[[i,j]] /= (&geo[i] * &geo[j]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/io.rs:691:5 [INFO] [stderr] | [INFO] [stderr] 691 | out [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/io.rs:690:15 [INFO] [stderr] | [INFO] [stderr] 690 | let out = intermediate2.iter().map(|x| x.0).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: unused imports: `ArrayView`, `Axis`, `Ix3`, `Zip`, `stack` [INFO] [stderr] --> src/mobile_gravity_field.rs:3:29 [INFO] [stderr] | [INFO] [stderr] 3 | use ndarray::{Array,Ix1,Ix2,Ix3,Zip,Axis,ArrayView,stack}; [INFO] [stderr] | ^^^ ^^^ ^^^^ ^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::max` [INFO] [stderr] --> src/mobile_gravity_field.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cmp::max; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `distance` [INFO] [stderr] --> src/mobile_gravity_field.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use distance; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `length` [INFO] [stderr] --> src/mobile_gravity_field.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use length; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Rng`, `ThreadRng` [INFO] [stderr] --> src/single_pathfinder.rs:5:12 [INFO] [stderr] | [INFO] [stderr] 5 | use rand::{Rng,ThreadRng,thread_rng}; [INFO] [stderr] | ^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/single_pathfinder.rs:356:13 [INFO] [stderr] | [INFO] [stderr] 356 | return true [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [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/single_pathfinder.rs:359:13 [INFO] [stderr] | [INFO] [stderr] 359 | return false [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [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 import: `std::collections::HashSet` [INFO] [stderr] --> src/cluster.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::HashSet; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Axis`, `Ix3`, `Zip`, `stack` [INFO] [stderr] --> src/cluster.rs:3:29 [INFO] [stderr] | [INFO] [stderr] 3 | use ndarray::{Array,Ix1,Ix2,Ix3,Zip,Axis,ArrayView,stack}; [INFO] [stderr] | ^^^ ^^^ ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::max` [INFO] [stderr] --> src/cluster.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cmp::max; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `single_pathfinder::Pathfinder` [INFO] [stderr] --> src/cluster.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use single_pathfinder::Pathfinder; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `length` [INFO] [stderr] --> src/cluster.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use length; [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/cluster.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | radius [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/cluster.rs:70:22 [INFO] [stderr] | [INFO] [stderr] 70 | let radius = self.members.iter().map(|x| self.distance.measure(self.array.row(*x).view(), self.center.view())).sum::() / self.weight as f64; [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 imports: `Array`, `Axis`, `Ix2` [INFO] [stderr] --> src/main.rs:23:15 [INFO] [stderr] | [INFO] [stderr] 23 | use ndarray::{Array,Axis,Ix1,Ix2,Zip,ArrayView}; [INFO] [stderr] | ^^^^^ ^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rayon::prelude` [INFO] [stderr] --> src/cluster.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use rayon::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `similarity` [INFO] [stderr] --> src/io.rs:457:9 [INFO] [stderr] | [INFO] [stderr] 457 | let similarity = standardized.t().dot(&standardized); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_similarity` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `field` is never read [INFO] [stderr] --> src/main.rs:76:17 [INFO] [stderr] | [INFO] [stderr] 76 | field = refining_field; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `field` is never read [INFO] [stderr] --> src/main.rs:108:17 [INFO] [stderr] | [INFO] [stderr] 108 | field = refining_field; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/mobile_gravity_field.rs:82:18 [INFO] [stderr] | [INFO] [stderr] 82 | for (i,(mut position,new_position_option)) in [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused import: `rayon::prelude` [INFO] [stderr] --> src/cluster.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use rayon::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `step_length` [INFO] [stderr] --> src/mobile_gravity_field.rs:88:47 [INFO] [stderr] | [INFO] [stderr] 88 | if let Some((new_position,step_length)) = new_position_option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_step_length` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `displacement` [INFO] [stderr] --> src/mobile_gravity_field.rs:234:25 [INFO] [stderr] | [INFO] [stderr] 234 | let displacement = self.distance.measure(self.initial_positions.row(point_index),point); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_displacement` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `final_positions` [INFO] [stderr] --> src/mobile_gravity_field.rs:313:13 [INFO] [stderr] | [INFO] [stderr] 313 | let final_positions = self.current_positions.as_ref().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_final_positions` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `candidate_points` is never read [INFO] [stderr] --> src/mobile_gravity_field.rs:378:17 [INFO] [stderr] | [INFO] [stderr] 378 | let mut candidate_points = HashSet::with_capacity(0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `previous_point` [INFO] [stderr] --> src/single_pathfinder.rs:174:29 [INFO] [stderr] | [INFO] [stderr] 174 | for (i,(previous_point,previous_distance)) in sub_points.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_previous_point` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `previous_point` [INFO] [stderr] --> src/single_pathfinder.rs:197:29 [INFO] [stderr] | [INFO] [stderr] 197 | for (i,(previous_point,previous_distance)) in sub_points.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_previous_point` instead [INFO] [stderr] [INFO] [stderr] warning: variable `step_counter` is assigned to, but never used [INFO] [stderr] --> src/single_pathfinder.rs:268:17 [INFO] [stderr] | [INFO] [stderr] 268 | let mut step_counter = 0; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_step_counter` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `distance` [INFO] [stderr] --> src/single_pathfinder.rs:279:30 [INFO] [stderr] | [INFO] [stderr] 279 | while let Some((step,distance)) = self.step_from(point.view(),points) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_distance` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `similarity` [INFO] [stderr] --> src/io.rs:457:9 [INFO] [stderr] | [INFO] [stderr] 457 | let similarity = standardized.t().dot(&standardized); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_similarity` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `field` is never read [INFO] [stderr] --> src/main.rs:76:17 [INFO] [stderr] | [INFO] [stderr] 76 | field = refining_field; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `field` is never read [INFO] [stderr] --> src/main.rs:108:17 [INFO] [stderr] | [INFO] [stderr] 108 | field = refining_field; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/mobile_gravity_field.rs:82:18 [INFO] [stderr] | [INFO] [stderr] 82 | for (i,(mut position,new_position_option)) in [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `step_length` [INFO] [stderr] --> src/mobile_gravity_field.rs:88:47 [INFO] [stderr] | [INFO] [stderr] 88 | if let Some((new_position,step_length)) = new_position_option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_step_length` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `displacement` [INFO] [stderr] --> src/mobile_gravity_field.rs:234:25 [INFO] [stderr] | [INFO] [stderr] 234 | let displacement = self.distance.measure(self.initial_positions.row(point_index),point); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_displacement` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `final_positions` [INFO] [stderr] --> src/mobile_gravity_field.rs:313:13 [INFO] [stderr] | [INFO] [stderr] 313 | let final_positions = self.current_positions.as_ref().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_final_positions` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `candidate_points` is never read [INFO] [stderr] --> src/mobile_gravity_field.rs:378:17 [INFO] [stderr] | [INFO] [stderr] 378 | let mut candidate_points = HashSet::with_capacity(0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `previous_point` [INFO] [stderr] --> src/single_pathfinder.rs:174:29 [INFO] [stderr] | [INFO] [stderr] 174 | for (i,(previous_point,previous_distance)) in sub_points.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_previous_point` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `previous_point` [INFO] [stderr] --> src/single_pathfinder.rs:197:29 [INFO] [stderr] | [INFO] [stderr] 197 | for (i,(previous_point,previous_distance)) in sub_points.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_previous_point` instead [INFO] [stderr] [INFO] [stderr] warning: variable `step_counter` is assigned to, but never used [INFO] [stderr] --> src/single_pathfinder.rs:268:17 [INFO] [stderr] | [INFO] [stderr] 268 | let mut step_counter = 0; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_step_counter` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `distance` [INFO] [stderr] --> src/single_pathfinder.rs:279:30 [INFO] [stderr] | [INFO] [stderr] 279 | while let Some((step,distance)) = self.step_from(point.view(),points) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_distance` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/io.rs:597:9 [INFO] [stderr] | [INFO] [stderr] 597 | let mut means = input.mean_axis(Axis(0)); [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: variable does not need to be mutable [INFO] [stderr] --> src/io.rs:598:9 [INFO] [stderr] | [INFO] [stderr] 598 | let mut variances = input.var_axis(Axis(0),0.); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/io.rs:655:9 [INFO] [stderr] | [INFO] [stderr] 655 | let mut geo = (&slice * &slice).sum_axis(Axis(1)); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/io.rs:597:9 [INFO] [stderr] | [INFO] [stderr] 597 | let mut means = input.mean_axis(Axis(0)); [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: variable does not need to be mutable [INFO] [stderr] --> src/io.rs:598:9 [INFO] [stderr] | [INFO] [stderr] 598 | let mut variances = input.var_axis(Axis(0),0.); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/io.rs:655:9 [INFO] [stderr] | [INFO] [stderr] 655 | let mut geo = (&slice * &slice).sum_axis(Axis(1)); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/single_pathfinder.rs:269:13 [INFO] [stderr] | [INFO] [stderr] 269 | let mut distance = 0.; [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: method is never used: `distance` [INFO] [stderr] --> src/io.rs:258:5 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn distance(&self, p1:ArrayView,p2:ArrayView) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sanitize` [INFO] [stderr] --> src/io.rs:621:1 [INFO] [stderr] | [INFO] [stderr] 621 | pub fn sanitize(mut input: Array) -> Array { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `correlation_matrix` [INFO] [stderr] --> src/io.rs:674:1 [INFO] [stderr] | [INFO] [stderr] 674 | pub fn correlation_matrix(slice: ArrayView) -> Array { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `argsort` [INFO] [stderr] --> src/io.rs:685:1 [INFO] [stderr] | [INFO] [stderr] 685 | fn argsort(input: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `merge_clusters` [INFO] [stderr] --> src/mobile_gravity_field.rs:310:5 [INFO] [stderr] | [INFO] [stderr] 310 | pub fn merge_clusters(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `subsampled_nearest` [INFO] [stderr] --> src/single_pathfinder.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | fn subsampled_nearest(&self,points:Arc>) -> Option<(Array,f64)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `fuzz` [INFO] [stderr] --> src/single_pathfinder.rs:383:5 [INFO] [stderr] | [INFO] [stderr] 383 | pub fn fuzz(&self) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test` [INFO] [stderr] --> src/single_pathfinder.rs:399:1 [INFO] [stderr] | [INFO] [stderr] 399 | fn test(){ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `merge_cluster` [INFO] [stderr] --> src/cluster.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn merge_cluster(&self,cluster: &Cluster) -> Cluster { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/io.rs:143:24 [INFO] [stderr] | [INFO] [stderr] 143 | if arg_struct.sample_subsample.as_ref().unwrap_or(&0) > &(arg_struct.counts.as_ref().unwrap_or(&Array::zeros((0,0))).shape()[0]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------------------------------------------------------------------------ [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `(arg_struct.counts.as_ref().unwrap_or(&Array::zeros((0,0))).shape()[0])` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/io.rs:217:51 [INFO] [stderr] | [INFO] [stderr] 217 | input_features = ((features as f64 * (((1500 - features as i32) as f64) / 7000.).max(0.1)) as usize).max(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(1500 - features as i32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/io.rs:275:28 [INFO] [stderr] | [INFO] [stderr] 275 | let feature = line.unwrap_or("error".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "error".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/io.rs:286:96 [INFO] [stderr] | [INFO] [stderr] 286 | let mut header_inter: Vec<(String,usize)> = header_map.iter().map(|x| (x.0.clone().clone(),x.1.clone())).collect(); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*x.1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/io.rs:368:78 [INFO] [stderr] | [INFO] [stderr] 368 | let array = Array::from_shape_vec((samples,counts.len()/samples),counts).unwrap_or(Array::zeros((0,0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| Array::zeros((0,0)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/io.rs:423:78 [INFO] [stderr] | [INFO] [stderr] 423 | let array = Array::from_shape_vec((samples,counts.len()/samples),counts).unwrap_or(Array::zeros((0,0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| Array::zeros((0,0)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io.rs:430:47 [INFO] [stderr] | [INFO] [stderr] 430 | pub fn borrow(input: Array, distance:&Distance,verbose:bool) -> Array { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Distance` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/single_pathfinder.rs:269:13 [INFO] [stderr] | [INFO] [stderr] 269 | let mut distance = 0.; [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/io.rs:622:9 [INFO] [stderr] | [INFO] [stderr] 622 | for ref mut feature in input.axis_iter_mut(Axis(1)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ---------------------------- help: try: `let feature = &mut input.axis_iter_mut(Axis(1));` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/io.rs:642:32 [INFO] [stderr] | [INFO] [stderr] 642 | products[[i,j]] /= (&geo[i] * &geo[j]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 642 | products[[i,j]] /= (geo[i] * geo[j]) [INFO] [stderr] | ^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/io.rs:660:38 [INFO] [stderr] | [INFO] [stderr] 660 | products[[i,j]] = 1.0 / (&geo[i] + &geo[j] - 2.0 * products[[i,j]]).sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 660 | products[[i,j]] = 1.0 / (geo[i] + geo[j] - 2.0 * products[[i,j]]).sqrt(); [INFO] [stderr] | ^^^^^^ ^^^^^^ [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/io.rs:685:19 [INFO] [stderr] | [INFO] [stderr] 685 | fn argsort(input: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f64]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io.rs:716:20 [INFO] [stderr] | [INFO] [stderr] 716 | pub fn measure(&self,p1:ArrayView,p2:ArrayView) -> f64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: method is never used: `distance` [INFO] [stderr] --> src/io.rs:258:5 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn distance(&self, p1:ArrayView,p2:ArrayView) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sanitize` [INFO] [stderr] --> src/io.rs:621:1 [INFO] [stderr] | [INFO] [stderr] 621 | pub fn sanitize(mut input: Array) -> Array { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `correlation_matrix` [INFO] [stderr] --> src/io.rs:674:1 [INFO] [stderr] | [INFO] [stderr] 674 | pub fn correlation_matrix(slice: ArrayView) -> Array { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `argsort` [INFO] [stderr] --> src/io.rs:685:1 [INFO] [stderr] | [INFO] [stderr] 685 | fn argsort(input: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `merge_clusters` [INFO] [stderr] --> src/mobile_gravity_field.rs:310:5 [INFO] [stderr] | [INFO] [stderr] 310 | pub fn merge_clusters(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `subsampled_nearest` [INFO] [stderr] --> src/single_pathfinder.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | fn subsampled_nearest(&self,points:Arc>) -> Option<(Array,f64)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `fuzz` [INFO] [stderr] --> src/single_pathfinder.rs:383:5 [INFO] [stderr] | [INFO] [stderr] 383 | pub fn fuzz(&self) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test` [INFO] [stderr] --> src/single_pathfinder.rs:399:1 [INFO] [stderr] | [INFO] [stderr] 399 | fn test(){ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `merge_cluster` [INFO] [stderr] --> src/cluster.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn merge_cluster(&self,cluster: &Cluster) -> Cluster { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:809:13 [INFO] [stderr] | [INFO] [stderr] 809 | target_file.write(&formatted.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:810:13 [INFO] [stderr] | [INFO] [stderr] 810 | target_file.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:816:13 [INFO] [stderr] | [INFO] [stderr] 816 | stdout_handle.write(&formatted.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:817:13 [INFO] [stderr] | [INFO] [stderr] 817 | stdout_handle.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:834:13 [INFO] [stderr] | [INFO] [stderr] 834 | target_file.write(&formatted.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:835:13 [INFO] [stderr] | [INFO] [stderr] 835 | target_file.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:841:13 [INFO] [stderr] | [INFO] [stderr] 841 | stdout_handle.write(&formatted.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:842:13 [INFO] [stderr] | [INFO] [stderr] 842 | stdout_handle.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/io.rs:143:24 [INFO] [stderr] | [INFO] [stderr] 143 | if arg_struct.sample_subsample.as_ref().unwrap_or(&0) > &(arg_struct.counts.as_ref().unwrap_or(&Array::zeros((0,0))).shape()[0]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------------------------------------------------------------------------ [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `(arg_struct.counts.as_ref().unwrap_or(&Array::zeros((0,0))).shape()[0])` [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: identical conversion [INFO] [stderr] --> src/mobile_gravity_field.rs:216:52 [INFO] [stderr] | [INFO] [stderr] 216 | let mut available_points: HashSet = (0..final_positions.shape()[0]).into_iter().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..final_positions.shape()[0])` [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/mobile_gravity_field.rs:226:19 [INFO] [stderr] | [INFO] [stderr] 226 | while available_points.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!available_points.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 one [INFO] [stderr] --> src/mobile_gravity_field.rs:287:20 [INFO] [stderr] | [INFO] [stderr] 287 | if moved_points.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moved_points.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: unused label `'j_loop` [INFO] [stderr] --> src/mobile_gravity_field.rs:325:17 [INFO] [stderr] | [INFO] [stderr] 325 | / 'j_loop: for j in 0..clusters.len() { [INFO] [stderr] 326 | | if i != j { [INFO] [stderr] 327 | | [INFO] [stderr] 328 | | let c2 = &clusters[j]; [INFO] [stderr] ... | [INFO] [stderr] 351 | | } [INFO] [stderr] 352 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_label)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_label [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `clusters` [INFO] [stderr] --> src/mobile_gravity_field.rs:325:35 [INFO] [stderr] | [INFO] [stderr] 325 | 'j_loop: for j in 0..clusters.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 325 | 'j_loop: for (j, ) in clusters.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/mobile_gravity_field.rs:383:32 [INFO] [stderr] | [INFO] [stderr] 383 | candidate_points = (0..self.samples).into_iter().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..self.samples)` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/io.rs:217:51 [INFO] [stderr] | [INFO] [stderr] 217 | input_features = ((features as f64 * (((1500 - features as i32) as f64) / 7000.).max(0.1)) as usize).max(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(1500 - features as i32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/io.rs:275:28 [INFO] [stderr] | [INFO] [stderr] 275 | let feature = line.unwrap_or("error".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "error".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/io.rs:286:96 [INFO] [stderr] | [INFO] [stderr] 286 | let mut header_inter: Vec<(String,usize)> = header_map.iter().map(|x| (x.0.clone().clone(),x.1.clone())).collect(); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*x.1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/single_pathfinder.rs:249:27 [INFO] [stderr] | [INFO] [stderr] 249 | jump_point /= bag_counter as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(bag_counter)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/io.rs:368:78 [INFO] [stderr] | [INFO] [stderr] 368 | let array = Array::from_shape_vec((samples,counts.len()/samples),counts).unwrap_or(Array::zeros((0,0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| Array::zeros((0,0)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:126:21 [INFO] [stderr] | [INFO] [stderr] 126 | cluster_file.write(format!("{:?}",cluster.center()).as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/io.rs:423:78 [INFO] [stderr] | [INFO] [stderr] 423 | let array = Array::from_shape_vec((samples,counts.len()/samples),counts).unwrap_or(Array::zeros((0,0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| Array::zeros((0,0)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io.rs:430:47 [INFO] [stderr] | [INFO] [stderr] 430 | pub fn borrow(input: Array, distance:&Distance,verbose:bool) -> Array { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Distance` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/io.rs:622:9 [INFO] [stderr] | [INFO] [stderr] 622 | for ref mut feature in input.axis_iter_mut(Axis(1)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ---------------------------- help: try: `let feature = &mut input.axis_iter_mut(Axis(1));` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/io.rs:642:32 [INFO] [stderr] | [INFO] [stderr] 642 | products[[i,j]] /= (&geo[i] * &geo[j]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 642 | products[[i,j]] /= (geo[i] * geo[j]) [INFO] [stderr] | ^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] error: Could not compile `gravity_clustering`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/io.rs:660:38 [INFO] [stderr] | [INFO] [stderr] 660 | products[[i,j]] = 1.0 / (&geo[i] + &geo[j] - 2.0 * products[[i,j]]).sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 660 | products[[i,j]] = 1.0 / (geo[i] + geo[j] - 2.0 * products[[i,j]]).sqrt(); [INFO] [stderr] | ^^^^^^ ^^^^^^ [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/io.rs:685:19 [INFO] [stderr] | [INFO] [stderr] 685 | fn argsort(input: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f64]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io.rs:716:20 [INFO] [stderr] | [INFO] [stderr] 716 | pub fn measure(&self,p1:ArrayView,p2:ArrayView) -> f64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:809:13 [INFO] [stderr] | [INFO] [stderr] 809 | target_file.write(&formatted.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:810:13 [INFO] [stderr] | [INFO] [stderr] 810 | target_file.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:816:13 [INFO] [stderr] | [INFO] [stderr] 816 | stdout_handle.write(&formatted.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:817:13 [INFO] [stderr] | [INFO] [stderr] 817 | stdout_handle.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:834:13 [INFO] [stderr] | [INFO] [stderr] 834 | target_file.write(&formatted.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:835:13 [INFO] [stderr] | [INFO] [stderr] 835 | target_file.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:841:13 [INFO] [stderr] | [INFO] [stderr] 841 | stdout_handle.write(&formatted.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/io.rs:842:13 [INFO] [stderr] | [INFO] [stderr] 842 | stdout_handle.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/mobile_gravity_field.rs:216:52 [INFO] [stderr] | [INFO] [stderr] 216 | let mut available_points: HashSet = (0..final_positions.shape()[0]).into_iter().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..final_positions.shape()[0])` [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/mobile_gravity_field.rs:226:19 [INFO] [stderr] | [INFO] [stderr] 226 | while available_points.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!available_points.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 one [INFO] [stderr] --> src/mobile_gravity_field.rs:287:20 [INFO] [stderr] | [INFO] [stderr] 287 | if moved_points.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moved_points.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: unused label `'j_loop` [INFO] [stderr] --> src/mobile_gravity_field.rs:325:17 [INFO] [stderr] | [INFO] [stderr] 325 | / 'j_loop: for j in 0..clusters.len() { [INFO] [stderr] 326 | | if i != j { [INFO] [stderr] 327 | | [INFO] [stderr] 328 | | let c2 = &clusters[j]; [INFO] [stderr] ... | [INFO] [stderr] 351 | | } [INFO] [stderr] 352 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_label)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_label [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `clusters` [INFO] [stderr] --> src/mobile_gravity_field.rs:325:35 [INFO] [stderr] | [INFO] [stderr] 325 | 'j_loop: for j in 0..clusters.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 325 | 'j_loop: for (j, ) in clusters.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/mobile_gravity_field.rs:383:32 [INFO] [stderr] | [INFO] [stderr] 383 | candidate_points = (0..self.samples).into_iter().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..self.samples)` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/single_pathfinder.rs:249:27 [INFO] [stderr] | [INFO] [stderr] 249 | jump_point /= bag_counter as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(bag_counter)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:126:21 [INFO] [stderr] | [INFO] [stderr] 126 | cluster_file.write(format!("{:?}",cluster.center()).as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `gravity_clustering`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "95f4b6060a663ffd8f45bb63eef1619948268260b83f7850582b38bffcb4de13"` [INFO] running `"docker" "rm" "-f" "95f4b6060a663ffd8f45bb63eef1619948268260b83f7850582b38bffcb4de13"` [INFO] [stdout] 95f4b6060a663ffd8f45bb63eef1619948268260b83f7850582b38bffcb4de13