[INFO] crate lfa 0.6.0 is already in cache [INFO] extracting crate lfa 0.6.0 into work/ex/clippy-test-run/sources/stable/reg/lfa/0.6.0 [INFO] extracting crate lfa 0.6.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lfa/0.6.0 [INFO] validating manifest of lfa-0.6.0 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 lfa-0.6.0 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 lfa-0.6.0 [INFO] finished frobbing lfa-0.6.0 [INFO] frobbed toml for lfa-0.6.0 written to work/ex/clippy-test-run/sources/stable/reg/lfa/0.6.0/Cargo.toml [INFO] started frobbing lfa-0.6.0 [INFO] finished frobbing lfa-0.6.0 [INFO] frobbed toml for lfa-0.6.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lfa/0.6.0/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 lfa-0.6.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/lfa/0.6.0:/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] 59a7271113acb32988cd405c164388ed11bb96dbe8b4ea00288e29006579919e [INFO] running `"docker" "start" "-a" "59a7271113acb32988cd405c164388ed11bb96dbe8b4ea00288e29006579919e"` [INFO] [stderr] Compiling ndarray v0.12.1 [INFO] [stderr] Checking spaces v4.1.0 [INFO] [stderr] Checking lfa v0.6.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `Vector` [INFO] [stderr] --> src/basis/fixed/kernelised.rs:3:18 [INFO] [stderr] | [INFO] [stderr] 3 | Space, Card, Vector, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Vector` [INFO] [stderr] --> src/basis/fixed/kernelised.rs:3:18 [INFO] [stderr] | [INFO] [stderr] 3 | Space, Card, Vector, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/basis/fixed/kernelised.rs:128:52 [INFO] [stderr] | [INFO] [stderr] 128 | assert!(p.all_close(&Vector::from_vec(vec![0.6065307, 0.6065307, 0.0111090]), 1e-6)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.606_530_7` [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/basis/fixed/kernelised.rs:128:63 [INFO] [stderr] | [INFO] [stderr] 128 | assert!(p.all_close(&Vector::from_vec(vec![0.6065307, 0.6065307, 0.0111090]), 1e-6)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.606_530_7` [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/basis/fixed/kernelised.rs:128:74 [INFO] [stderr] | [INFO] [stderr] 128 | assert!(p.all_close(&Vector::from_vec(vec![0.6065307, 0.6065307, 0.0111090]), 1e-6)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.011_109_0` [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/basis/fixed/kernelised.rs:139:52 [INFO] [stderr] | [INFO] [stderr] 139 | assert!(p.all_close(&Vector::from_vec(vec![0.0089491, 0.7003325, 0.369280]), 1e-6)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.008_949_1` [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/basis/fixed/kernelised.rs:139:63 [INFO] [stderr] | [INFO] [stderr] 139 | assert!(p.all_close(&Vector::from_vec(vec![0.0089491, 0.7003325, 0.369280]), 1e-6)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.700_332_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: long literal lacking separators [INFO] [stderr] --> src/basis/fixed/kernelised.rs:139:74 [INFO] [stderr] | [INFO] [stderr] 139 | assert!(p.all_close(&Vector::from_vec(vec![0.0089491, 0.7003325, 0.369280]), 1e-6)); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.369_280` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:3:61 [INFO] [stderr] | [INFO] [stderr] 3 | pub(self) fn partial_cartesian(a: Vec>, b: &Vec) -> Vec> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:17:50 [INFO] [stderr] | [INFO] [stderr] 17 | pub(crate) fn cartesian_product(lists: &Vec>) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Vec]` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/core/projection.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | / match self { [INFO] [stderr] 22 | | &mut Projection::Dense(ref mut activations) => activations[idx] = 0.0, [INFO] [stderr] 23 | | &mut Projection::Sparse(ref mut active_indices) => { [INFO] [stderr] 24 | | active_indices.remove(&idx); [INFO] [stderr] 25 | | }, [INFO] [stderr] 26 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 21 | match *self { [INFO] [stderr] 22 | Projection::Dense(ref mut activations) => activations[idx] = 0.0, [INFO] [stderr] 23 | Projection::Sparse(ref mut active_indices) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/core/projection.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / match self { [INFO] [stderr] 32 | | &Projection::Dense(ref activations) => activations.len(), [INFO] [stderr] 33 | | &Projection::Sparse(ref active_indices) => active_indices.len(), [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 31 | match *self { [INFO] [stderr] 32 | Projection::Dense(ref activations) => activations.len(), [INFO] [stderr] 33 | Projection::Sparse(ref active_indices) => active_indices.len(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/core/projection.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | / match self { [INFO] [stderr] 91 | | &Projection::Dense(ref activations) => activations.index(idx), [INFO] [stderr] 92 | | &Projection::Sparse(ref active_indices) => { [INFO] [stderr] 93 | | if idx < active_indices.len() { [INFO] [stderr] ... | [INFO] [stderr] 98 | | }, [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 90 | match *self { [INFO] [stderr] 91 | Projection::Dense(ref activations) => activations.index(idx), [INFO] [stderr] 92 | Projection::Sparse(ref active_indices) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/core/feature.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | / impl Hash for Feature { [INFO] [stderr] 23 | | fn hash(&self, state: &mut H) { self.index.hash(state); } [INFO] [stderr] 24 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/core/feature.rs:7:24 [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Debug, Clone, PartialEq, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/core/feature.rs:58:1 [INFO] [stderr] | [INFO] [stderr] 58 | / impl Hash for CandidateFeature { [INFO] [stderr] 59 | | fn hash(&self, state: &mut H) { self.parent_indices.hash(state); } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/core/feature.rs:26:24 [INFO] [stderr] | [INFO] [stderr] 26 | #[derive(Debug, Clone, PartialEq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/approximators/scalar.rs:31:12 [INFO] [stderr] | [INFO] [stderr] 31 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 32 | | &Projection::Dense(ref dense) => self.weights.dot(dense), [INFO] [stderr] 33 | | &Projection::Sparse(ref sparse) => { [INFO] [stderr] 34 | | sparse.iter().fold(0.0, |acc, idx| acc + self.weights[*idx]) [INFO] [stderr] 35 | | } [INFO] [stderr] 36 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 31 | Ok(match *p { [INFO] [stderr] 32 | Projection::Dense(ref dense) => self.weights.dot(dense), [INFO] [stderr] 33 | Projection::Sparse(ref sparse) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/approximators/scalar.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 41 | | &Projection::Dense(ref dense) => { [INFO] [stderr] 42 | | let scaled_error = error / l1(dense.as_slice().unwrap()); [INFO] [stderr] 43 | | [INFO] [stderr] ... | [INFO] [stderr] 52 | | }, [INFO] [stderr] 53 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 40 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/approximators/scalar.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 41 | | &Projection::Dense(ref dense) => { [INFO] [stderr] 42 | | let scaled_error = error / l1(dense.as_slice().unwrap()); [INFO] [stderr] 43 | | [INFO] [stderr] ... | [INFO] [stderr] 52 | | }, [INFO] [stderr] 53 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match *p { [INFO] [stderr] 41 | Projection::Dense(ref dense) => { [INFO] [stderr] 42 | let scaled_error = error / l1(dense.as_slice().unwrap()); [INFO] [stderr] 43 | [INFO] [stderr] 44 | self.weights.scaled_add(scaled_error, dense) [INFO] [stderr] 45 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashMap [INFO] [stderr] --> src/approximators/scalar.rs:61:14 [INFO] [stderr] | [INFO] [stderr] 61 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/approximators/vector.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 41 | | &Projection::Dense(ref dense) => self.weights.t().dot(dense), [INFO] [stderr] 42 | | &Projection::Sparse(ref sparse) => (0..self.weights.cols()) [INFO] [stderr] 43 | | .map(|c| sparse [INFO] [stderr] ... | [INFO] [stderr] 47 | | .collect(), [INFO] [stderr] 48 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match *p { [INFO] [stderr] 41 | Projection::Dense(ref dense) => self.weights.t().dot(dense), [INFO] [stderr] 42 | Projection::Sparse(ref sparse) => (0..self.weights.cols()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/approximators/vector.rs:52:12 [INFO] [stderr] | [INFO] [stderr] 52 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 53 | | &Projection::Dense(ref dense) => { [INFO] [stderr] 54 | | let scaled_errors = errors / l1(dense.as_slice().unwrap()); [INFO] [stderr] 55 | | let phi_matrix = dense.view().into_shape((dense.len(), 1)).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 68 | | }, [INFO] [stderr] 69 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 52 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/approximators/vector.rs:52:12 [INFO] [stderr] | [INFO] [stderr] 52 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 53 | | &Projection::Dense(ref dense) => { [INFO] [stderr] 54 | | let scaled_errors = errors / l1(dense.as_slice().unwrap()); [INFO] [stderr] 55 | | let phi_matrix = dense.view().into_shape((dense.len(), 1)).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 68 | | }, [INFO] [stderr] 69 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 52 | Ok(match *p { [INFO] [stderr] 53 | Projection::Dense(ref dense) => { [INFO] [stderr] 54 | let scaled_errors = errors / l1(dense.as_slice().unwrap()); [INFO] [stderr] 55 | let phi_matrix = dense.view().into_shape((dense.len(), 1)).unwrap(); [INFO] [stderr] 56 | let error_matrix = [INFO] [stderr] 57 | scaled_errors.view().into_shape((1, self.weights.cols())).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `c` is used to index `errors` [INFO] [stderr] --> src/approximators/vector.rs:61:57 [INFO] [stderr] | [INFO] [stderr] 61 | &Projection::Sparse(ref sparse) => for c in 0..self.weights.cols() { [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] 61 | &Projection::Sparse(ref sparse) => for (c, ) in errors.iter().enumerate().take(self.weights.cols()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashMap [INFO] [stderr] --> src/approximators/vector.rs:79:14 [INFO] [stderr] | [INFO] [stderr] 79 | .into_iter() [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_ref [INFO] [stderr] [INFO] [stderr] warning: this `.filter_map` can be written more simply using `.filter` [INFO] [stderr] --> src/basis/adaptive/ifdd.rs:94:30 [INFO] [stderr] | [INFO] [stderr] 94 | let np: Vec = (self.base.dim()..self.dim()) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 95 | | .filter_map(|i| { [INFO] [stderr] 96 | | let f = &self.features[i]; [INFO] [stderr] 97 | | [INFO] [stderr] ... | [INFO] [stderr] 102 | | } [INFO] [stderr] 103 | | }) [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_filter_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [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/basis/adaptive/ifdd.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | / match self.add_feature(f) { [INFO] [stderr] 127 | | Some(nf) => { [INFO] [stderr] 128 | | acc.get_or_insert_with(HashMap::new).insert(nf.0, nf.1); [INFO] [stderr] 129 | | } [INFO] [stderr] 130 | | None => (), [INFO] [stderr] 131 | | }; [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] 126 | if let Some(nf) = self.add_feature(f) { [INFO] [stderr] 127 | acc.get_or_insert_with(HashMap::new).insert(nf.0, nf.1); [INFO] [stderr] 128 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/basis/fixed/fourier.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | (0..(order + 1)).map(|v| v as f64).collect::>(); dim [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `(0..=order)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/fourier.rs:43:38 [INFO] [stderr] | [INFO] [stderr] 43 | (0..(order + 1)).map(|v| v as f64).collect::>(); dim [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(v)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:34:24 [INFO] [stderr] | [INFO] [stderr] 34 | let dcs = vec![(0..(order + 1)).map(|v| v as i32).collect::>(); dim]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `(0..=order)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:34:49 [INFO] [stderr] | [INFO] [stderr] 34 | let dcs = vec![(0..(order + 1)).map(|v| v as i32).collect::>(); dim]; [INFO] [stderr] | ^^^^^^^^ help: try: `i32::from(v)` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:79:22 [INFO] [stderr] | [INFO] [stderr] 79 | pub polynomials: Vec f64>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:104:51 [INFO] [stderr] | [INFO] [stderr] 104 | fn make_polynomials(order: u8, dim: usize) -> Vec f64>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | let dcs = vec![(0..(order + 1)).collect::>(); dim]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `(0..=order)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/basis/fixed/tile_coding.rs:8:10 [INFO] [stderr] | [INFO] [stderr] 8 | .into_iter() [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_ref [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `state` [INFO] [stderr] --> src/basis/fixed/tile_coding.rs:25:22 [INFO] [stderr] | [INFO] [stderr] 25 | for i in 0..state_len { [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] 25 | for (i, ) in state.iter().enumerate().take(state_len) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/basis/fixed/random.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | (0..self.n_features).into_iter().map(|_| self.distribution.sample(&mut rng)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..self.n_features)` [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] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `lfa`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:3:61 [INFO] [stderr] | [INFO] [stderr] 3 | pub(self) fn partial_cartesian(a: Vec>, b: &Vec) -> Vec> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:17:50 [INFO] [stderr] | [INFO] [stderr] 17 | pub(crate) fn cartesian_product(lists: &Vec>) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Vec]` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/core/projection.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | / match self { [INFO] [stderr] 22 | | &mut Projection::Dense(ref mut activations) => activations[idx] = 0.0, [INFO] [stderr] 23 | | &mut Projection::Sparse(ref mut active_indices) => { [INFO] [stderr] 24 | | active_indices.remove(&idx); [INFO] [stderr] 25 | | }, [INFO] [stderr] 26 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 21 | match *self { [INFO] [stderr] 22 | Projection::Dense(ref mut activations) => activations[idx] = 0.0, [INFO] [stderr] 23 | Projection::Sparse(ref mut active_indices) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/core/projection.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / match self { [INFO] [stderr] 32 | | &Projection::Dense(ref activations) => activations.len(), [INFO] [stderr] 33 | | &Projection::Sparse(ref active_indices) => active_indices.len(), [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 31 | match *self { [INFO] [stderr] 32 | Projection::Dense(ref activations) => activations.len(), [INFO] [stderr] 33 | Projection::Sparse(ref active_indices) => active_indices.len(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/core/projection.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | / match self { [INFO] [stderr] 91 | | &Projection::Dense(ref activations) => activations.index(idx), [INFO] [stderr] 92 | | &Projection::Sparse(ref active_indices) => { [INFO] [stderr] 93 | | if idx < active_indices.len() { [INFO] [stderr] ... | [INFO] [stderr] 98 | | }, [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 90 | match *self { [INFO] [stderr] 91 | Projection::Dense(ref activations) => activations.index(idx), [INFO] [stderr] 92 | Projection::Sparse(ref active_indices) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/core/feature.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | / impl Hash for Feature { [INFO] [stderr] 23 | | fn hash(&self, state: &mut H) { self.index.hash(state); } [INFO] [stderr] 24 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/core/feature.rs:7:24 [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Debug, Clone, PartialEq, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/core/feature.rs:58:1 [INFO] [stderr] | [INFO] [stderr] 58 | / impl Hash for CandidateFeature { [INFO] [stderr] 59 | | fn hash(&self, state: &mut H) { self.parent_indices.hash(state); } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/core/feature.rs:26:24 [INFO] [stderr] | [INFO] [stderr] 26 | #[derive(Debug, Clone, PartialEq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/approximators/scalar.rs:31:12 [INFO] [stderr] | [INFO] [stderr] 31 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 32 | | &Projection::Dense(ref dense) => self.weights.dot(dense), [INFO] [stderr] 33 | | &Projection::Sparse(ref sparse) => { [INFO] [stderr] 34 | | sparse.iter().fold(0.0, |acc, idx| acc + self.weights[*idx]) [INFO] [stderr] 35 | | } [INFO] [stderr] 36 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 31 | Ok(match *p { [INFO] [stderr] 32 | Projection::Dense(ref dense) => self.weights.dot(dense), [INFO] [stderr] 33 | Projection::Sparse(ref sparse) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/approximators/scalar.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 41 | | &Projection::Dense(ref dense) => { [INFO] [stderr] 42 | | let scaled_error = error / l1(dense.as_slice().unwrap()); [INFO] [stderr] 43 | | [INFO] [stderr] ... | [INFO] [stderr] 52 | | }, [INFO] [stderr] 53 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 40 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/approximators/scalar.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 41 | | &Projection::Dense(ref dense) => { [INFO] [stderr] 42 | | let scaled_error = error / l1(dense.as_slice().unwrap()); [INFO] [stderr] 43 | | [INFO] [stderr] ... | [INFO] [stderr] 52 | | }, [INFO] [stderr] 53 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match *p { [INFO] [stderr] 41 | Projection::Dense(ref dense) => { [INFO] [stderr] 42 | let scaled_error = error / l1(dense.as_slice().unwrap()); [INFO] [stderr] 43 | [INFO] [stderr] 44 | self.weights.scaled_add(scaled_error, dense) [INFO] [stderr] 45 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashMap [INFO] [stderr] --> src/approximators/scalar.rs:61:14 [INFO] [stderr] | [INFO] [stderr] 61 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/approximators/scalar.rs:140:17 [INFO] [stderr] | [INFO] [stderr] 140 | assert_eq!(f.weights[100], f.weights[10] / 2.0 + f.weights[90] / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/approximators/scalar.rs:140:17 [INFO] [stderr] | [INFO] [stderr] 140 | assert_eq!(f.weights[100], f.weights[10] / 2.0 + f.weights[90] / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/approximators/vector.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 41 | | &Projection::Dense(ref dense) => self.weights.t().dot(dense), [INFO] [stderr] 42 | | &Projection::Sparse(ref sparse) => (0..self.weights.cols()) [INFO] [stderr] 43 | | .map(|c| sparse [INFO] [stderr] ... | [INFO] [stderr] 47 | | .collect(), [INFO] [stderr] 48 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 40 | Ok(match *p { [INFO] [stderr] 41 | Projection::Dense(ref dense) => self.weights.t().dot(dense), [INFO] [stderr] 42 | Projection::Sparse(ref sparse) => (0..self.weights.cols()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/approximators/vector.rs:52:12 [INFO] [stderr] | [INFO] [stderr] 52 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 53 | | &Projection::Dense(ref dense) => { [INFO] [stderr] 54 | | let scaled_errors = errors / l1(dense.as_slice().unwrap()); [INFO] [stderr] 55 | | let phi_matrix = dense.view().into_shape((dense.len(), 1)).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 68 | | }, [INFO] [stderr] 69 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 52 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/approximators/vector.rs:52:12 [INFO] [stderr] | [INFO] [stderr] 52 | Ok(match p { [INFO] [stderr] | ____________^ [INFO] [stderr] 53 | | &Projection::Dense(ref dense) => { [INFO] [stderr] 54 | | let scaled_errors = errors / l1(dense.as_slice().unwrap()); [INFO] [stderr] 55 | | let phi_matrix = dense.view().into_shape((dense.len(), 1)).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 68 | | }, [INFO] [stderr] 69 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 52 | Ok(match *p { [INFO] [stderr] 53 | Projection::Dense(ref dense) => { [INFO] [stderr] 54 | let scaled_errors = errors / l1(dense.as_slice().unwrap()); [INFO] [stderr] 55 | let phi_matrix = dense.view().into_shape((dense.len(), 1)).unwrap(); [INFO] [stderr] 56 | let error_matrix = [INFO] [stderr] 57 | scaled_errors.view().into_shape((1, self.weights.cols())).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `c` is used to index `errors` [INFO] [stderr] --> src/approximators/vector.rs:61:57 [INFO] [stderr] | [INFO] [stderr] 61 | &Projection::Sparse(ref sparse) => for c in 0..self.weights.cols() { [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] 61 | &Projection::Sparse(ref sparse) => for (c, ) in errors.iter().enumerate().take(self.weights.cols()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashMap [INFO] [stderr] --> src/approximators/vector.rs:79:14 [INFO] [stderr] | [INFO] [stderr] 79 | .into_iter() [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_ref [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/approximators/vector.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | assert_eq!(c0[100], c0[10] / 2.0 + c0[90] / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/approximators/vector.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | assert_eq!(c0[100], c0[10] / 2.0 + c0[90] / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/approximators/vector.rs:175:17 [INFO] [stderr] | [INFO] [stderr] 175 | assert_eq!(c1[100], c1[10] / 2.0 + c1[90] / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/approximators/vector.rs:175:17 [INFO] [stderr] | [INFO] [stderr] 175 | assert_eq!(c1[100], c1[10] / 2.0 + c1[90] / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: this `.filter_map` can be written more simply using `.filter` [INFO] [stderr] --> src/basis/adaptive/ifdd.rs:94:30 [INFO] [stderr] | [INFO] [stderr] 94 | let np: Vec = (self.base.dim()..self.dim()) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 95 | | .filter_map(|i| { [INFO] [stderr] 96 | | let f = &self.features[i]; [INFO] [stderr] 97 | | [INFO] [stderr] ... | [INFO] [stderr] 102 | | } [INFO] [stderr] 103 | | }) [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_filter_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [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/basis/adaptive/ifdd.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | / match self.add_feature(f) { [INFO] [stderr] 127 | | Some(nf) => { [INFO] [stderr] 128 | | acc.get_or_insert_with(HashMap::new).insert(nf.0, nf.1); [INFO] [stderr] 129 | | } [INFO] [stderr] 130 | | None => (), [INFO] [stderr] 131 | | }; [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] 126 | if let Some(nf) = self.add_feature(f) { [INFO] [stderr] 127 | acc.get_or_insert_with(HashMap::new).insert(nf.0, nf.1); [INFO] [stderr] 128 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/adaptive/ifdd.rs:184:24 [INFO] [stderr] | [INFO] [stderr] 184 | f.discover(&vec![0.0, 4.0], 10.0), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, 4.0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/adaptive/ifdd.rs:199:31 [INFO] [stderr] | [INFO] [stderr] 199 | assert_eq!(f.discover(&vec![0.0, 3.0], 5.0), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, 3.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/adaptive/ifdd.rs:203:24 [INFO] [stderr] | [INFO] [stderr] 203 | f.discover(&vec![0.0, 3.0], 5.0), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, 3.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/basis/fixed/fourier.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | (0..(order + 1)).map(|v| v as f64).collect::>(); dim [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `(0..=order)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/fourier.rs:43:38 [INFO] [stderr] | [INFO] [stderr] 43 | (0..(order + 1)).map(|v| v as f64).collect::>(); dim [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(v)` [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: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:126:34 [INFO] [stderr] | [INFO] [stderr] 126 | .all_close(&arr1(&vec![-1.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:130:34 [INFO] [stderr] | [INFO] [stderr] 130 | .all_close(&arr1(&vec![0.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:134:34 [INFO] [stderr] | [INFO] [stderr] 134 | .all_close(&arr1(&vec![1.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:138:34 [INFO] [stderr] | [INFO] [stderr] 138 | .all_close(&arr1(&vec![0.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:142:34 [INFO] [stderr] | [INFO] [stderr] 142 | .all_close(&arr1(&vec![-1.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:147:34 [INFO] [stderr] | [INFO] [stderr] 147 | .all_close(&arr1(&vec![-0.5, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-0.5, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:151:34 [INFO] [stderr] | [INFO] [stderr] 151 | .all_close(&arr1(&vec![0.5, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.5, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:155:34 [INFO] [stderr] | [INFO] [stderr] 155 | .all_close(&arr1(&vec![0.5, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.5, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:159:34 [INFO] [stderr] | [INFO] [stderr] 159 | .all_close(&arr1(&vec![-0.5, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-0.5, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:172:34 [INFO] [stderr] | [INFO] [stderr] 172 | .all_close(&arr1(&vec![1.0, -1.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0, -1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:176:34 [INFO] [stderr] | [INFO] [stderr] 176 | .all_close(&arr1(&vec![-1.0, 0.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-1.0, 0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:180:34 [INFO] [stderr] | [INFO] [stderr] 180 | .all_close(&arr1(&vec![1.0; 3]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0; 3]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:184:34 [INFO] [stderr] | [INFO] [stderr] 184 | .all_close(&arr1(&vec![-1.0, 0.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-1.0, 0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:188:34 [INFO] [stderr] | [INFO] [stderr] 188 | .all_close(&arr1(&vec![1.0, -1.0, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0, -1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:193:34 [INFO] [stderr] | [INFO] [stderr] 193 | .all_close(&arr1(&vec![-0.5, -0.5, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-0.5, -0.5, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:197:34 [INFO] [stderr] | [INFO] [stderr] 197 | .all_close(&arr1(&vec![-0.5, 0.5, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-0.5, 0.5, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:201:34 [INFO] [stderr] | [INFO] [stderr] 201 | .all_close(&arr1(&vec![-0.5, 0.5, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-0.5, 0.5, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:205:34 [INFO] [stderr] | [INFO] [stderr] 205 | .all_close(&arr1(&vec![-0.5, -0.5, 1.0]), 1e-6) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-0.5, -0.5, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:217:19 [INFO] [stderr] | [INFO] [stderr] 217 | &arr1(&vec![1.0; 4]), [INFO] [stderr] | ^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0; 4]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:221:19 [INFO] [stderr] | [INFO] [stderr] 221 | &arr1(&vec![0.0, 0.0, 1.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, 0.0, 1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:225:19 [INFO] [stderr] | [INFO] [stderr] 225 | &arr1(&vec![0.0, 1.0, 0.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, 1.0, 0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:229:19 [INFO] [stderr] | [INFO] [stderr] 229 | &arr1(&vec![-1.0, 0.0, 0.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-1.0, 0.0, 0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:233:19 [INFO] [stderr] | [INFO] [stderr] 233 | &arr1(&vec![0.0, -1.0, 0.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, -1.0, 0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:237:19 [INFO] [stderr] | [INFO] [stderr] 237 | &arr1(&vec![0.0, 0.0, -1.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0, 0.0, -1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:241:19 [INFO] [stderr] | [INFO] [stderr] 241 | &arr1(&vec![1.0, -1.0, -1.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0, -1.0, -1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:254:19 [INFO] [stderr] | [INFO] [stderr] 254 | &arr1(&vec![1.0; 9]), [INFO] [stderr] | ^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0; 9]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:258:19 [INFO] [stderr] | [INFO] [stderr] 258 | &arr1(&vec![-1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:262:19 [INFO] [stderr] | [INFO] [stderr] 262 | &arr1(&vec![-1.0, 0.0, 1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-1.0, 0.0, 1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:266:19 [INFO] [stderr] | [INFO] [stderr] 266 | &arr1(&vec![1.0, 0.0, -1.0, 0.0, -1.0, 0.0, -1.0, 0.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0, 0.0, -1.0, 0.0, -1.0, 0.0, -1.0, 0.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:270:19 [INFO] [stderr] | [INFO] [stderr] 270 | &arr1(&vec![-1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[-1.0, 1.0, -1.0, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/fourier.rs:274:19 [INFO] [stderr] | [INFO] [stderr] 274 | &arr1(&vec![1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:34:24 [INFO] [stderr] | [INFO] [stderr] 34 | let dcs = vec![(0..(order + 1)).map(|v| v as i32).collect::>(); dim]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `(0..=order)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:34:49 [INFO] [stderr] | [INFO] [stderr] 34 | let dcs = vec![(0..(order + 1)).map(|v| v as i32).collect::>(); dim]; [INFO] [stderr] | ^^^^^^^^ help: try: `i32::from(v)` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:79:22 [INFO] [stderr] | [INFO] [stderr] 79 | pub polynomials: Vec f64>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:104:51 [INFO] [stderr] | [INFO] [stderr] 104 | fn make_polynomials(order: u8, dim: usize) -> Vec f64>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/basis/fixed/polynomial/mod.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | let dcs = vec![(0..(order + 1)).collect::>(); dim]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `(0..=order)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/basis/fixed/tile_coding.rs:8:10 [INFO] [stderr] | [INFO] [stderr] 8 | .into_iter() [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_ref [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `state` [INFO] [stderr] --> src/basis/fixed/tile_coding.rs:25:22 [INFO] [stderr] | [INFO] [stderr] 25 | for i in 0..state_len { [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] 25 | for (i, ) in state.iter().enumerate().take(state_len) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:75:39 [INFO] [stderr] | [INFO] [stderr] 75 | let out = t.project(&vec![i as u32 as f64]); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(i as u32)` [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: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:86:34 [INFO] [stderr] | [INFO] [stderr] 86 | let mut dense = arr1(&vec![0.0; 10]); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0; 10]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:102:43 [INFO] [stderr] | [INFO] [stderr] 102 | let out = t.project(&vec![i as u32 as f64, j as u32 as f64]); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(i as u32)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:102:60 [INFO] [stderr] | [INFO] [stderr] 102 | let out = t.project(&vec![i as u32 as f64, j as u32 as f64]); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(j as u32)` [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: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:113:38 [INFO] [stderr] | [INFO] [stderr] 113 | let mut dense = arr1(&vec![0.0; 100]); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0; 100]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:131:47 [INFO] [stderr] | [INFO] [stderr] 131 | let out = t.project(&vec![i as u32 as f64, j as u32 as f64, k as u32 as f64]); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(i as u32)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:131:64 [INFO] [stderr] | [INFO] [stderr] 131 | let out = t.project(&vec![i as u32 as f64, j as u32 as f64, k as u32 as f64]); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(j as u32)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:131:81 [INFO] [stderr] | [INFO] [stderr] 131 | let out = t.project(&vec![i as u32 as f64, j as u32 as f64, k as u32 as f64]); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(k as u32)` [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: useless use of `vec!` [INFO] [stderr] --> src/basis/fixed/uniform_grid.rs:142:42 [INFO] [stderr] | [INFO] [stderr] 142 | let mut dense = arr1(&vec![0.0; 1000]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0.0; 1000]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/basis/fixed/random.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | (0..self.n_features).into_iter().map(|_| self.distribution.sample(&mut rng)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..self.n_features)` [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] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `lfa`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "59a7271113acb32988cd405c164388ed11bb96dbe8b4ea00288e29006579919e"` [INFO] running `"docker" "rm" "-f" "59a7271113acb32988cd405c164388ed11bb96dbe8b4ea00288e29006579919e"` [INFO] [stdout] 59a7271113acb32988cd405c164388ed11bb96dbe8b4ea00288e29006579919e