[INFO] updating cached repository jaroslaw-weber/rust-ml-from-scratch [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jaroslaw-weber/rust-ml-from-scratch [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jaroslaw-weber/rust-ml-from-scratch" "work/ex/clippy-test-run/sources/stable/gh/jaroslaw-weber/rust-ml-from-scratch"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jaroslaw-weber/rust-ml-from-scratch'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jaroslaw-weber/rust-ml-from-scratch" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaroslaw-weber/rust-ml-from-scratch"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaroslaw-weber/rust-ml-from-scratch'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 6eaecb746eae46b8964018a9846b1aa6f911d3b7 [INFO] sha for GitHub repo jaroslaw-weber/rust-ml-from-scratch: 6eaecb746eae46b8964018a9846b1aa6f911d3b7 [INFO] validating manifest of jaroslaw-weber/rust-ml-from-scratch 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 jaroslaw-weber/rust-ml-from-scratch 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 jaroslaw-weber/rust-ml-from-scratch [INFO] finished frobbing jaroslaw-weber/rust-ml-from-scratch [INFO] frobbed toml for jaroslaw-weber/rust-ml-from-scratch written to work/ex/clippy-test-run/sources/stable/gh/jaroslaw-weber/rust-ml-from-scratch/Cargo.toml [INFO] started frobbing jaroslaw-weber/rust-ml-from-scratch [INFO] finished frobbing jaroslaw-weber/rust-ml-from-scratch [INFO] frobbed toml for jaroslaw-weber/rust-ml-from-scratch written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaroslaw-weber/rust-ml-from-scratch/Cargo.toml [INFO] crate jaroslaw-weber/rust-ml-from-scratch has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting jaroslaw-weber/rust-ml-from-scratch against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/jaroslaw-weber/rust-ml-from-scratch:/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] ca8bf8b67677894a79197607dbdca9bca68cbd964f13800ca661b3c723c80139 [INFO] running `"docker" "start" "-a" "ca8bf8b67677894a79197607dbdca9bca68cbd964f13800ca661b3c723c80139"` [INFO] [stderr] Compiling rayon-core v1.0.2 [INFO] [stderr] Checking num_cpus v1.5.1 [INFO] [stderr] Checking deflate v0.7.11 [INFO] [stderr] Checking num-rational v0.1.36 [INFO] [stderr] Checking png v0.7.0 [INFO] [stderr] Checking rayon v0.7.1 [INFO] [stderr] Checking jpeg-decoder v0.1.12 [INFO] [stderr] Checking image v0.13.0 [INFO] [stderr] Checking rust_machine_learning v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matrix.rs:21:12 [INFO] [stderr] | [INFO] [stderr] 21 | Matrix { cols:cols, rows:rows, content: content} [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `cols` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matrix.rs:21:23 [INFO] [stderr] | [INFO] [stderr] 21 | Matrix { cols:cols, rows:rows, content: content} [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `rows` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matrix.rs:21:34 [INFO] [stderr] | [INFO] [stderr] 21 | Matrix { cols:cols, rows:rows, content: content} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `content` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matrix.rs:21:12 [INFO] [stderr] | [INFO] [stderr] 21 | Matrix { cols:cols, rows:rows, content: content} [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `cols` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matrix.rs:21:23 [INFO] [stderr] | [INFO] [stderr] 21 | Matrix { cols:cols, rows:rows, content: content} [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `rows` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matrix.rs:21:34 [INFO] [stderr] | [INFO] [stderr] 21 | Matrix { cols:cols, rows:rows, content: content} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `content` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/matrix.rs:28:3 [INFO] [stderr] | [INFO] [stderr] 28 | *(&self.content[index]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.content[index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/matrix.rs:40:22 [INFO] [stderr] | [INFO] [stderr] 40 | let row_length:u32=*(&self.cols); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `self.cols` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/matrix.rs:211:8 [INFO] [stderr] | [INFO] [stderr] 211 | sum/(*&self.content.len() as f32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `self.content.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/activations.rs:31:2 [INFO] [stderr] | [INFO] [stderr] 31 | out [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/activations.rs:30:10 [INFO] [stderr] | [INFO] [stderr] 30 | let out=exp.divn(sum); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/activations.rs:38:2 [INFO] [stderr] | [INFO] [stderr] 38 | return ex.divn(ex.sum()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ex.divn(ex.sum())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sum` [INFO] [stderr] --> src/matrix.rs:131:2 [INFO] [stderr] | [INFO] [stderr] 131 | pub fn sum(&self)->f32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `max` [INFO] [stderr] --> src/matrix.rs:142:2 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn max(&self)->f32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `divn` [INFO] [stderr] --> src/matrix.rs:184:2 [INFO] [stderr] | [INFO] [stderr] 184 | pub fn divn(&self, number:f32)->Matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `softmax` [INFO] [stderr] --> src/activations.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn softmax(x:&Matrix)->Matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `softmax_stable` [INFO] [stderr] --> src/activations.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn softmax_stable(x:&Matrix)->Matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `relu` [INFO] [stderr] --> src/activations.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn relu(x:&Matrix, derivative:bool)->Matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/matrix.rs:86:12 [INFO] [stderr] | [INFO] [stderr] 86 | for c in 1..self.cols+1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=self.cols` [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: an inclusive range would be more readable [INFO] [stderr] --> src/matrix.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | for r in 1..self.rows+1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=self.rows` [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] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/matrix.rs:145:6 [INFO] [stderr] | [INFO] [stderr] 145 | if self.content.len()<=0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using self.content.len() == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:209:4 [INFO] [stderr] | [INFO] [stderr] 209 | sum=sum+(*n); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `sum += (*n)` [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: immediately dereferencing a reference [INFO] [stderr] --> src/matrix.rs:28:3 [INFO] [stderr] | [INFO] [stderr] 28 | *(&self.content[index]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.content[index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/matrix.rs:40:22 [INFO] [stderr] | [INFO] [stderr] 40 | let row_length:u32=*(&self.cols); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `self.cols` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/matrix.rs:211:8 [INFO] [stderr] | [INFO] [stderr] 211 | sum/(*&self.content.len() as f32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `self.content.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/activations.rs:31:2 [INFO] [stderr] | [INFO] [stderr] 31 | out [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/activations.rs:30:10 [INFO] [stderr] | [INFO] [stderr] 30 | let out=exp.divn(sum); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/activations.rs:38:2 [INFO] [stderr] | [INFO] [stderr] 38 | return ex.divn(ex.sum()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ex.divn(ex.sum())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:298:10 [INFO] [stderr] | [INFO] [stderr] 298 | count=count+1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `count += 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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/activations.rs:44:2 [INFO] [stderr] | [INFO] [stderr] 44 | let out; [INFO] [stderr] | _____^ [INFO] [stderr] 45 | | if derivative [INFO] [stderr] 46 | | { [INFO] [stderr] 47 | | [INFO] [stderr] ... | [INFO] [stderr] 63 | | out = x.map(&f); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let out = if derivative { ..; x.map(&f) } else { ..; x.map(&f) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/activations.rs:50:4 [INFO] [stderr] | [INFO] [stderr] 50 | let mut nout=1.; [INFO] [stderr] | _____________^ [INFO] [stderr] 51 | | if n<0. {nout=0.;} [INFO] [stderr] | |______________________________^ help: it is more idiomatic to write: `let nout = if n<0. { 0. } else { 1. };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/activations.rs:59:4 [INFO] [stderr] | [INFO] [stderr] 59 | let mut nout=n; [INFO] [stderr] | _____________^ [INFO] [stderr] 60 | | if n<=0. {nout=0.;} [INFO] [stderr] | |_______________________________^ help: it is more idiomatic to write: `let nout = if n<=0. { 0. } else { n };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rust_machine_learning`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: method is never used: `sum` [INFO] [stderr] --> src/matrix.rs:131:2 [INFO] [stderr] | [INFO] [stderr] 131 | pub fn sum(&self)->f32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `max` [INFO] [stderr] --> src/matrix.rs:142:2 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn max(&self)->f32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `divn` [INFO] [stderr] --> src/matrix.rs:184:2 [INFO] [stderr] | [INFO] [stderr] 184 | pub fn divn(&self, number:f32)->Matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `softmax` [INFO] [stderr] --> src/activations.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn softmax(x:&Matrix)->Matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `softmax_stable` [INFO] [stderr] --> src/activations.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn softmax_stable(x:&Matrix)->Matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `relu` [INFO] [stderr] --> src/activations.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn relu(x:&Matrix, derivative:bool)->Matrix [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/matrix.rs:86:12 [INFO] [stderr] | [INFO] [stderr] 86 | for c in 1..self.cols+1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=self.cols` [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: an inclusive range would be more readable [INFO] [stderr] --> src/matrix.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | for r in 1..self.rows+1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=self.rows` [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] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/matrix.rs:145:6 [INFO] [stderr] | [INFO] [stderr] 145 | if self.content.len()<=0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using self.content.len() == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:209:4 [INFO] [stderr] | [INFO] [stderr] 209 | sum=sum+(*n); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `sum += (*n)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:298:10 [INFO] [stderr] | [INFO] [stderr] 298 | count=count+1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `count += 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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/activations.rs:44:2 [INFO] [stderr] | [INFO] [stderr] 44 | let out; [INFO] [stderr] | _____^ [INFO] [stderr] 45 | | if derivative [INFO] [stderr] 46 | | { [INFO] [stderr] 47 | | [INFO] [stderr] ... | [INFO] [stderr] 63 | | out = x.map(&f); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let out = if derivative { ..; x.map(&f) } else { ..; x.map(&f) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/activations.rs:50:4 [INFO] [stderr] | [INFO] [stderr] 50 | let mut nout=1.; [INFO] [stderr] | _____________^ [INFO] [stderr] 51 | | if n<0. {nout=0.;} [INFO] [stderr] | |______________________________^ help: it is more idiomatic to write: `let nout = if n<0. { 0. } else { 1. };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/activations.rs:59:4 [INFO] [stderr] | [INFO] [stderr] 59 | let mut nout=n; [INFO] [stderr] | _____________^ [INFO] [stderr] 60 | | if n<=0. {nout=0.;} [INFO] [stderr] | |_______________________________^ help: it is more idiomatic to write: `let nout = if n<=0. { 0. } else { n };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rust_machine_learning`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "ca8bf8b67677894a79197607dbdca9bca68cbd964f13800ca661b3c723c80139"` [INFO] running `"docker" "rm" "-f" "ca8bf8b67677894a79197607dbdca9bca68cbd964f13800ca661b3c723c80139"` [INFO] [stdout] ca8bf8b67677894a79197607dbdca9bca68cbd964f13800ca661b3c723c80139