[INFO] crate processig 0.0.2 is already in cache [INFO] extracting crate processig 0.0.2 into work/ex/clippy-test-run/sources/stable/reg/processig/0.0.2 [INFO] extracting crate processig 0.0.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/processig/0.0.2 [INFO] validating manifest of processig-0.0.2 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 processig-0.0.2 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 processig-0.0.2 [INFO] finished frobbing processig-0.0.2 [INFO] frobbed toml for processig-0.0.2 written to work/ex/clippy-test-run/sources/stable/reg/processig/0.0.2/Cargo.toml [INFO] started frobbing processig-0.0.2 [INFO] finished frobbing processig-0.0.2 [INFO] frobbed toml for processig-0.0.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/processig/0.0.2/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 processig-0.0.2 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/reg/processig/0.0.2:/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] 7a98131e6ea42d8cb59c204ac5def978a779cca713e9becb265ee711674392da [INFO] running `"docker" "start" "-a" "7a98131e6ea42d8cb59c204ac5def978a779cca713e9becb265ee711674392da"` [INFO] [stderr] Checking mazth v0.2.1 [INFO] [stderr] Checking zpatial v0.0.0 [INFO] [stderr] Checking ndarray v0.12.1 [INFO] [stderr] Checking num v0.2.0 [INFO] [stderr] Checking pretty_env_logger v0.2.5 [INFO] [stderr] Checking image v0.20.1 [INFO] [stderr] Checking processig v0.0.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/kalman_fuse.rs:159:19 [INFO] [stderr] | [INFO] [stderr] 159 | Ok( Weights { weights: weights } ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `weights` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/fft.rs:143:21 [INFO] [stderr] | [INFO] [stderr] 143 | let mut w = complex::Complex::new( 1f32, 0f32 ); //twiddle factor [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/kalman_fuse.rs:159:19 [INFO] [stderr] | [INFO] [stderr] 159 | Ok( Weights { weights: weights } ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `weights` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/fft.rs:143:21 [INFO] [stderr] | [INFO] [stderr] 143 | let mut w = complex::Complex::new( 1f32, 0f32 ); //twiddle factor [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unused import: `ndarray::prelude::*` [INFO] [stderr] --> src/kalman_fuse.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use ndarray::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `utility` [INFO] [stderr] --> src/kalman_fuse.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use utility; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Index` [INFO] [stderr] --> src/kalman_fuse.rs:10:16 [INFO] [stderr] | [INFO] [stderr] 10 | use std::ops::{Index, IndexMut}; [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/fft.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | ret [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/fft.rs:55:15 [INFO] [stderr] | [INFO] [stderr] 55 | let ret = v.iter().map(|x| x.re / n as f32 ).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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/fft.rs:65:5 [INFO] [stderr] | [INFO] [stderr] 65 | ret [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/fft.rs:64:15 [INFO] [stderr] | [INFO] [stderr] 64 | let ret = v.iter().map(|x| x.re / n as f32 ).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 import: `self::ndarray::prelude::*` [INFO] [stderr] --> src/pursuit.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use self::ndarray::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `IndexMut` [INFO] [stderr] --> src/kalman_fuse.rs:10:23 [INFO] [stderr] | [INFO] [stderr] 10 | use std::ops::{Index, IndexMut}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/pursuit.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | _ => { unimplemented!(); }, [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/pursuit.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | _ => { [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/pursuit.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | _ => { panic!("unexpected signal type"); } [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a` [INFO] [stderr] --> src/pursuit.rs:42:21 [INFO] [stderr] | [INFO] [stderr] 42 | fn interp_discrete( a: & Signal, len: usize ) -> Signal { [INFO] [stderr] | ^ help: consider using `_a` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `len` [INFO] [stderr] --> src/pursuit.rs:42:34 [INFO] [stderr] | [INFO] [stderr] 42 | fn interp_discrete( a: & Signal, len: usize ) -> Signal { [INFO] [stderr] | ^^^ help: consider using `_len` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/pursuit.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | let mut temp_a : Signal; [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/pursuit.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | let mut temp_b : Signal; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [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/kalman_fuse.rs:26:41 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn vector_calc_stats( input_sample: &Vec< Vec< Vec< f64 > > > ) -> Result< Stats, Error > { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec< Vec< 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: called `.iter().nth()` on a slice. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/kalman_fuse.rs:33:31 [INFO] [stderr] | [INFO] [stderr] 33 | let sample_length = match input_sample.iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_nth)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a slice. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/kalman_fuse.rs:38:36 [INFO] [stderr] | [INFO] [stderr] 38 | let data_vector_length = match input_sample.iter().nth(0).unwrap().iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/kalman_fuse.rs:73:17 [INFO] [stderr] | [INFO] [stderr] 73 | *i = *i / sample_length as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*i /= sample_length as f64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `input_sample` [INFO] [stderr] --> src/kalman_fuse.rs:87:14 [INFO] [stderr] | [INFO] [stderr] 87 | for i in 0..num_sources { [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] 87 | for (i, ) in input_sample.iter().enumerate().take(num_sources) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/kalman_fuse.rs:99:21 [INFO] [stderr] | [INFO] [stderr] 99 | a = a + temp; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `a += temp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/kalman_fuse.rs:162:51 [INFO] [stderr] | [INFO] [stderr] 162 | pub fn vector_fuse_data( w: &Weights, input_data: &Vec< Vec< f64 > > ) -> Result< Vec, Error > { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec< f64 >]` [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: the loop variable `i` is used to index `x` [INFO] [stderr] --> src/kalman_fuse.rs:181:18 [INFO] [stderr] | [INFO] [stderr] 181 | for i in 0.. min(4, data_vector_length) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 181 | for (i, ) in x.iter().enumerate().take(min(4, data_vector_length)) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/kalman_fuse.rs:181:18 [INFO] [stderr] | [INFO] [stderr] 181 | for i in 0.. min(4, data_vector_length) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `m._val[..min(4, data_vector_length)].clone_from_slice(&x[..min(4, data_vector_length)])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `ret` [INFO] [stderr] --> src/kalman_fuse.rs:196:14 [INFO] [stderr] | [INFO] [stderr] 196 | for i in 0..4 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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] 196 | for (i, ) in ret.iter_mut().enumerate().take(4) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/kalman_fuse.rs:196:14 [INFO] [stderr] | [INFO] [stderr] 196 | for i in 0..4 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `ret[..4].clone_from_slice(&fused._val[..4])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utility.rs:2:8 [INFO] [stderr] | [INFO] [stderr] 2 | if arr.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `arr.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: item `distribution::CachedDistrStat` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/distribution.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | / impl CachedDistrStat { [INFO] [stderr] 17 | | pub fn len( & self ) -> usize { [INFO] [stderr] 18 | | self.prec.len() [INFO] [stderr] 19 | | } [INFO] [stderr] ... | [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | i = i << 1; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `i <<= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | i = i << 1; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `i <<= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | w = w * w_base; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `w *= w_base` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:110:9 [INFO] [stderr] | [INFO] [stderr] 110 | input = input >> 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `input >>= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | n_copy = n_copy << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `n_copy <<= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `arr` [INFO] [stderr] --> src/fft.rs:128:14 [INFO] [stderr] | [INFO] [stderr] 128 | for i in 0..n { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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] 128 | for (i, ) in arr.iter().enumerate().take(n) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:149:17 [INFO] [stderr] | [INFO] [stderr] 149 | w = w * w_base; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `w *= w_base` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/pursuit.rs:78:32 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn matching_pursuit( dict: & Vec< Signal >, s: &Signal, criteria: & Criteria ) -> Result< ( Sparse, f64 ), Error > { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Signal]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/pursuit.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / match v { [INFO] [stderr] 134 | | Some(x) => { [INFO] [stderr] 135 | | sparse.0.push( ( e, x ) ); //found a support with a weighting [INFO] [stderr] 136 | | }, [INFO] [stderr] 137 | | _ => {}, [INFO] [stderr] 138 | | } [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] 133 | if let Some(x) = v { [INFO] [stderr] 134 | sparse.0.push( ( e, x ) ); //found a support with a weighting [INFO] [stderr] 135 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/kalman.rs:58:43 [INFO] [stderr] | [INFO] [stderr] 58 | let expected_precisions = &[ 0.12006, 0.012757, 1.190476 ]; [INFO] [stderr] | ^^^^^^^^ help: consider: `0.012_757` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/kalman.rs:58:53 [INFO] [stderr] | [INFO] [stderr] 58 | let expected_precisions = &[ 0.12006, 0.012757, 1.190476 ]; [INFO] [stderr] | ^^^^^^^^ help: consider: `1.190_476` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/kalman.rs:72:41 [INFO] [stderr] | [INFO] [stderr] 72 | let expected_precision_weights = &[ 0.0907282, 0.0096402, 0.8996315 ]; [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.090_728_2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/kalman.rs:72:52 [INFO] [stderr] | [INFO] [stderr] 72 | let expected_precision_weights = &[ 0.0907282, 0.0096402, 0.8996315 ]; [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.009_640_2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/kalman.rs:72:63 [INFO] [stderr] | [INFO] [stderr] 72 | let expected_precision_weights = &[ 0.0907282, 0.0096402, 0.8996315 ]; [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.899_631_5` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `ndarray::prelude::*` [INFO] [stderr] --> src/kalman_fuse.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use ndarray::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `utility` [INFO] [stderr] --> src/kalman_fuse.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use utility; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Index` [INFO] [stderr] --> src/kalman_fuse.rs:10:16 [INFO] [stderr] | [INFO] [stderr] 10 | use std::ops::{Index, IndexMut}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/kalman_fuse.rs:206:5 [INFO] [stderr] | [INFO] [stderr] 206 | /// test with 3 data sources each with vector length of 4 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/utility.rs:39:25 [INFO] [stderr] | [INFO] [stderr] 39 | assert!( n < 14.6 + 0.00000001 ); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.000_000_01` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/utility.rs:40:25 [INFO] [stderr] | [INFO] [stderr] 40 | assert!( n > 14.6 - 0.00000001 ); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.000_000_01` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/fft.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | ret [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/fft.rs:55:15 [INFO] [stderr] | [INFO] [stderr] 55 | let ret = v.iter().map(|x| x.re / n as f32 ).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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/fft.rs:65:5 [INFO] [stderr] | [INFO] [stderr] 65 | ret [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/fft.rs:64:15 [INFO] [stderr] | [INFO] [stderr] 64 | let ret = v.iter().map(|x| x.re / n as f32 ).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: long literal lacking separators [INFO] [stderr] --> src/fft.rs:206:29 [INFO] [stderr] | [INFO] [stderr] 206 | let ret = reverse_bits( 0b1110101, 7 ); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0b111_0101` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fft.rs:207:22 [INFO] [stderr] | [INFO] [stderr] 207 | assert_eq!( ret, 0b1010111 ); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0b101_0111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::ndarray::prelude::*` [INFO] [stderr] --> src/pursuit.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use self::ndarray::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `IndexMut` [INFO] [stderr] --> src/kalman_fuse.rs:10:23 [INFO] [stderr] | [INFO] [stderr] 10 | use std::ops::{Index, IndexMut}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/pursuit.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | _ => { unimplemented!(); }, [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/pursuit.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | _ => { [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/pursuit.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | _ => { panic!("unexpected signal type"); } [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/pursuit.rs:185:21 [INFO] [stderr] | [INFO] [stderr] 185 | _ => {}, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a` [INFO] [stderr] --> src/pursuit.rs:42:21 [INFO] [stderr] | [INFO] [stderr] 42 | fn interp_discrete( a: & Signal, len: usize ) -> Signal { [INFO] [stderr] | ^ help: consider using `_a` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `len` [INFO] [stderr] --> src/pursuit.rs:42:34 [INFO] [stderr] | [INFO] [stderr] 42 | fn interp_discrete( a: & Signal, len: usize ) -> Signal { [INFO] [stderr] | ^^^ help: consider using `_len` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mu0` [INFO] [stderr] --> src/kalman_fuse.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | let mu0 = 2.0; [INFO] [stderr] | ^^^ help: consider using `_mu0` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sigma0` [INFO] [stderr] --> src/kalman_fuse.rs:210:9 [INFO] [stderr] | [INFO] [stderr] 210 | let sigma0 = 1.0; [INFO] [stderr] | ^^^^^^ help: consider using `_sigma0` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mu1` [INFO] [stderr] --> src/kalman_fuse.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | let mu1 = 10.0; [INFO] [stderr] | ^^^ help: consider using `_mu1` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sigma1` [INFO] [stderr] --> src/kalman_fuse.rs:225:9 [INFO] [stderr] | [INFO] [stderr] 225 | let sigma1 = 5.0; [INFO] [stderr] | ^^^^^^ help: consider using `_sigma1` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mu2` [INFO] [stderr] --> src/kalman_fuse.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | let mu2 = -3.0; [INFO] [stderr] | ^^^ help: consider using `_mu2` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sigma2` [INFO] [stderr] --> src/kalman_fuse.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | let sigma2 = 2.0; [INFO] [stderr] | ^^^^^^ help: consider using `_sigma2` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/pursuit.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | let mut temp_a : Signal; [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/pursuit.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | let mut temp_b : Signal; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [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/kalman_fuse.rs:26:41 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn vector_calc_stats( input_sample: &Vec< Vec< Vec< f64 > > > ) -> Result< Stats, Error > { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec< Vec< 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: called `.iter().nth()` on a slice. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/kalman_fuse.rs:33:31 [INFO] [stderr] | [INFO] [stderr] 33 | let sample_length = match input_sample.iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_nth)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a slice. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/kalman_fuse.rs:38:36 [INFO] [stderr] | [INFO] [stderr] 38 | let data_vector_length = match input_sample.iter().nth(0).unwrap().iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/kalman_fuse.rs:73:17 [INFO] [stderr] | [INFO] [stderr] 73 | *i = *i / sample_length as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*i /= sample_length as f64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `input_sample` [INFO] [stderr] --> src/kalman_fuse.rs:87:14 [INFO] [stderr] | [INFO] [stderr] 87 | for i in 0..num_sources { [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] 87 | for (i, ) in input_sample.iter().enumerate().take(num_sources) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/kalman_fuse.rs:99:21 [INFO] [stderr] | [INFO] [stderr] 99 | a = a + temp; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `a += temp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/kalman_fuse.rs:162:51 [INFO] [stderr] | [INFO] [stderr] 162 | pub fn vector_fuse_data( w: &Weights, input_data: &Vec< Vec< f64 > > ) -> Result< Vec, Error > { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec< f64 >]` [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: the loop variable `i` is used to index `x` [INFO] [stderr] --> src/kalman_fuse.rs:181:18 [INFO] [stderr] | [INFO] [stderr] 181 | for i in 0.. min(4, data_vector_length) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 181 | for (i, ) in x.iter().enumerate().take(min(4, data_vector_length)) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/kalman_fuse.rs:181:18 [INFO] [stderr] | [INFO] [stderr] 181 | for i in 0.. min(4, data_vector_length) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `m._val[..min(4, data_vector_length)].clone_from_slice(&x[..min(4, data_vector_length)])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `ret` [INFO] [stderr] --> src/kalman_fuse.rs:196:14 [INFO] [stderr] | [INFO] [stderr] 196 | for i in 0..4 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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] 196 | for (i, ) in ret.iter_mut().enumerate().take(4) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/kalman_fuse.rs:196:14 [INFO] [stderr] | [INFO] [stderr] 196 | for i in 0..4 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `ret[..4].clone_from_slice(&fused._val[..4])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/kalman_fuse.rs:222:7 [INFO] [stderr] | [INFO] [stderr] 222 | ].into_iter().map(|x| x.to_vec() ).collect::< Vec< Vec< f64 > > >(); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::into_iter_on_array)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/kalman_fuse.rs:237:7 [INFO] [stderr] | [INFO] [stderr] 237 | ].into_iter().map(|x| x.to_vec() ).collect::< Vec< Vec< f64 > > >(); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/kalman_fuse.rs:252:7 [INFO] [stderr] | [INFO] [stderr] 252 | ].into_iter().map(|x| x.to_vec() ).collect::< Vec< Vec< f64 > > >(); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/kalman_fuse.rs:279:7 [INFO] [stderr] | [INFO] [stderr] 279 | ].into_iter().map(|x| x.to_vec() ).collect::< Vec< Vec< f64 > > >(); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utility.rs:2:8 [INFO] [stderr] | [INFO] [stderr] 2 | if arr.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `arr.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: item `distribution::CachedDistrStat` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/distribution.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | / impl CachedDistrStat { [INFO] [stderr] 17 | | pub fn len( & self ) -> usize { [INFO] [stderr] 18 | | self.prec.len() [INFO] [stderr] 19 | | } [INFO] [stderr] ... | [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | i = i << 1; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `i <<= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | i = i << 1; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `i <<= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | w = w * w_base; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `w *= w_base` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:110:9 [INFO] [stderr] | [INFO] [stderr] 110 | input = input >> 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `input >>= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | n_copy = n_copy << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `n_copy <<= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `arr` [INFO] [stderr] --> src/fft.rs:128:14 [INFO] [stderr] | [INFO] [stderr] 128 | for i in 0..n { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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] 128 | for (i, ) in arr.iter().enumerate().take(n) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fft.rs:149:17 [INFO] [stderr] | [INFO] [stderr] 149 | w = w * w_base; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `w *= w_base` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:269:48 [INFO] [stderr] | [INFO] [stderr] 269 | complex::Complex{ re: 0.7071, im: -0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:269:62 [INFO] [stderr] | [INFO] [stderr] 269 | complex::Complex{ re: 0.7071, im: -0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:271:49 [INFO] [stderr] | [INFO] [stderr] 271 | complex::Complex{ re: -0.7071, im: -0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:271:62 [INFO] [stderr] | [INFO] [stderr] 271 | complex::Complex{ re: -0.7071, im: -0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:273:49 [INFO] [stderr] | [INFO] [stderr] 273 | complex::Complex{ re: -0.7071, im: 0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:273:61 [INFO] [stderr] | [INFO] [stderr] 273 | complex::Complex{ re: -0.7071, im: 0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:275:48 [INFO] [stderr] | [INFO] [stderr] 275 | complex::Complex{ re: 0.7071, im: 0.7071 } ]; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:275:61 [INFO] [stderr] | [INFO] [stderr] 275 | complex::Complex{ re: 0.7071, im: 0.7071 } ]; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:288:48 [INFO] [stderr] | [INFO] [stderr] 288 | complex::Complex{ re: 0.7071, im: -0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:288:62 [INFO] [stderr] | [INFO] [stderr] 288 | complex::Complex{ re: 0.7071, im: -0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:290:49 [INFO] [stderr] | [INFO] [stderr] 290 | complex::Complex{ re: -0.7071, im: -0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:290:62 [INFO] [stderr] | [INFO] [stderr] 290 | complex::Complex{ re: -0.7071, im: -0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:292:49 [INFO] [stderr] | [INFO] [stderr] 292 | complex::Complex{ re: -0.7071, im: 0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:292:61 [INFO] [stderr] | [INFO] [stderr] 292 | complex::Complex{ re: -0.7071, im: 0.7071 }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:294:48 [INFO] [stderr] | [INFO] [stderr] 294 | complex::Complex{ re: 0.7071, im: 0.7071 } ]; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/fft.rs:294:61 [INFO] [stderr] | [INFO] [stderr] 294 | complex::Complex{ re: 0.7071, im: 0.7071 } ]; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [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/pursuit.rs:78:32 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn matching_pursuit( dict: & Vec< Signal >, s: &Signal, criteria: & Criteria ) -> Result< ( Sparse, f64 ), Error > { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Signal]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/pursuit.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / match v { [INFO] [stderr] 134 | | Some(x) => { [INFO] [stderr] 135 | | sparse.0.push( ( e, x ) ); //found a support with a weighting [INFO] [stderr] 136 | | }, [INFO] [stderr] 137 | | _ => {}, [INFO] [stderr] 138 | | } [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] 133 | if let Some(x) = v { [INFO] [stderr] 134 | sparse.0.push( ( e, x ) ); //found a support with a weighting [INFO] [stderr] 135 | } [INFO] [stderr] | [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/pursuit.rs:179:17 [INFO] [stderr] | [INFO] [stderr] 179 | / match &dict[idx] { [INFO] [stderr] 180 | | Signal::Discrete(v) => { [INFO] [stderr] 181 | | for j in 0..v.len() { [INFO] [stderr] 182 | | reconstruct[j] += v[j] * scale; [INFO] [stderr] ... | [INFO] [stderr] 185 | | _ => {}, [INFO] [stderr] 186 | | } [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] 179 | if let Signal::Discrete(v) = &dict[idx] { [INFO] [stderr] 180 | for j in 0..v.len() { [INFO] [stderr] 181 | reconstruct[j] += v[j] * scale; [INFO] [stderr] 182 | } [INFO] [stderr] 183 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 20 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `processig`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "7a98131e6ea42d8cb59c204ac5def978a779cca713e9becb265ee711674392da"` [INFO] running `"docker" "rm" "-f" "7a98131e6ea42d8cb59c204ac5def978a779cca713e9becb265ee711674392da"` [INFO] [stdout] 7a98131e6ea42d8cb59c204ac5def978a779cca713e9becb265ee711674392da