[INFO] cloning repository https://github.com/FauzanFR/clerum [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/FauzanFR/clerum" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFauzanFR%2Fclerum", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFauzanFR%2Fclerum'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9dfe8f4cf3493ef9629cf8de649836c781b2bf0d [INFO] linting FauzanFR/clerum against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFauzanFR%2Fclerum" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/FauzanFR/clerum [INFO] finished tweaking git repo https://github.com/FauzanFR/clerum [INFO] tweaked toml for git repo https://github.com/FauzanFR/clerum written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/FauzanFR/clerum on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/FauzanFR/clerum already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating git repository `https://github.com/FauzanFR/TensorClerum.git` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded noisy_float v0.2.0 [INFO] [stderr] Downloaded ndarray-stats v0.6.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 2942f052b5a407a7adfe396a944fab7aa799722f2d3058573ff51ce7bf22ed37 [INFO] running `Command { std: "docker" "start" "-a" "2942f052b5a407a7adfe396a944fab7aa799722f2d3058573ff51ce7bf22ed37", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2942f052b5a407a7adfe396a944fab7aa799722f2d3058573ff51ce7bf22ed37", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2942f052b5a407a7adfe396a944fab7aa799722f2d3058573ff51ce7bf22ed37", kill_on_drop: false }` [INFO] [stdout] 2942f052b5a407a7adfe396a944fab7aa799722f2d3058573ff51ce7bf22ed37 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0116efd38c7df71cc96e645c2d80ce78ba87cfb01be9231136042a7412b8a681 [INFO] running `Command { std: "docker" "start" "-a" "0116efd38c7df71cc96e645c2d80ce78ba87cfb01be9231136042a7412b8a681", kill_on_drop: false }` [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling quote v1.0.41 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Compiling proc-macro2 v1.0.101 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Compiling syn v2.0.107 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking noisy_float v0.2.0 [INFO] [stderr] Checking rand_distr v0.5.1 [INFO] [stderr] Checking ordered-float v5.1.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking ndarray v0.16.1 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking ndarray-stats v0.6.0 [INFO] [stderr] Checking TensorClerum v0.1.2 (https://github.com/FauzanFR/TensorClerum.git#3849ccd5) [INFO] [stderr] Checking clerum v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/clerum/file.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | flag: flag [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `flag` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/clerum/FNN.rs:53:13 [INFO] [stdout] | [INFO] [stdout] 53 | X: X, y: y, w:PackedTensor2D::new(), b:PackedTensor1D::new(), [INFO] [stdout] | ^^^^ help: replace it with: `X` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/clerum/FNN.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | X: X, y: y, w:PackedTensor2D::new(), b:PackedTensor1D::new(), [INFO] [stdout] | ^^^^ help: replace it with: `y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/clerum/file.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | flag: flag [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `flag` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/clerum/FNN.rs:53:13 [INFO] [stdout] | [INFO] [stdout] 53 | X: X, y: y, w:PackedTensor2D::new(), b:PackedTensor1D::new(), [INFO] [stdout] | ^^^^ help: replace it with: `X` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/clerum/FNN.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | X: X, y: y, w:PackedTensor2D::new(), b:PackedTensor1D::new(), [INFO] [stdout] | ^^^^ help: replace it with: `y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/clerum/file.rs:26:52 [INFO] [stdout] | [INFO] [stdout] 26 | bincode::serialize_into(file, clr).map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 26 - bincode::serialize_into(file, clr).map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] 26 + bincode::serialize_into(file, clr).map_err(|e| std::io::Error::other(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/clerum/file.rs:31:49 [INFO] [stdout] | [INFO] [stdout] 31 | bincode::deserialize_from(file).map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 31 - bincode::deserialize_from(file).map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] 31 + bincode::deserialize_from(file).map_err(|e| std::io::Error::other(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/clerum/file.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 56 | if (is_improved && !pretrain) || (is_last_epoch && !pretrain) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 56 - if (is_improved && !pretrain) || (is_last_epoch && !pretrain) { [INFO] [stdout] 56 + if !(pretrain || !is_improved && !is_last_epoch) { [INFO] [stdout] | [INFO] [stdout] 56 - if (is_improved && !pretrain) || (is_last_epoch && !pretrain) { [INFO] [stdout] 56 + if (is_last_epoch || is_improved) && !pretrain { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (16/7) [INFO] [stdout] --> src/clerum/file.rs:34:1 [INFO] [stdout] | [INFO] [stdout] 34 | / pub fn save_checkpoint_model( [INFO] [stdout] 35 | | epoch_loss: f32, [INFO] [stdout] 36 | | max_core: usize, [INFO] [stdout] 37 | | best_loss: &mut f32, [INFO] [stdout] ... | [INFO] [stdout] 50 | | flag: usize [INFO] [stdout] 51 | | ){ [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/file.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | act_id:&Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 44 ~ act_id:&[usize], [INFO] [stdout] 45 | act_data:&Vec, [INFO] [stdout] ... [INFO] [stdout] 67 | biases: b_save, [INFO] [stdout] 68 ~ activation_id: act_id.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/file.rs:45:14 [INFO] [stdout] | [INFO] [stdout] 45 | act_data:&Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 ~ act_data:&[f32], [INFO] [stdout] 46 | loss_id: usize, [INFO] [stdout] ... [INFO] [stdout] 68 | activation_id: act_id.clone(), [INFO] [stdout] 69 ~ data_act: act_data.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/file.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | labels: &Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 48 - labels: &Vec, [INFO] [stdout] 48 + labels: &[i32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/clerum/file.rs:108:21 [INFO] [stdout] | [INFO] [stdout] 108 | model = model.dot(&weight.get(i)) + &biases.get(i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `biases.get(i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/clerum/file.rs:123:20 [INFO] [stdout] | [INFO] [stdout] 123 | if clr.labels.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `clr.labels.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `l` is used to index `hidden_states` [INFO] [stdout] --> src/clerum/file.rs:165:22 [INFO] [stdout] | [INFO] [stdout] 165 | for l in 0..num_layers { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 165 - for l in 0..num_layers { [INFO] [stdout] 165 + for (l, ) in hidden_states.iter_mut().enumerate().take(num_layers) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/clerum/file.rs:169:27 [INFO] [stdout] | [INFO] [stdout] 169 | let h_t = wxh_term + whh_term + &b_h.get(l); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `b_h.get(l)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `t` is only used to index `outputs` [INFO] [stdout] --> src/clerum/file.rs:186:18 [INFO] [stdout] | [INFO] [stdout] 186 | for t in 0..steps { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 186 - for t in 0..steps { [INFO] [stdout] 186 + for in outputs.iter().take(steps) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/clerum/helper.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 96 | let mean_loss = loss.mean().unwrap_or(0.0); [INFO] [stdout] | ------------------------------------------- unnecessary `let` binding [INFO] [stdout] 97 | [INFO] [stdout] 98 | mean_loss [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 96 ~ [INFO] [stdout] 97 | [INFO] [stdout] 98 ~ loss.mean().unwrap_or(0.0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/clerum/FNN.rs:102:31 [INFO] [stdout] | [INFO] [stdout] 102 | (0..max_core).map(|_| buffers.iter().map(|arr| arr.clone()).collect()).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `buffers.iter().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/clerum/FNN.rs:110:31 [INFO] [stdout] | [INFO] [stdout] 110 | (0..max_core).map(|_| buffers.iter().map(|arr| arr.clone()).collect()).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `buffers.iter().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/clerum/FNN.rs:113:5 [INFO] [stdout] | [INFO] [stdout] 113 | / pub fn train( [INFO] [stdout] 114 | | &mut self, [INFO] [stdout] 115 | | lr: f32, [INFO] [stdout] 116 | | epoch: usize, [INFO] [stdout] ... | [INFO] [stdout] 121 | | optimizer: OptimizerConfig [INFO] [stdout] 122 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/clerum/FNN.rs:129:121 [INFO] [stdout] | [INFO] [stdout] 129 | ...) {batch_size} else {self.X.nrows()/parallel_threads as usize}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `parallel_threads` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/clerum/FNN.rs:161:25 [INFO] [stdout] | [INFO] [stdout] 161 | let max_batch = (total + max_core - 1) / max_core; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `total.div_ceil(max_core)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/clerum/FNN.rs:186:29 [INFO] [stdout] | [INFO] [stdout] 186 | act_deriv_activate: &dyn Fn(ArrayView2, usize, f32) -> Array2, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/clerum/FNN.rs:177:5 [INFO] [stdout] | [INFO] [stdout] 177 | / fn forward_pass( [INFO] [stdout] 178 | | layer: usize, [INFO] [stdout] 179 | | w: &PackedTensor2D, [INFO] [stdout] 180 | | b: &PackedTensor1D, [INFO] [stdout] ... | [INFO] [stdout] 186 | | act_deriv_activate: &dyn Fn(ArrayView2, usize, f32) -> Array2, [INFO] [stdout] 187 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:181:18 [INFO] [stdout] | [INFO] [stdout] 181 | a_batch: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 181 - a_batch: &mut Vec>, [INFO] [stdout] 181 + a_batch: &mut [ArrayViewMut2], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:182:18 [INFO] [stdout] | [INFO] [stdout] 182 | z_batch: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 182 - z_batch: &mut Vec>, [INFO] [stdout] 182 + z_batch: &mut [ArrayViewMut2], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:184:16 [INFO] [stdout] | [INFO] [stdout] 184 | act_id:&Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 184 - act_id:&Vec, [INFO] [stdout] 184 + act_id:&[usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:185:18 [INFO] [stdout] | [INFO] [stdout] 185 | act_data:&Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 185 - act_data:&Vec, [INFO] [stdout] 185 + act_data:&[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/clerum/FNN.rs:209:26 [INFO] [stdout] | [INFO] [stdout] 209 | act_deriv_deriv: &dyn Fn(ArrayView2, usize, f32) -> Array2, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/clerum/FNN.rs:199:5 [INFO] [stdout] | [INFO] [stdout] 199 | / fn backward_pass( [INFO] [stdout] 200 | | layer: usize, [INFO] [stdout] 201 | | w: &PackedTensor2D, [INFO] [stdout] 202 | | a_batch: &mut Vec>, [INFO] [stdout] ... | [INFO] [stdout] 209 | | act_deriv_deriv: &dyn Fn(ArrayView2, usize, f32) -> Array2, [INFO] [stdout] 210 | | ){ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:202:18 [INFO] [stdout] | [INFO] [stdout] 202 | a_batch: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 202 - a_batch: &mut Vec>, [INFO] [stdout] 202 + a_batch: &mut [ArrayViewMut2], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:203:18 [INFO] [stdout] | [INFO] [stdout] 203 | z_batch: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 203 - z_batch: &mut Vec>, [INFO] [stdout] 203 + z_batch: &mut [ArrayViewMut2], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:206:16 [INFO] [stdout] | [INFO] [stdout] 206 | act_id:&Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 206 - act_id:&Vec, [INFO] [stdout] 206 + act_id:&[usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:207:18 [INFO] [stdout] | [INFO] [stdout] 207 | act_data:&Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 207 - act_data:&Vec, [INFO] [stdout] 207 + act_data:&[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (16/7) [INFO] [stdout] --> src/clerum/FNN.rs:223:5 [INFO] [stdout] | [INFO] [stdout] 223 | / fn train_core( [INFO] [stdout] 224 | | &mut self, [INFO] [stdout] 225 | | layer:usize, [INFO] [stdout] 226 | | epochs:usize, [INFO] [stdout] ... | [INFO] [stdout] 239 | | batch_size: usize [INFO] [stdout] 240 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/clerum/FNN.rs:280:40 [INFO] [stdout] | [INFO] [stdout] 280 | let num_mini_batches = (batch_samples + batch_size - 1) / batch_size; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `batch_samples.div_ceil(batch_size)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/clerum/RNN.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | / pub fn train( [INFO] [stdout] 104 | | &mut self, [INFO] [stdout] 105 | | lr: f32, [INFO] [stdout] 106 | | max_norm: f32, [INFO] [stdout] ... | [INFO] [stdout] 113 | | optimizer: OptimizerConfig [INFO] [stdout] 114 | | ){ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `t` is used to index `outputs` [INFO] [stdout] --> src/clerum/RNN.rs:160:18 [INFO] [stdout] | [INFO] [stdout] 160 | for t in 0..seq_len { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 160 - for t in 0..seq_len { [INFO] [stdout] 160 + for (t, ) in outputs.iter().enumerate().take(seq_len) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/clerum/RNN.rs:195:29 [INFO] [stdout] | [INFO] [stdout] 195 | act_deriv_activate: &dyn Fn(ArrayView2, usize, f32) -> Array2 ) -> Vec>{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/clerum/RNN.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | / fn forward ( [INFO] [stdout] 184 | | X:&ArrayView3, [INFO] [stdout] 185 | | w_xh:&PackedTensor2D, [INFO] [stdout] 186 | | w_hh:&PackedTensor2D, [INFO] [stdout] ... | [INFO] [stdout] 194 | | act_data:&Vec, [INFO] [stdout] 195 | | act_deriv_activate: &dyn Fn(ArrayView2, usize, f32) -> Array2 ) -> Vec>{ [INFO] [stdout] | |_____________________________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:192:23 [INFO] [stdout] | [INFO] [stdout] 192 | hidden_states:&mut Vec>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 192 - hidden_states:&mut Vec>>, [INFO] [stdout] 192 + hidden_states:&mut [Vec>], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:193:16 [INFO] [stdout] | [INFO] [stdout] 193 | act_id:&Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 193 - act_id:&Vec, [INFO] [stdout] 193 + act_id:&[usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:194:18 [INFO] [stdout] | [INFO] [stdout] 194 | act_data:&Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 194 - act_data:&Vec, [INFO] [stdout] 194 + act_data:&[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/clerum/RNN.rs:204:27 [INFO] [stdout] | [INFO] [stdout] 204 | let h_t = wxh_term + whh_term + &b_h.get(l); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `b_h.get(l)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/clerum/RNN.rs:234:26 [INFO] [stdout] | [INFO] [stdout] 234 | act_deriv_deriv: &dyn Fn(ArrayView2, usize, f32) -> Array2 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (17/7) [INFO] [stdout] --> src/clerum/RNN.rs:217:5 [INFO] [stdout] | [INFO] [stdout] 217 | / fn backward ( [INFO] [stdout] 218 | | X:&ArrayView3, [INFO] [stdout] 219 | | hidden_states: &Vec>>, [INFO] [stdout] 220 | | dW_hy: &mut PackedTensor2D, [INFO] [stdout] ... | [INFO] [stdout] 234 | | act_deriv_deriv: &dyn Fn(ArrayView2, usize, f32) -> Array2 [INFO] [stdout] 235 | | ){ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:219:24 [INFO] [stdout] | [INFO] [stdout] 219 | hidden_states: &Vec>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 219 - hidden_states: &Vec>>, [INFO] [stdout] 219 + hidden_states: &[Vec>], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | act_id: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 232 - act_id: &Vec, [INFO] [stdout] 232 + act_id: &[usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:233:19 [INFO] [stdout] | [INFO] [stdout] 233 | act_data: &Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 233 - act_data: &Vec, [INFO] [stdout] 233 + act_data: &[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/clerum/RNN.rs:323:5 [INFO] [stdout] | [INFO] [stdout] 323 | / fn train_core( [INFO] [stdout] 324 | | &mut self, [INFO] [stdout] 325 | | loss_id: (usize, f32), [INFO] [stdout] 326 | | epochs: usize, [INFO] [stdout] ... | [INFO] [stdout] 334 | | ){ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:265:44 [INFO] [stdout] | [INFO] [stdout] 265 | let mut optimizer = init_optimizer(&vec![&self.w],&vec![&self.b],optimizer); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.w]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:265:59 [INFO] [stdout] | [INFO] [stdout] 265 | let mut optimizer = init_optimizer(&vec![&self.w],&vec![&self.b],optimizer); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.b]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:350:27 [INFO] [stdout] | [INFO] [stdout] 350 | optimizer.run(&mut vec![&mut self.w], &mut vec![&mut self.b], &vec![&dW_buffer], &vec![&db_buffer], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&mut [&mut self.w]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:350:51 [INFO] [stdout] | [INFO] [stdout] 350 | optimizer.run(&mut vec![&mut self.w], &mut vec![&mut self.b], &vec![&dW_buffer], &vec![&db_buffer], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&mut [&mut self.b]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:350:75 [INFO] [stdout] | [INFO] [stdout] 350 | optimizer.run(&mut vec![&mut self.w], &mut vec![&mut self.b], &vec![&dW_buffer], &vec![&db_buffer], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&dW_buffer]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:350:94 [INFO] [stdout] | [INFO] [stdout] 350 | optimizer.run(&mut vec![&mut self.w], &mut vec![&mut self.b], &vec![&dW_buffer], &vec![&db_buffer], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&db_buffer]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:352:115 [INFO] [stdout] | [INFO] [stdout] 352 | ...chs, pretrain, &mut count_save, &vec![&self.w], &vec![&self.b], act_id, act_data, loss_id, data_loss, &self.labels, path, 1); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.w]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:352:131 [INFO] [stdout] | [INFO] [stdout] 352 | ...mut count_save, &vec![&self.w], &vec![&self.b], act_id, act_data, loss_id, data_loss, &self.labels, path, 1); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.b]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:373:44 [INFO] [stdout] | [INFO] [stdout] 373 | let mut optimizer = init_optimizer(&vec![&self.w_xh, &self.w_hh, &self.w_hy],&vec![&self.b_h, &self.b_y],optimizer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.w_xh, &self.w_hh, &self.w_hy]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:373:86 [INFO] [stdout] | [INFO] [stdout] 373 | let mut optimizer = init_optimizer(&vec![&self.w_xh, &self.w_hh, &self.w_hy],&vec![&self.b_h, &self.b_y],optimizer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.b_h, &self.b_y]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:380:27 [INFO] [stdout] | [INFO] [stdout] 380 | optimizer.run(&mut vec![&mut self.w_xh, &mut self.w_hh, &mut self.w_hy],&mut vec![&mut self.b_h, &mut self.b_y], &vec![... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&mut [&mut self.w_xh, &mut self.w_hh, &mut self.w_hy]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:380:85 [INFO] [stdout] | [INFO] [stdout] 380 | ....w_hy],&mut vec![&mut self.b_h, &mut self.b_y], &vec![&dW_xh, &dW_hh, &dW_hy],&vec![&db_h, &db_y], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&mut [&mut self.b_h, &mut self.b_y]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:380:126 [INFO] [stdout] | [INFO] [stdout] 380 | ... &mut self.b_y], &vec![&dW_xh, &dW_hh, &dW_hy],&vec![&db_h, &db_y], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&dW_xh, &dW_hh, &dW_hy]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:380:156 [INFO] [stdout] | [INFO] [stdout] 380 | ...c![&dW_xh, &dW_hh, &dW_hy],&vec![&db_h, &db_y], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&db_h, &db_y]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:384:102 [INFO] [stdout] | [INFO] [stdout] 384 | ...ave, &vec![&self.w_xh, &self.w_hh, &self.w_hy], &vec![&self.b_h, &self.b_y], act_id, act_data, loss_id, data_loss, &self.labels,... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.w_xh, &self.w_hh, &self.w_hy]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:384:145 [INFO] [stdout] | [INFO] [stdout] 384 | ...w_hh, &self.w_hy], &vec![&self.b_h, &self.b_y], act_id, act_data, loss_id, data_loss, &self.labels, path, 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.b_h, &self.b_y]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/clerum/file.rs:26:52 [INFO] [stdout] | [INFO] [stdout] 26 | bincode::serialize_into(file, clr).map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 26 - bincode::serialize_into(file, clr).map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] 26 + bincode::serialize_into(file, clr).map_err(|e| std::io::Error::other(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/clerum/file.rs:31:49 [INFO] [stdout] | [INFO] [stdout] 31 | bincode::deserialize_from(file).map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 31 - bincode::deserialize_from(file).map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) [INFO] [stdout] 31 + bincode::deserialize_from(file).map_err(|e| std::io::Error::other(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/clerum/file.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 56 | if (is_improved && !pretrain) || (is_last_epoch && !pretrain) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 56 - if (is_improved && !pretrain) || (is_last_epoch && !pretrain) { [INFO] [stdout] 56 + if !(pretrain || !is_improved && !is_last_epoch) { [INFO] [stdout] | [INFO] [stdout] 56 - if (is_improved && !pretrain) || (is_last_epoch && !pretrain) { [INFO] [stdout] 56 + if (is_last_epoch || is_improved) && !pretrain { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (16/7) [INFO] [stdout] --> src/clerum/file.rs:34:1 [INFO] [stdout] | [INFO] [stdout] 34 | / pub fn save_checkpoint_model( [INFO] [stdout] 35 | | epoch_loss: f32, [INFO] [stdout] 36 | | max_core: usize, [INFO] [stdout] 37 | | best_loss: &mut f32, [INFO] [stdout] ... | [INFO] [stdout] 50 | | flag: usize [INFO] [stdout] 51 | | ){ [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/file.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | act_id:&Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 44 ~ act_id:&[usize], [INFO] [stdout] 45 | act_data:&Vec, [INFO] [stdout] ... [INFO] [stdout] 67 | biases: b_save, [INFO] [stdout] 68 ~ activation_id: act_id.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/file.rs:45:14 [INFO] [stdout] | [INFO] [stdout] 45 | act_data:&Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 ~ act_data:&[f32], [INFO] [stdout] 46 | loss_id: usize, [INFO] [stdout] ... [INFO] [stdout] 68 | activation_id: act_id.clone(), [INFO] [stdout] 69 ~ data_act: act_data.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/file.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | labels: &Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 48 - labels: &Vec, [INFO] [stdout] 48 + labels: &[i32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/clerum/file.rs:108:21 [INFO] [stdout] | [INFO] [stdout] 108 | model = model.dot(&weight.get(i)) + &biases.get(i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `biases.get(i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/clerum/file.rs:123:20 [INFO] [stdout] | [INFO] [stdout] 123 | if clr.labels.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `clr.labels.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `l` is used to index `hidden_states` [INFO] [stdout] --> src/clerum/file.rs:165:22 [INFO] [stdout] | [INFO] [stdout] 165 | for l in 0..num_layers { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 165 - for l in 0..num_layers { [INFO] [stdout] 165 + for (l, ) in hidden_states.iter_mut().enumerate().take(num_layers) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/clerum/file.rs:169:27 [INFO] [stdout] | [INFO] [stdout] 169 | let h_t = wxh_term + whh_term + &b_h.get(l); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `b_h.get(l)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `t` is only used to index `outputs` [INFO] [stdout] --> src/clerum/file.rs:186:18 [INFO] [stdout] | [INFO] [stdout] 186 | for t in 0..steps { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 186 - for t in 0..steps { [INFO] [stdout] 186 + for in outputs.iter().take(steps) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/clerum/helper.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 96 | let mean_loss = loss.mean().unwrap_or(0.0); [INFO] [stdout] | ------------------------------------------- unnecessary `let` binding [INFO] [stdout] 97 | [INFO] [stdout] 98 | mean_loss [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 96 ~ [INFO] [stdout] 97 | [INFO] [stdout] 98 ~ loss.mean().unwrap_or(0.0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/clerum/FNN.rs:102:31 [INFO] [stdout] | [INFO] [stdout] 102 | (0..max_core).map(|_| buffers.iter().map(|arr| arr.clone()).collect()).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `buffers.iter().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/clerum/FNN.rs:110:31 [INFO] [stdout] | [INFO] [stdout] 110 | (0..max_core).map(|_| buffers.iter().map(|arr| arr.clone()).collect()).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `buffers.iter().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/clerum/FNN.rs:113:5 [INFO] [stdout] | [INFO] [stdout] 113 | / pub fn train( [INFO] [stdout] 114 | | &mut self, [INFO] [stdout] 115 | | lr: f32, [INFO] [stdout] 116 | | epoch: usize, [INFO] [stdout] ... | [INFO] [stdout] 121 | | optimizer: OptimizerConfig [INFO] [stdout] 122 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/clerum/FNN.rs:129:121 [INFO] [stdout] | [INFO] [stdout] 129 | ...) {batch_size} else {self.X.nrows()/parallel_threads as usize}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `parallel_threads` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/clerum/FNN.rs:161:25 [INFO] [stdout] | [INFO] [stdout] 161 | let max_batch = (total + max_core - 1) / max_core; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `total.div_ceil(max_core)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/clerum/FNN.rs:186:29 [INFO] [stdout] | [INFO] [stdout] 186 | act_deriv_activate: &dyn Fn(ArrayView2, usize, f32) -> Array2, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/clerum/FNN.rs:177:5 [INFO] [stdout] | [INFO] [stdout] 177 | / fn forward_pass( [INFO] [stdout] 178 | | layer: usize, [INFO] [stdout] 179 | | w: &PackedTensor2D, [INFO] [stdout] 180 | | b: &PackedTensor1D, [INFO] [stdout] ... | [INFO] [stdout] 186 | | act_deriv_activate: &dyn Fn(ArrayView2, usize, f32) -> Array2, [INFO] [stdout] 187 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:181:18 [INFO] [stdout] | [INFO] [stdout] 181 | a_batch: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 181 - a_batch: &mut Vec>, [INFO] [stdout] 181 + a_batch: &mut [ArrayViewMut2], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:182:18 [INFO] [stdout] | [INFO] [stdout] 182 | z_batch: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 182 - z_batch: &mut Vec>, [INFO] [stdout] 182 + z_batch: &mut [ArrayViewMut2], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:184:16 [INFO] [stdout] | [INFO] [stdout] 184 | act_id:&Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 184 - act_id:&Vec, [INFO] [stdout] 184 + act_id:&[usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:185:18 [INFO] [stdout] | [INFO] [stdout] 185 | act_data:&Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 185 - act_data:&Vec, [INFO] [stdout] 185 + act_data:&[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/clerum/FNN.rs:209:26 [INFO] [stdout] | [INFO] [stdout] 209 | act_deriv_deriv: &dyn Fn(ArrayView2, usize, f32) -> Array2, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/clerum/FNN.rs:199:5 [INFO] [stdout] | [INFO] [stdout] 199 | / fn backward_pass( [INFO] [stdout] 200 | | layer: usize, [INFO] [stdout] 201 | | w: &PackedTensor2D, [INFO] [stdout] 202 | | a_batch: &mut Vec>, [INFO] [stdout] ... | [INFO] [stdout] 209 | | act_deriv_deriv: &dyn Fn(ArrayView2, usize, f32) -> Array2, [INFO] [stdout] 210 | | ){ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:202:18 [INFO] [stdout] | [INFO] [stdout] 202 | a_batch: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 202 - a_batch: &mut Vec>, [INFO] [stdout] 202 + a_batch: &mut [ArrayViewMut2], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:203:18 [INFO] [stdout] | [INFO] [stdout] 203 | z_batch: &mut Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 203 - z_batch: &mut Vec>, [INFO] [stdout] 203 + z_batch: &mut [ArrayViewMut2], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:206:16 [INFO] [stdout] | [INFO] [stdout] 206 | act_id:&Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 206 - act_id:&Vec, [INFO] [stdout] 206 + act_id:&[usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/FNN.rs:207:18 [INFO] [stdout] | [INFO] [stdout] 207 | act_data:&Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 207 - act_data:&Vec, [INFO] [stdout] 207 + act_data:&[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (16/7) [INFO] [stdout] --> src/clerum/FNN.rs:223:5 [INFO] [stdout] | [INFO] [stdout] 223 | / fn train_core( [INFO] [stdout] 224 | | &mut self, [INFO] [stdout] 225 | | layer:usize, [INFO] [stdout] 226 | | epochs:usize, [INFO] [stdout] ... | [INFO] [stdout] 239 | | batch_size: usize [INFO] [stdout] 240 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/clerum/FNN.rs:280:40 [INFO] [stdout] | [INFO] [stdout] 280 | let num_mini_batches = (batch_samples + batch_size - 1) / batch_size; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `batch_samples.div_ceil(batch_size)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BatchConfig`, `PretrainConfig`, `RNN`, `activation::ActivationConfig`, `loss::LossConfig`, `optimizer::OptimizerConfig`, `rand_arr2d`, `rand_arr3d`, `self`, and `set_global_seed` [INFO] [stdout] --> src/main.rs:3:20 [INFO] [stdout] | [INFO] [stdout] 3 | ...::{self, BatchConfig, PretrainConfig}, RNN, activation::ActivationConfig, file::{Input_X, run_cler}, helper::{rand_arr2d, rand_arr3d, set_global_seed}, loss::LossConfig, optimizer::OptimizerConfig}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Array2`, `ArrayD`, `array`, and `s` [INFO] [stdout] --> src/main.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use ndarray::{Array2, Array3, ArrayD, array, s}; [INFO] [stdout] | ^^^^^^ ^^^^^^ ^^^^^ ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/clerum/RNN.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | / pub fn train( [INFO] [stdout] 104 | | &mut self, [INFO] [stdout] 105 | | lr: f32, [INFO] [stdout] 106 | | max_norm: f32, [INFO] [stdout] ... | [INFO] [stdout] 113 | | optimizer: OptimizerConfig [INFO] [stdout] 114 | | ){ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `t` is used to index `outputs` [INFO] [stdout] --> src/clerum/RNN.rs:160:18 [INFO] [stdout] | [INFO] [stdout] 160 | for t in 0..seq_len { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 160 - for t in 0..seq_len { [INFO] [stdout] 160 + for (t, ) in outputs.iter().enumerate().take(seq_len) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/clerum/RNN.rs:195:29 [INFO] [stdout] | [INFO] [stdout] 195 | act_deriv_activate: &dyn Fn(ArrayView2, usize, f32) -> Array2 ) -> Vec>{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/clerum/RNN.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | / fn forward ( [INFO] [stdout] 184 | | X:&ArrayView3, [INFO] [stdout] 185 | | w_xh:&PackedTensor2D, [INFO] [stdout] 186 | | w_hh:&PackedTensor2D, [INFO] [stdout] ... | [INFO] [stdout] 194 | | act_data:&Vec, [INFO] [stdout] 195 | | act_deriv_activate: &dyn Fn(ArrayView2, usize, f32) -> Array2 ) -> Vec>{ [INFO] [stdout] | |_____________________________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:192:23 [INFO] [stdout] | [INFO] [stdout] 192 | hidden_states:&mut Vec>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 192 - hidden_states:&mut Vec>>, [INFO] [stdout] 192 + hidden_states:&mut [Vec>], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:193:16 [INFO] [stdout] | [INFO] [stdout] 193 | act_id:&Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 193 - act_id:&Vec, [INFO] [stdout] 193 + act_id:&[usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:194:18 [INFO] [stdout] | [INFO] [stdout] 194 | act_data:&Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 194 - act_data:&Vec, [INFO] [stdout] 194 + act_data:&[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/clerum/RNN.rs:204:27 [INFO] [stdout] | [INFO] [stdout] 204 | let h_t = wxh_term + whh_term + &b_h.get(l); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `b_h.get(l)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.99s [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/clerum/RNN.rs:234:26 [INFO] [stdout] | [INFO] [stdout] 234 | act_deriv_deriv: &dyn Fn(ArrayView2, usize, f32) -> Array2 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (17/7) [INFO] [stdout] --> src/clerum/RNN.rs:217:5 [INFO] [stdout] | [INFO] [stdout] 217 | / fn backward ( [INFO] [stdout] 218 | | X:&ArrayView3, [INFO] [stdout] 219 | | hidden_states: &Vec>>, [INFO] [stdout] 220 | | dW_hy: &mut PackedTensor2D, [INFO] [stdout] ... | [INFO] [stdout] 234 | | act_deriv_deriv: &dyn Fn(ArrayView2, usize, f32) -> Array2 [INFO] [stdout] 235 | | ){ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:219:24 [INFO] [stdout] | [INFO] [stdout] 219 | hidden_states: &Vec>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 219 - hidden_states: &Vec>>, [INFO] [stdout] 219 + hidden_states: &[Vec>], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | act_id: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 232 - act_id: &Vec, [INFO] [stdout] 232 + act_id: &[usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/clerum/RNN.rs:233:19 [INFO] [stdout] | [INFO] [stdout] 233 | act_data: &Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 233 - act_data: &Vec, [INFO] [stdout] 233 + act_data: &[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/clerum/RNN.rs:323:5 [INFO] [stdout] | [INFO] [stdout] 323 | / fn train_core( [INFO] [stdout] 324 | | &mut self, [INFO] [stdout] 325 | | loss_id: (usize, f32), [INFO] [stdout] 326 | | epochs: usize, [INFO] [stdout] ... | [INFO] [stdout] 334 | | ){ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `X` should have a snake case name [INFO] [stdout] --> src/main.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | let X = Array3::from_shape_vec((samples, steps, features), data).unwrap(); [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `x` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:265:44 [INFO] [stdout] | [INFO] [stdout] 265 | let mut optimizer = init_optimizer(&vec![&self.w],&vec![&self.b],optimizer); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.w]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:265:59 [INFO] [stdout] | [INFO] [stdout] 265 | let mut optimizer = init_optimizer(&vec![&self.w],&vec![&self.b],optimizer); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.b]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:350:27 [INFO] [stdout] | [INFO] [stdout] 350 | optimizer.run(&mut vec![&mut self.w], &mut vec![&mut self.b], &vec![&dW_buffer], &vec![&db_buffer], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&mut [&mut self.w]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:350:51 [INFO] [stdout] | [INFO] [stdout] 350 | optimizer.run(&mut vec![&mut self.w], &mut vec![&mut self.b], &vec![&dW_buffer], &vec![&db_buffer], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&mut [&mut self.b]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:350:75 [INFO] [stdout] | [INFO] [stdout] 350 | optimizer.run(&mut vec![&mut self.w], &mut vec![&mut self.b], &vec![&dW_buffer], &vec![&db_buffer], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&dW_buffer]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:350:94 [INFO] [stdout] | [INFO] [stdout] 350 | optimizer.run(&mut vec![&mut self.w], &mut vec![&mut self.b], &vec![&dW_buffer], &vec![&db_buffer], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&db_buffer]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:352:115 [INFO] [stdout] | [INFO] [stdout] 352 | ...chs, pretrain, &mut count_save, &vec![&self.w], &vec![&self.b], act_id, act_data, loss_id, data_loss, &self.labels, path, 1); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.w]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/FNN.rs:352:131 [INFO] [stdout] | [INFO] [stdout] 352 | ...mut count_save, &vec![&self.w], &vec![&self.b], act_id, act_data, loss_id, data_loss, &self.labels, path, 1); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.b]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:373:44 [INFO] [stdout] | [INFO] [stdout] 373 | let mut optimizer = init_optimizer(&vec![&self.w_xh, &self.w_hh, &self.w_hy],&vec![&self.b_h, &self.b_y],optimizer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.w_xh, &self.w_hh, &self.w_hy]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:373:86 [INFO] [stdout] | [INFO] [stdout] 373 | let mut optimizer = init_optimizer(&vec![&self.w_xh, &self.w_hh, &self.w_hy],&vec![&self.b_h, &self.b_y],optimizer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.b_h, &self.b_y]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:380:27 [INFO] [stdout] | [INFO] [stdout] 380 | optimizer.run(&mut vec![&mut self.w_xh, &mut self.w_hh, &mut self.w_hy],&mut vec![&mut self.b_h, &mut self.b_y], &vec![... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&mut [&mut self.w_xh, &mut self.w_hh, &mut self.w_hy]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:380:85 [INFO] [stdout] | [INFO] [stdout] 380 | ....w_hy],&mut vec![&mut self.b_h, &mut self.b_y], &vec![&dW_xh, &dW_hh, &dW_hy],&vec![&db_h, &db_y], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&mut [&mut self.b_h, &mut self.b_y]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:380:126 [INFO] [stdout] | [INFO] [stdout] 380 | ... &mut self.b_y], &vec![&dW_xh, &dW_hh, &dW_hy],&vec![&db_h, &db_y], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&dW_xh, &dW_hh, &dW_hy]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:380:156 [INFO] [stdout] | [INFO] [stdout] 380 | ...c![&dW_xh, &dW_hh, &dW_hy],&vec![&db_h, &db_y], lr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&db_h, &db_y]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:384:102 [INFO] [stdout] | [INFO] [stdout] 384 | ...ave, &vec![&self.w_xh, &self.w_hh, &self.w_hy], &vec![&self.b_h, &self.b_y], act_id, act_data, loss_id, data_loss, &self.labels,... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.w_xh, &self.w_hh, &self.w_hy]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/clerum/RNN.rs:384:145 [INFO] [stdout] | [INFO] [stdout] 384 | ...w_hh, &self.w_hy], &vec![&self.b_h, &self.b_y], act_id, act_data, loss_id, data_loss, &self.labels, path, 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[&self.b_h, &self.b_y]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BatchConfig`, `PretrainConfig`, `RNN`, `activation::ActivationConfig`, `loss::LossConfig`, `optimizer::OptimizerConfig`, `rand_arr2d`, `rand_arr3d`, `self`, and `set_global_seed` [INFO] [stdout] --> src/main.rs:3:20 [INFO] [stdout] | [INFO] [stdout] 3 | ...::{self, BatchConfig, PretrainConfig}, RNN, activation::ActivationConfig, file::{Input_X, run_cler}, helper::{rand_arr2d, rand_arr3d, set_global_seed}, loss::LossConfig, optimizer::OptimizerConfig}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Array2`, `ArrayD`, `array`, and `s` [INFO] [stdout] --> src/main.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use ndarray::{Array2, Array3, ArrayD, array, s}; [INFO] [stdout] | ^^^^^^ ^^^^^^ ^^^^^ ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `X` should have a snake case name [INFO] [stdout] --> src/main.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | let X = Array3::from_shape_vec((samples, steps, features), data).unwrap(); [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `x` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "0116efd38c7df71cc96e645c2d80ce78ba87cfb01be9231136042a7412b8a681", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0116efd38c7df71cc96e645c2d80ce78ba87cfb01be9231136042a7412b8a681", kill_on_drop: false }` [INFO] [stdout] 0116efd38c7df71cc96e645c2d80ce78ba87cfb01be9231136042a7412b8a681