[INFO] crate revonet 0.2.1 is already in cache [INFO] extracting crate revonet 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/revonet/0.2.1 [INFO] extracting crate revonet 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/revonet/0.2.1 [INFO] validating manifest of revonet-0.2.1 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 revonet-0.2.1 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 revonet-0.2.1 [INFO] finished frobbing revonet-0.2.1 [INFO] frobbed toml for revonet-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/revonet/0.2.1/Cargo.toml [INFO] started frobbing revonet-0.2.1 [INFO] finished frobbing revonet-0.2.1 [INFO] frobbed toml for revonet-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/revonet/0.2.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting revonet-0.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/revonet/0.2.1:/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] 008eb71f7ec7e7becf00d01b596c645f13674b71857384dd62bf957ac006c8d1 [INFO] running `"docker" "start" "-a" "008eb71f7ec7e7becf00d01b596c645f13674b71857384dd62bf957ac006c8d1"` [INFO] [stderr] Checking revonet v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/context.rs:43:19 [INFO] [stderr] | [INFO] [stderr] 43 | settings: settings, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `settings` [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/context.rs:47:19 [INFO] [stderr] | [INFO] [stderr] 47 | rng: rng} [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rng` [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/ga.rs:46:12 [INFO] [stderr] | [INFO] [stderr] 46 | GA{problem: problem, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `problem` [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/ne.rs:155:13 [INFO] [stderr] | [INFO] [stderr] 155 | NE {problem: problem, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `problem` [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/neuro.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | inputs_num: inputs_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `inputs_num` [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/neuro.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | outputs_num: outputs_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `outputs_num` [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/neuro.rs:313:13 [INFO] [stderr] | [INFO] [stderr] 313 | size: size, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `size` [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/result.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | avg_fitness_mean: avg_fitness_mean, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `avg_fitness_mean` [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/result.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | avg_fitness_sd: avg_fitness_sd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `avg_fitness_sd` [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/result.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | min_fitness: min_fitness, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `min_fitness` [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/result.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | max_fitness: max_fitness, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_fitness` [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/result.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | best_fe_count_mean: best_fe_count_mean, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `best_fe_count_mean` [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/result.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | best_fe_count_sd: best_fe_count_sd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `best_fe_count_sd` [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/result.rs:132:13 [INFO] [stderr] | [INFO] [stderr] 132 | first_hit_fe_count_mean: first_hit_fe_count_mean, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `first_hit_fe_count_mean` [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/result.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | first_hit_fe_count_sd: first_hit_fe_count_sd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `first_hit_fe_count_sd` [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/result.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | success_count: success_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `success_count` [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/settings.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | param_count: param_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `param_count` [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/settings.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | pop_size: pop_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `pop_size` [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/settings.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | gen_count: gen_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gen_count` [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/context.rs:43:19 [INFO] [stderr] | [INFO] [stderr] 43 | settings: settings, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `settings` [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/context.rs:47:19 [INFO] [stderr] | [INFO] [stderr] 47 | rng: rng} [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rng` [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/ga.rs:46:12 [INFO] [stderr] | [INFO] [stderr] 46 | GA{problem: problem, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `problem` [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/ne.rs:155:13 [INFO] [stderr] | [INFO] [stderr] 155 | NE {problem: problem, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `problem` [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/neuro.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | inputs_num: inputs_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `inputs_num` [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/neuro.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | outputs_num: outputs_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `outputs_num` [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/neuro.rs:313:13 [INFO] [stderr] | [INFO] [stderr] 313 | size: size, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `size` [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/result.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | avg_fitness_mean: avg_fitness_mean, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `avg_fitness_mean` [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/result.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | avg_fitness_sd: avg_fitness_sd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `avg_fitness_sd` [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/result.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | min_fitness: min_fitness, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `min_fitness` [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/result.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | max_fitness: max_fitness, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_fitness` [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/result.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | best_fe_count_mean: best_fe_count_mean, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `best_fe_count_mean` [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/result.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | best_fe_count_sd: best_fe_count_sd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `best_fe_count_sd` [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/result.rs:132:13 [INFO] [stderr] | [INFO] [stderr] 132 | first_hit_fe_count_mean: first_hit_fe_count_mean, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `first_hit_fe_count_mean` [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/result.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | first_hit_fe_count_sd: first_hit_fe_count_sd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `first_hit_fe_count_sd` [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/result.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | success_count: success_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `success_count` [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/settings.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | param_count: param_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `param_count` [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/settings.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | pop_size: pop_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `pop_size` [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/settings.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | gen_count: gen_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gen_count` [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: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/ga.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | Ok(&(&self.ctx.as_ref().expect("Empty EAContext")).result) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.ctx.as_ref().expect("Empty EAContext").result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ref_in_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/ne.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | Ok(&(&self.ctx.as_ref().expect("Empty EAContext")).result) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.ctx.as_ref().expect("Empty EAContext").result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/ga.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | Ok(&(&self.ctx.as_ref().expect("Empty EAContext")).result) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.ctx.as_ref().expect("Empty EAContext").result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ref_in_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/ne.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | Ok(&(&self.ctx.as_ref().expect("Empty EAContext")).result) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.ctx.as_ref().expect("Empty EAContext").result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ea.rs:65:45 [INFO] [stderr] | [INFO] [stderr] 65 | fn init(&mut self, size: usize, mut rng: &mut R) { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ea.rs:228:97 [INFO] [stderr] | [INFO] [stderr] 228 | pub fn create_population(pop_size: u32, ind_size: u32, mut rng: &mut R, problem: &P) -> Vec { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ga.rs:82:182 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn cross(popul: &Vec, sel_inds: &Vec, children: &mut Vec, use_elite: bool, x_type: CrossoverOperator, x_prob: f32, x_alpha: f32, mut rng: &mut R) { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ga.rs:121:102 [INFO] [stderr] | [INFO] [stderr] 121 | fn cross_arithmetic(p1: &T, p2: &T, c1: &mut T, c2: &mut T, alpha: f32, mut rng: &mut R) { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ne.rs:67:45 [INFO] [stderr] | [INFO] [stderr] 67 | fn init(&mut self, size: usize, mut rng: &mut R) { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/problem.rs:53:73 [INFO] [stderr] | [INFO] [stderr] 53 | fn get_random_individual(&self, size: usize, mut rng: &mut R) -> T { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/ea.rs:95:24 [INFO] [stderr] | [INFO] [stderr] 95 | let run_ress = (0..run_num).into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..run_num)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is used to index `fits` [INFO] [stderr] --> src/ea.rs:158:22 [INFO] [stderr] | [INFO] [stderr] 158 | for k in 0..fits.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 158 | for (k, ) in fits.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ea.rs:172:52 [INFO] [stderr] | [INFO] [stderr] 172 | let idx = (&fits).iter().position(|&x| x == last_min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x - last_min_fitness).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ea.rs:172:52 [INFO] [stderr] | [INFO] [stderr] 172 | let idx = (&fits).iter().position(|&x| x == last_min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ea.rs:195:77 [INFO] [stderr] | [INFO] [stderr] 195 | fn next_generation(&self, ctx: &mut EAContext, children: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Self::IndType]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `children`. [INFO] [stderr] --> src/ea.rs:197:18 [INFO] [stderr] | [INFO] [stderr] 197 | for k in 0..children.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 197 | for in &children { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ea.rs:210:67 [INFO] [stderr] | [INFO] [stderr] 210 | fn breed(&self, ctx: &mut EAContext, sel_inds: &Vec, children: &mut Vec); [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ea.rs:245:28 [INFO] [stderr] | [INFO] [stderr] 245 | fn select_tournament(fits: &Vec, tour_size: u32, mut rng: &mut Rng) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ea.rs:263:56 [INFO] [stderr] | [INFO] [stderr] 263 | pub fn get_best_individual(popul: &Vec) -> T { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/ea.rs:264:29 [INFO] [stderr] | [INFO] [stderr] 264 | let min_fitness = popul.into_iter().fold(std::f32::MAX, |s, ref ind| if s < ind.get_fitness() {s} else {ind.get_fitness()}); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/ea.rs:265:21 [INFO] [stderr] | [INFO] [stderr] 265 | let idx = popul.into_iter().position(|ref x| x.get_fitness() == min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ea.rs:265:50 [INFO] [stderr] | [INFO] [stderr] 265 | let idx = popul.into_iter().position(|ref x| x.get_fitness() == min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x.get_fitness() - min_fitness).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ea.rs:265:50 [INFO] [stderr] | [INFO] [stderr] 265 | let idx = popul.into_iter().position(|ref x| x.get_fitness() == min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ga.rs:82:56 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn cross(popul: &Vec, sel_inds: &Vec, children: &mut Vec, use_elite: bool, x_type: CrossoverOperator, x_prob: f32, x_alpha: f32, mut rng: &mut R) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ga.rs:82:75 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn cross(popul: &Vec, sel_inds: &Vec, children: &mut Vec, use_elite: bool, x_type: CrossoverOperator, x_prob: f32, x_alpha: f32, mut rng: &mut R) { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/ga.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | / pub fn cross(popul: &Vec, sel_inds: &Vec, children: &mut Vec, use_elite: bool, x_type: CrossoverOperator, x_prob: f32, x_alpha: f32, mut rng: &mut R) { [INFO] [stderr] 83 | | let range = Range::new(0, popul.len()); [INFO] [stderr] 84 | | if use_elite { [INFO] [stderr] 85 | | children.push(get_best_individual(popul)); [INFO] [stderr] ... | [INFO] [stderr] 108 | | } [INFO] [stderr] 109 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ea.rs:65:45 [INFO] [stderr] | [INFO] [stderr] 65 | fn init(&mut self, size: usize, mut rng: &mut R) { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `children`. [INFO] [stderr] --> src/ga.rs:185:14 [INFO] [stderr] | [INFO] [stderr] 185 | for k in 1..children.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 185 | for in children.iter_mut().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/ga.rs:198:39 [INFO] [stderr] | [INFO] [stderr] 198 | let normal_rng = Normal::new(0.0, sigma as f64); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(sigma)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `genes`. [INFO] [stderr] --> src/ga.rs:200:14 [INFO] [stderr] | [INFO] [stderr] 200 | for k in 0..genes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 200 | for in &mut genes { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `genes`. [INFO] [stderr] --> src/ga.rs:219:14 [INFO] [stderr] | [INFO] [stderr] 219 | for k in 0..genes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 219 | for in &mut genes { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn dot_mv(m: &Vec>, xs: &[f32]) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:59:16 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn min(xs: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/math.rs:60:8 [INFO] [stderr] | [INFO] [stderr] 60 | xs.into_iter().fold(xs[0], |res, &x| if res < x {res} else {x}) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:80:16 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn max(xs: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/math.rs:81:8 [INFO] [stderr] | [INFO] [stderr] 81 | xs.into_iter().fold(xs[0], |res, &x| if res > x {res} else {x}) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:101:17 [INFO] [stderr] | [INFO] [stderr] 101 | pub fn mean(xs: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/math.rs:102:8 [INFO] [stderr] | [INFO] [stderr] 102 | if xs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!xs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/math.rs:103:12 [INFO] [stderr] | [INFO] [stderr] 103 | xs.into_iter().fold(0f32, |s, &x| s+x) / (xs.len() as f32) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:113:16 [INFO] [stderr] | [INFO] [stderr] 113 | pub fn var(xs: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `xs`. [INFO] [stderr] --> src/math.rs:170:14 [INFO] [stderr] | [INFO] [stderr] 170 | for k in 0..xs.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 170 | for in &mut xs { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ea.rs:228:97 [INFO] [stderr] | [INFO] [stderr] 228 | pub fn create_population(pop_size: u32, ind_size: u32, mut rng: &mut R, problem: &P) -> Vec { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ne.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | / match &mut self.network { [INFO] [stderr] 29 | | &mut Some(ref mut net) => { [INFO] [stderr] 30 | | // copy weights from genes to NN. [INFO] [stderr] 31 | | let (mut ws, mut bs) = (Vec::new(), Vec::new()); [INFO] [stderr] ... | [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 28 | match *(&mut self.network) { [INFO] [stderr] 29 | Some(ref mut net) => { [INFO] [stderr] 30 | // copy weights from genes to NN. [INFO] [stderr] 31 | let (mut ws, mut bs) = (Vec::new(), Vec::new()); [INFO] [stderr] 32 | // println!("{:?}", self.genes); [INFO] [stderr] 33 | let mut cur_idx = 0; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/ne.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | / match &self.network { [INFO] [stderr] 90 | | &Some(ref net) => Some(net), [INFO] [stderr] 91 | | &None => None [INFO] [stderr] 92 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 89 | match self.network { [INFO] [stderr] 90 | Some(ref net) => Some(net), [INFO] [stderr] 91 | None => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ne.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | / match &mut self.network { [INFO] [stderr] 98 | | &mut Some(ref mut net) => {Some(net)}, [INFO] [stderr] 99 | | &mut None => None [INFO] [stderr] 100 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 97 | match *(&mut self.network) { [INFO] [stderr] 98 | Some(ref mut net) => {Some(net)}, [INFO] [stderr] 99 | None => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ga.rs:82:182 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn cross(popul: &Vec, sel_inds: &Vec, children: &mut Vec, use_elite: bool, x_type: CrossoverOperator, x_prob: f32, x_alpha: f32, mut rng: &mut R) { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `neproblem::XorProblem` [INFO] [stderr] --> src/neproblem.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | / pub fn new() -> XorProblem { [INFO] [stderr] 110 | | XorProblem{} [INFO] [stderr] 111 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 105 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ga.rs:121:102 [INFO] [stderr] | [INFO] [stderr] 121 | fn cross_arithmetic(p1: &T, p2: &T, c1: &mut T, c2: &mut T, alpha: f32, mut rng: &mut R) { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: item `neuro::MultilayeredNetwork` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/neuro.rs:58:1 [INFO] [stderr] | [INFO] [stderr] 58 | / impl MultilayeredNetwork { [INFO] [stderr] 59 | | /// Create a new multilayered network object with given number of inputs and outputs. [INFO] [stderr] 60 | | /// [INFO] [stderr] 61 | | /// The resulting network is not initialized. To add hidden layeres use `add_hidden_layer` and [INFO] [stderr] ... | [INFO] [stderr] 217 | | } [INFO] [stderr] 218 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/neuro.rs:141:52 [INFO] [stderr] | [INFO] [stderr] 141 | NeuralArchitecture::BypassFull => {inputs = l.len() + inputs;} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `inputs += l.len()` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neuro.rs:204:40 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn set_weights(&mut self, wss: &Vec>, bss: &Vec>) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neuro.rs:204:61 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn set_weights(&mut self, wss: &Vec>, bss: &Vec>) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the variable `layer_idx` is used as a loop counter. Consider using `for (layer_idx, item) in self.layers.iter_mut().enumerate()` or similar iterators [INFO] [stderr] --> src/neuro.rs:232:18 [INFO] [stderr] | [INFO] [stderr] 232 | for l in self.layers.iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ne.rs:67:45 [INFO] [stderr] | [INFO] [stderr] 67 | fn init(&mut self, size: usize, mut rng: &mut R) { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: item `neuro::NeuralLayer` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/neuro.rs:305:1 [INFO] [stderr] | [INFO] [stderr] 305 | / impl NeuralLayer { [INFO] [stderr] 306 | | /// Create a new layer with given size and activation function. [INFO] [stderr] 307 | | /// [INFO] [stderr] 308 | | /// # Arguments: [INFO] [stderr] ... | [INFO] [stderr] 382 | | } [INFO] [stderr] 383 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neuro.rs:376:39 [INFO] [stderr] | [INFO] [stderr] 376 | pub fn set_weights(&mut self, ws: &Vec, bs: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neuro.rs:376:54 [INFO] [stderr] | [INFO] [stderr] 376 | pub fn set_weights(&mut self, ws: &Vec, bs: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `xs`. [INFO] [stderr] --> src/neuro.rs:462:14 [INFO] [stderr] | [INFO] [stderr] 462 | for k in 0..xs.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 462 | for in &mut xs { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/problem.rs:76:12 [INFO] [stderr] | [INFO] [stderr] 76 | if v.len() > 0 {v.iter().fold(0f32, |s, x| s + x*x)} else {std::f32::NAN} [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/problem.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 88 | if v.len() > 0 {v.iter().fold(10f32*(v.len() as f32), |s, x| s + x*x - 10f32 * (x * PI2).cos())} [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/problem.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 101 | if v.len() == 0 {return std::f32::NAN;} [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `result::EAResult` [INFO] [stderr] --> src/result.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> EAResult { [INFO] [stderr] 28 | | EAResult{avg_fitness: Vec::new(), [INFO] [stderr] 29 | | min_fitness: Vec::new(), [INFO] [stderr] 30 | | max_fitness: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 35 | | } [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 25 | impl Default for result::EAResult { [INFO] [stderr] 26 | fn default() -> Self { [INFO] [stderr] 27 | Self::new() [INFO] [stderr] 28 | } [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is used to index `rs` [INFO] [stderr] --> src/result.rs:85:18 [INFO] [stderr] | [INFO] [stderr] 85 | for k in 0..run_count { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 85 | for (k, ) in rs.iter().enumerate().take(run_count) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/problem.rs:53:73 [INFO] [stderr] | [INFO] [stderr] 53 | fn get_random_individual(&self, size: usize, mut rng: &mut R) -> T { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `revonet`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/ea.rs:95:24 [INFO] [stderr] | [INFO] [stderr] 95 | let run_ress = (0..run_num).into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..run_num)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is used to index `fits` [INFO] [stderr] --> src/ea.rs:158:22 [INFO] [stderr] | [INFO] [stderr] 158 | for k in 0..fits.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 158 | for (k, ) in fits.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ea.rs:172:52 [INFO] [stderr] | [INFO] [stderr] 172 | let idx = (&fits).iter().position(|&x| x == last_min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x - last_min_fitness).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ea.rs:172:52 [INFO] [stderr] | [INFO] [stderr] 172 | let idx = (&fits).iter().position(|&x| x == last_min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ea.rs:195:77 [INFO] [stderr] | [INFO] [stderr] 195 | fn next_generation(&self, ctx: &mut EAContext, children: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Self::IndType]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `children`. [INFO] [stderr] --> src/ea.rs:197:18 [INFO] [stderr] | [INFO] [stderr] 197 | for k in 0..children.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 197 | for in &children { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ea.rs:210:67 [INFO] [stderr] | [INFO] [stderr] 210 | fn breed(&self, ctx: &mut EAContext, sel_inds: &Vec, children: &mut Vec); [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ea.rs:245:28 [INFO] [stderr] | [INFO] [stderr] 245 | fn select_tournament(fits: &Vec, tour_size: u32, mut rng: &mut Rng) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ea.rs:263:56 [INFO] [stderr] | [INFO] [stderr] 263 | pub fn get_best_individual(popul: &Vec) -> T { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/ea.rs:264:29 [INFO] [stderr] | [INFO] [stderr] 264 | let min_fitness = popul.into_iter().fold(std::f32::MAX, |s, ref ind| if s < ind.get_fitness() {s} else {ind.get_fitness()}); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/ea.rs:265:21 [INFO] [stderr] | [INFO] [stderr] 265 | let idx = popul.into_iter().position(|ref x| x.get_fitness() == min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ea.rs:265:50 [INFO] [stderr] | [INFO] [stderr] 265 | let idx = popul.into_iter().position(|ref x| x.get_fitness() == min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x.get_fitness() - min_fitness).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ea.rs:265:50 [INFO] [stderr] | [INFO] [stderr] 265 | let idx = popul.into_iter().position(|ref x| x.get_fitness() == min_fitness).expect("Min fitness is not found"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ga.rs:82:56 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn cross(popul: &Vec, sel_inds: &Vec, children: &mut Vec, use_elite: bool, x_type: CrossoverOperator, x_prob: f32, x_alpha: f32, mut rng: &mut R) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ga.rs:82:75 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn cross(popul: &Vec, sel_inds: &Vec, children: &mut Vec, use_elite: bool, x_type: CrossoverOperator, x_prob: f32, x_alpha: f32, mut rng: &mut R) { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/ga.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | / pub fn cross(popul: &Vec, sel_inds: &Vec, children: &mut Vec, use_elite: bool, x_type: CrossoverOperator, x_prob: f32, x_alpha: f32, mut rng: &mut R) { [INFO] [stderr] 83 | | let range = Range::new(0, popul.len()); [INFO] [stderr] 84 | | if use_elite { [INFO] [stderr] 85 | | children.push(get_best_individual(popul)); [INFO] [stderr] ... | [INFO] [stderr] 108 | | } [INFO] [stderr] 109 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `children`. [INFO] [stderr] --> src/ga.rs:185:14 [INFO] [stderr] | [INFO] [stderr] 185 | for k in 1..children.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 185 | for in children.iter_mut().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/ga.rs:198:39 [INFO] [stderr] | [INFO] [stderr] 198 | let normal_rng = Normal::new(0.0, sigma as f64); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(sigma)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `genes`. [INFO] [stderr] --> src/ga.rs:200:14 [INFO] [stderr] | [INFO] [stderr] 200 | for k in 0..genes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 200 | for in &mut genes { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `genes`. [INFO] [stderr] --> src/ga.rs:219:14 [INFO] [stderr] | [INFO] [stderr] 219 | for k in 0..genes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 219 | for in &mut genes { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ga.rs:288:21 [INFO] [stderr] | [INFO] [stderr] 288 | assert!(c1_genes[k] != p1_genes[k]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(c1_genes[k] - p1_genes[k]).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ga.rs:288:21 [INFO] [stderr] | [INFO] [stderr] 288 | assert!(c1_genes[k] != p1_genes[k]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ga.rs:289:21 [INFO] [stderr] | [INFO] [stderr] 289 | assert!(c1_genes[k] != p2_genes[k]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(c1_genes[k] - p2_genes[k]).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ga.rs:289:21 [INFO] [stderr] | [INFO] [stderr] 289 | assert!(c1_genes[k] != p2_genes[k]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ga.rs:290:21 [INFO] [stderr] | [INFO] [stderr] 290 | assert!(c2_genes[k] != p1_genes[k]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(c2_genes[k] - p1_genes[k]).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ga.rs:290:21 [INFO] [stderr] | [INFO] [stderr] 290 | assert!(c2_genes[k] != p1_genes[k]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ga.rs:291:21 [INFO] [stderr] | [INFO] [stderr] 291 | assert!(c2_genes[k] != p2_genes[k]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(c2_genes[k] - p2_genes[k]).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ga.rs:291:21 [INFO] [stderr] | [INFO] [stderr] 291 | assert!(c2_genes[k] != p2_genes[k]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn dot_mv(m: &Vec>, xs: &[f32]) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:59:16 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn min(xs: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/math.rs:60:8 [INFO] [stderr] | [INFO] [stderr] 60 | xs.into_iter().fold(xs[0], |res, &x| if res < x {res} else {x}) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:80:16 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn max(xs: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/math.rs:81:8 [INFO] [stderr] | [INFO] [stderr] 81 | xs.into_iter().fold(xs[0], |res, &x| if res > x {res} else {x}) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:101:17 [INFO] [stderr] | [INFO] [stderr] 101 | pub fn mean(xs: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/math.rs:102:8 [INFO] [stderr] | [INFO] [stderr] 102 | if xs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!xs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/math.rs:103:12 [INFO] [stderr] | [INFO] [stderr] 103 | xs.into_iter().fold(0f32, |s, &x| s+x) / (xs.len() as f32) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/math.rs:113:16 [INFO] [stderr] | [INFO] [stderr] 113 | pub fn var(xs: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `xs`. [INFO] [stderr] --> src/math.rs:170:14 [INFO] [stderr] | [INFO] [stderr] 170 | for k in 0..xs.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 170 | for in &mut xs { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/math.rs:204:17 [INFO] [stderr] | [INFO] [stderr] 204 | assert!(dot(&x1s, &x2s) == LEN as f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(dot(&x1s, &x2s) - LEN as f32).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math.rs:204:17 [INFO] [stderr] | [INFO] [stderr] 204 | assert!(dot(&x1s, &x2s) == LEN as f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/math.rs:218:21 [INFO] [stderr] | [INFO] [stderr] 218 | assert!(dot(&x1s, &x2s) == sum); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(dot(&x1s, &x2s) - sum).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math.rs:218:21 [INFO] [stderr] | [INFO] [stderr] 218 | assert!(dot(&x1s, &x2s) == sum); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ne.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | / match &mut self.network { [INFO] [stderr] 29 | | &mut Some(ref mut net) => { [INFO] [stderr] 30 | | // copy weights from genes to NN. [INFO] [stderr] 31 | | let (mut ws, mut bs) = (Vec::new(), Vec::new()); [INFO] [stderr] ... | [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 28 | match *(&mut self.network) { [INFO] [stderr] 29 | Some(ref mut net) => { [INFO] [stderr] 30 | // copy weights from genes to NN. [INFO] [stderr] 31 | let (mut ws, mut bs) = (Vec::new(), Vec::new()); [INFO] [stderr] 32 | // println!("{:?}", self.genes); [INFO] [stderr] 33 | let mut cur_idx = 0; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/ne.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | / match &self.network { [INFO] [stderr] 90 | | &Some(ref net) => Some(net), [INFO] [stderr] 91 | | &None => None [INFO] [stderr] 92 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 89 | match self.network { [INFO] [stderr] 90 | Some(ref net) => Some(net), [INFO] [stderr] 91 | None => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ne.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | / match &mut self.network { [INFO] [stderr] 98 | | &mut Some(ref mut net) => {Some(net)}, [INFO] [stderr] 99 | | &mut None => None [INFO] [stderr] 100 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 97 | match *(&mut self.network) { [INFO] [stderr] 98 | Some(ref mut net) => {Some(net)}, [INFO] [stderr] 99 | None => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `neproblem::XorProblem` [INFO] [stderr] --> src/neproblem.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | / pub fn new() -> XorProblem { [INFO] [stderr] 110 | | XorProblem{} [INFO] [stderr] 111 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 105 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/neproblem.rs:268:26 [INFO] [stderr] | [INFO] [stderr] 268 | for prob_type in vec!['f', 'g', 'h'] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&['f', 'g', 'h']` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: item `neuro::MultilayeredNetwork` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/neuro.rs:58:1 [INFO] [stderr] | [INFO] [stderr] 58 | / impl MultilayeredNetwork { [INFO] [stderr] 59 | | /// Create a new multilayered network object with given number of inputs and outputs. [INFO] [stderr] 60 | | /// [INFO] [stderr] 61 | | /// The resulting network is not initialized. To add hidden layeres use `add_hidden_layer` and [INFO] [stderr] ... | [INFO] [stderr] 217 | | } [INFO] [stderr] 218 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/neuro.rs:141:52 [INFO] [stderr] | [INFO] [stderr] 141 | NeuralArchitecture::BypassFull => {inputs = l.len() + inputs;} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `inputs += l.len()` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neuro.rs:204:40 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn set_weights(&mut self, wss: &Vec>, bss: &Vec>) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neuro.rs:204:61 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn set_weights(&mut self, wss: &Vec>, bss: &Vec>) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the variable `layer_idx` is used as a loop counter. Consider using `for (layer_idx, item) in self.layers.iter_mut().enumerate()` or similar iterators [INFO] [stderr] --> src/neuro.rs:232:18 [INFO] [stderr] | [INFO] [stderr] 232 | for l in self.layers.iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: item `neuro::NeuralLayer` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/neuro.rs:305:1 [INFO] [stderr] | [INFO] [stderr] 305 | / impl NeuralLayer { [INFO] [stderr] 306 | | /// Create a new layer with given size and activation function. [INFO] [stderr] 307 | | /// [INFO] [stderr] 308 | | /// # Arguments: [INFO] [stderr] ... | [INFO] [stderr] 382 | | } [INFO] [stderr] 383 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neuro.rs:376:39 [INFO] [stderr] | [INFO] [stderr] 376 | pub fn set_weights(&mut self, ws: &Vec, bs: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neuro.rs:376:54 [INFO] [stderr] | [INFO] [stderr] 376 | pub fn set_weights(&mut self, ws: &Vec, bs: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is only used to index `xs`. [INFO] [stderr] --> src/neuro.rs:462:14 [INFO] [stderr] | [INFO] [stderr] 462 | for k in 0..xs.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 462 | for in &mut xs { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/neuro.rs:483:34 [INFO] [stderr] | [INFO] [stderr] 483 | assert!((0..LEN).all(|k| xs[k] == act_f.compute(xs[k]))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(xs[k] - act_f.compute(xs[k])).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/neuro.rs:483:34 [INFO] [stderr] | [INFO] [stderr] 483 | assert!((0..LEN).all(|k| xs[k] == act_f.compute(xs[k]))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/neuro.rs:492:34 [INFO] [stderr] | [INFO] [stderr] 492 | assert!((0..LEN).all(|k| { [INFO] [stderr] | __________________________________^ [INFO] [stderr] 493 | | let y = act_f.compute(xs[k]); [INFO] [stderr] 494 | | // use inverse function cnad check result wrt numeric instability [INFO] [stderr] 495 | | (xs[k] - (y / (1f32 - y)).ln()) < 1e-6f32 [INFO] [stderr] 496 | | })); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/neuro.rs:558:65 [INFO] [stderr] | [INFO] [stderr] 558 | assert!(out1.iter().zip(out2.iter()).all(|(x1, x2)| x1 == x2)); [INFO] [stderr] | ^^^^^^^^ help: consider comparing them within some error: `(x1 - x2).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/neuro.rs:558:65 [INFO] [stderr] | [INFO] [stderr] 558 | assert!(out1.iter().zip(out2.iter()).all(|(x1, x2)| x1 == x2)); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/neuro.rs:568:21 [INFO] [stderr] | [INFO] [stderr] 568 | for arch in vec![NeuralArchitecture::Multilayered, NeuralArchitecture::BypassInputs, NeuralArchitecture::BypassLayer, NeuralArchitecture::BypassFull] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[NeuralArchitecture::Multilayered, NeuralArchitecture::BypassInputs, NeuralArchitecture::BypassLayer, NeuralArchitecture::BypassFull]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/neuro.rs:601:87 [INFO] [stderr] | [INFO] [stderr] 601 | assert!(ws[layer_idx].len() == all_layer_sizes[layer_idx+1] * (0..(layer_idx+1)).fold(0_usize, |s, k| s + all_layer_sizes[k])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `(0..=layer_idx)` [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/neuro.rs:614:69 [INFO] [stderr] | [INFO] [stderr] 614 | assert!(out1.iter().zip(out2.iter()).all(|(x1, x2)| x1 == x2)); [INFO] [stderr] | ^^^^^^^^ help: consider comparing them within some error: `(x1 - x2).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/neuro.rs:614:69 [INFO] [stderr] | [INFO] [stderr] 614 | assert!(out1.iter().zip(out2.iter()).all(|(x1, x2)| x1 == x2)); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/problem.rs:76:12 [INFO] [stderr] | [INFO] [stderr] 76 | if v.len() > 0 {v.iter().fold(0f32, |s, x| s + x*x)} else {std::f32::NAN} [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/problem.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 88 | if v.len() > 0 {v.iter().fold(10f32*(v.len() as f32), |s, x| s + x*x - 10f32 * (x * PI2).cos())} [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/problem.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 101 | if v.len() == 0 {return std::f32::NAN;} [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `result::EAResult` [INFO] [stderr] --> src/result.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> EAResult { [INFO] [stderr] 28 | | EAResult{avg_fitness: Vec::new(), [INFO] [stderr] 29 | | min_fitness: Vec::new(), [INFO] [stderr] 30 | | max_fitness: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 35 | | } [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 25 | impl Default for result::EAResult { [INFO] [stderr] 26 | fn default() -> Self { [INFO] [stderr] 27 | Self::new() [INFO] [stderr] 28 | } [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `k` is used to index `rs` [INFO] [stderr] --> src/result.rs:85:18 [INFO] [stderr] | [INFO] [stderr] 85 | for k in 0..run_count { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 85 | for (k, ) in rs.iter().enumerate().take(run_count) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/result.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | assert!(res.best.fitness == res2.best.fitness); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(res.best.fitness - res2.best.fitness).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/result.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | assert!(res.best.fitness == res2.best.fitness); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/result.rs:184:20 [INFO] [stderr] | [INFO] [stderr] 184 | let ress = (0..3).into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..3)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/result.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | assert!(res.first_hit_fe_count_mean == res2.first_hit_fe_count_mean); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(res.first_hit_fe_count_mean - res2.first_hit_fe_count_mean).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/result.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | assert!(res.first_hit_fe_count_mean == res2.first_hit_fe_count_mean); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/result.rs:200:17 [INFO] [stderr] | [INFO] [stderr] 200 | assert!(res.first_hit_fe_count_sd == res2.first_hit_fe_count_sd); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(res.first_hit_fe_count_sd - res2.first_hit_fe_count_sd).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/result.rs:200:17 [INFO] [stderr] | [INFO] [stderr] 200 | assert!(res.first_hit_fe_count_sd == res2.first_hit_fe_count_sd); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/result.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | assert!(res.best_fe_count_mean == res2.best_fe_count_mean); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(res.best_fe_count_mean - res2.best_fe_count_mean).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/result.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | assert!(res.best_fe_count_mean == res2.best_fe_count_mean); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/result.rs:202:17 [INFO] [stderr] | [INFO] [stderr] 202 | assert!(res.best_fe_count_sd == res2.best_fe_count_sd); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(res.best_fe_count_sd - res2.best_fe_count_sd).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/result.rs:202:17 [INFO] [stderr] | [INFO] [stderr] 202 | assert!(res.best_fe_count_sd == res2.best_fe_count_sd); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/result.rs:203:17 [INFO] [stderr] | [INFO] [stderr] 203 | assert!(res.best.fitness == res2.best.fitness); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(res.best.fitness - res2.best.fitness).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/result.rs:203:17 [INFO] [stderr] | [INFO] [stderr] 203 | assert!(res.best.fitness == res2.best.fitness); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/result.rs:218:20 [INFO] [stderr] | [INFO] [stderr] 218 | let ress = (0..3).into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..3)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/result.rs:235:17 [INFO] [stderr] | [INFO] [stderr] 235 | assert!(res.min_fitness[(gen_count-1) as usize] == res.best.fitness); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(res.min_fitness[(gen_count-1) as usize] - res.best.fitness).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/result.rs:235:17 [INFO] [stderr] | [INFO] [stderr] 235 | assert!(res.min_fitness[(gen_count-1) as usize] == res.best.fitness); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/settings.rs:129:17 [INFO] [stderr] | [INFO] [stderr] 129 | assert!(settings.mut_prob == settings2.mut_prob); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(settings.mut_prob - settings2.mut_prob).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/settings.rs:129:17 [INFO] [stderr] | [INFO] [stderr] 129 | assert!(settings.mut_prob == settings2.mut_prob); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/settings.rs:130:17 [INFO] [stderr] | [INFO] [stderr] 130 | assert!(settings.mut_sigma == settings2.mut_sigma); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(settings.mut_sigma - settings2.mut_sigma).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/settings.rs:130:17 [INFO] [stderr] | [INFO] [stderr] 130 | assert!(settings.mut_sigma == settings2.mut_sigma); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/settings.rs:138:17 [INFO] [stderr] | [INFO] [stderr] 138 | assert!(settings.x_alpha == settings2.x_alpha); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(settings.x_alpha - settings2.x_alpha).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/settings.rs:138:17 [INFO] [stderr] | [INFO] [stderr] 138 | assert!(settings.x_alpha == settings2.x_alpha); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/settings.rs:139:17 [INFO] [stderr] | [INFO] [stderr] 139 | assert!(settings.x_prob == settings2.x_prob); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(settings.x_prob - settings2.x_prob).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/settings.rs:139:17 [INFO] [stderr] | [INFO] [stderr] 139 | assert!(settings.x_prob == settings2.x_prob); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: aborting due to 22 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `revonet`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "008eb71f7ec7e7becf00d01b596c645f13674b71857384dd62bf957ac006c8d1"` [INFO] running `"docker" "rm" "-f" "008eb71f7ec7e7becf00d01b596c645f13674b71857384dd62bf957ac006c8d1"` [INFO] [stdout] 008eb71f7ec7e7becf00d01b596c645f13674b71857384dd62bf957ac006c8d1