[INFO] updating cached repository orglofch/neat-rust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/orglofch/neat-rust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/orglofch/neat-rust" "work/ex/clippy-test-run/sources/stable/gh/orglofch/neat-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/orglofch/neat-rust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/orglofch/neat-rust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/orglofch/neat-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/orglofch/neat-rust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 778545c1d29792db6aac2236bca0d8335beb3a86 [INFO] sha for GitHub repo orglofch/neat-rust: 778545c1d29792db6aac2236bca0d8335beb3a86 [INFO] validating manifest of orglofch/neat-rust 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 orglofch/neat-rust 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 orglofch/neat-rust [INFO] finished frobbing orglofch/neat-rust [INFO] frobbed toml for orglofch/neat-rust written to work/ex/clippy-test-run/sources/stable/gh/orglofch/neat-rust/Cargo.toml [INFO] started frobbing orglofch/neat-rust [INFO] finished frobbing orglofch/neat-rust [INFO] frobbed toml for orglofch/neat-rust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/orglofch/neat-rust/Cargo.toml [INFO] crate orglofch/neat-rust has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting orglofch/neat-rust against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/orglofch/neat-rust:/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 -Dclippy::into_iter_on_array" "-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] f2b22134c7c8cb760bb62355101a68265c55a0947cf21fa47aa6ec261f19b4af [INFO] running `"docker" "start" "-a" "f2b22134c7c8cb760bb62355101a68265c55a0947cf21fa47aa6ec261f19b4af"` [INFO] [stderr] Checking rand v0.5.3 [INFO] [stderr] Checking neat-rust v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | fitness_config: fitness_config, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fitness_config` [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/config.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | genome_config: genome_config, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `genome_config` [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/fitness.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | fitness_fn: fitness_fn, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fitness_fn` [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/gene.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | aggregation_fn: aggregation_fn, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `aggregation_fn` [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/gene.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | activation_fn: activation_fn, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `activation_fn` [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/gene.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | weight: weight, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [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/genome.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | inputs: inputs, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `inputs` [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/genome.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | outputs: outputs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `outputs` [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/genome.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | input_ids_by_name: input_ids_by_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `input_ids_by_name` [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/genome.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | output_ids_by_name: output_ids_by_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `output_ids_by_name` [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/genome.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | output_nodes_by_id: output_nodes_by_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `output_nodes_by_id` [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/genome.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | connections_by_edge: connections_by_edge, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `connections_by_edge` [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/genome.rs:419:13 [INFO] [stderr] | [INFO] [stderr] 419 | output_nodes_by_id: output_nodes_by_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `output_nodes_by_id` [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/genome.rs:420:13 [INFO] [stderr] | [INFO] [stderr] 420 | hidden_nodes_by_id: hidden_nodes_by_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hidden_nodes_by_id` [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/genome.rs:421:13 [INFO] [stderr] | [INFO] [stderr] 421 | connections_by_edge: connections_by_edge, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `connections_by_edge` [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/config.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | fitness_config: fitness_config, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fitness_config` [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/config.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | genome_config: genome_config, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `genome_config` [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/fitness.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | fitness_fn: fitness_fn, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fitness_fn` [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/gene.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | aggregation_fn: aggregation_fn, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `aggregation_fn` [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/gene.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | activation_fn: activation_fn, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `activation_fn` [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/gene.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | weight: weight, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [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/genome.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | inputs: inputs, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `inputs` [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/genome.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | outputs: outputs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `outputs` [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/genome.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | input_ids_by_name: input_ids_by_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `input_ids_by_name` [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/genome.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | output_ids_by_name: output_ids_by_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `output_ids_by_name` [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/genome.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | output_nodes_by_id: output_nodes_by_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `output_nodes_by_id` [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/genome.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | connections_by_edge: connections_by_edge, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `connections_by_edge` [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/genome.rs:419:13 [INFO] [stderr] | [INFO] [stderr] 419 | output_nodes_by_id: output_nodes_by_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `output_nodes_by_id` [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/genome.rs:420:13 [INFO] [stderr] | [INFO] [stderr] 420 | hidden_nodes_by_id: hidden_nodes_by_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hidden_nodes_by_id` [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/genome.rs:421:13 [INFO] [stderr] | [INFO] [stderr] 421 | connections_by_edge: connections_by_edge, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `connections_by_edge` [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: unneeded return statement [INFO] [stderr] --> src/aggregation.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | return (sorted[sorted.len() / 2] + sorted[sorted.len() / 2 - 1]) / 2.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(sorted[sorted.len() / 2] + sorted[sorted.len() / 2 - 1]) / 2.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/aggregation.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | return sorted[sorted.len() / 2]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `sorted[sorted.len() / 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/gene.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | return (self.bias - other.bias).abs() * speciation_config.compatibility_weight_coefficient; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(self.bias - other.bias).abs() * speciation_config.compatibility_weight_coefficient` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/gene.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | return (self.weight - other.weight).abs() * speciation_config.compatibility_weight_coefficient; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(self.weight - other.weight).abs() * speciation_config.compatibility_weight_coefficient` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/genome.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | return outputs; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `outputs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused imports: `GenomeConfig`, `Genome` [INFO] [stderr] --> src/speciation.rs:3:14 [INFO] [stderr] | [INFO] [stderr] 3 | use genome::{Genome, GenomeConfig, Population}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/speciation.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | return species_by_proto_id; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `species_by_proto_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/activation.rs:283:41 [INFO] [stderr] | [INFO] [stderr] 283 | assert_approx_eq!(function.eval(100000.0), 0.0); [INFO] [stderr] | ^^^^^^^^ help: consider: `100_000.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/activation.rs:284:42 [INFO] [stderr] | [INFO] [stderr] 284 | assert_approx_eq!(function.eval(-100000.0), 0.0); [INFO] [stderr] | ^^^^^^^^ help: consider: `100_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/aggregation.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | return (sorted[sorted.len() / 2] + sorted[sorted.len() / 2 - 1]) / 2.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(sorted[sorted.len() / 2] + sorted[sorted.len() / 2 - 1]) / 2.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/aggregation.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | return sorted[sorted.len() / 2]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `sorted[sorted.len() / 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/gene.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | return (self.bias - other.bias).abs() * speciation_config.compatibility_weight_coefficient; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(self.bias - other.bias).abs() * speciation_config.compatibility_weight_coefficient` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/gene.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | return (self.weight - other.weight).abs() * speciation_config.compatibility_weight_coefficient; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(self.weight - other.weight).abs() * speciation_config.compatibility_weight_coefficient` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/genome.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | return outputs; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `outputs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/genome.rs:674:21 [INFO] [stderr] | [INFO] [stderr] 674 | const INPUT_1: &'static str = "input_1"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/genome.rs:675:21 [INFO] [stderr] | [INFO] [stderr] 675 | const INPUT_2: &'static str = "input_2"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/genome.rs:676:22 [INFO] [stderr] | [INFO] [stderr] 676 | const OUTPUT_1: &'static str = "output_1"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/genome.rs:677:22 [INFO] [stderr] | [INFO] [stderr] 677 | const OUTPUT_2: &'static str = "output_2"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/speciation.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | return species_by_proto_id; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `species_by_proto_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/speciation.rs:92:19 [INFO] [stderr] | [INFO] [stderr] 92 | const INPUT: &'static str = "input"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/speciation.rs:93:20 [INFO] [stderr] | [INFO] [stderr] 93 | const OUTPUT: &'static str = "output"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_species_size` [INFO] [stderr] --> src/config.rs:102:21 [INFO] [stderr] | [INFO] [stderr] 102 | let new_species_size = population.len() as f32 * species_fitness_by_proto_id.get(&proto_id).unwrap() / [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using `_new_species_size` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rng` [INFO] [stderr] --> src/genome.rs:604:46 [INFO] [stderr] | [INFO] [stderr] 604 | fn mutate_remove_node(&mut self, rng: &mut R) { [INFO] [stderr] | ^^^ help: consider using `_rng` instead [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EPSILON` [INFO] [stderr] --> src/activation.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | const EPSILON: f32 = 1e-7; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `eval` [INFO] [stderr] --> src/activation.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | pub(crate) fn eval(&self, val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sigmoid_activation` [INFO] [stderr] --> src/activation.rs:52:1 [INFO] [stderr] | [INFO] [stderr] 52 | fn sigmoid_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `tanh_activation` [INFO] [stderr] --> src/activation.rs:57:1 [INFO] [stderr] | [INFO] [stderr] 57 | fn tanh_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sin_activation` [INFO] [stderr] --> src/activation.rs:62:1 [INFO] [stderr] | [INFO] [stderr] 62 | fn sin_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `gauss_activation` [INFO] [stderr] --> src/activation.rs:67:1 [INFO] [stderr] | [INFO] [stderr] 67 | fn gauss_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `relu_activation` [INFO] [stderr] --> src/activation.rs:72:1 [INFO] [stderr] | [INFO] [stderr] 72 | fn relu_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `softplus_activation` [INFO] [stderr] --> src/activation.rs:77:1 [INFO] [stderr] | [INFO] [stderr] 77 | fn softplus_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `identity_activation` [INFO] [stderr] --> src/activation.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | fn identity_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `clamped_activation` [INFO] [stderr] --> src/activation.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | fn clamped_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `inv_activation` [INFO] [stderr] --> src/activation.rs:92:1 [INFO] [stderr] | [INFO] [stderr] 92 | fn inv_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `ln_activation` [INFO] [stderr] --> src/activation.rs:98:1 [INFO] [stderr] | [INFO] [stderr] 98 | fn ln_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `exp_activation` [INFO] [stderr] --> src/activation.rs:103:1 [INFO] [stderr] | [INFO] [stderr] 103 | fn exp_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `abs_activation` [INFO] [stderr] --> src/activation.rs:108:1 [INFO] [stderr] | [INFO] [stderr] 108 | fn abs_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `hat_activation` [INFO] [stderr] --> src/activation.rs:113:1 [INFO] [stderr] | [INFO] [stderr] 113 | fn hat_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `square_activation` [INFO] [stderr] --> src/activation.rs:118:1 [INFO] [stderr] | [INFO] [stderr] 118 | fn square_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `cube_activation` [INFO] [stderr] --> src/activation.rs:123:1 [INFO] [stderr] | [INFO] [stderr] 123 | fn cube_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sinc_activation` [INFO] [stderr] --> src/activation.rs:128:1 [INFO] [stderr] | [INFO] [stderr] 128 | fn sinc_activation(val: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `aggregate` [INFO] [stderr] --> src/aggregation.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | pub(crate) fn aggregate(&self, values: Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sum_aggregation` [INFO] [stderr] --> src/aggregation.rs:29:1 [INFO] [stderr] | [INFO] [stderr] 29 | fn sum_aggregation(values: Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `product_aggregation` [INFO] [stderr] --> src/aggregation.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | fn product_aggregation(values: Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `max_aggregation` [INFO] [stderr] --> src/aggregation.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | fn max_aggregation(values: Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `min_aggregation` [INFO] [stderr] --> src/aggregation.rs:44:1 [INFO] [stderr] | [INFO] [stderr] 44 | fn min_aggregation(values: Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `abs_max_aggregation` [INFO] [stderr] --> src/aggregation.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | fn abs_max_aggregation(values: Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `median_aggregation` [INFO] [stderr] --> src/aggregation.rs:54:1 [INFO] [stderr] | [INFO] [stderr] 54 | fn median_aggregation(values: Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `mean_aggregation` [INFO] [stderr] --> src/aggregation.rs:69:1 [INFO] [stderr] | [INFO] [stderr] 69 | fn mean_aggregation(values: Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `activate` [INFO] [stderr] --> src/gene.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | pub(crate) fn activate(&self, values: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `crossover` [INFO] [stderr] --> src/gene.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub(crate) fn crossover(&self, other: &NodeGene) -> NodeGene { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `activate` [INFO] [stderr] --> src/gene.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | pub(crate) fn activate(&self, value: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `crossover` [INFO] [stderr] --> src/gene.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | pub(crate) fn crossover(&self, other: &ConnectionGene) -> ConnectionGene { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `activate` [INFO] [stderr] --> src/genome.rs:187:5 [INFO] [stderr] | [INFO] [stderr] 187 | pub(crate) fn activate(&self, inputs: &HashMap<&'a str, f32>) -> HashMap<&'a str, f32> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `crossover` [INFO] [stderr] --> src/genome.rs:367:5 [INFO] [stderr] | [INFO] [stderr] 367 | pub(crate) fn crossover(&self, other: &Genome, genome_config: &mut GenomeConfig) -> Genome { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `mutate_remove_connection` [INFO] [stderr] --> src/genome.rs:536:5 [INFO] [stderr] | [INFO] [stderr] 536 | fn mutate_remove_connection(&mut self, rng: &mut R) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `mutate_remove_node` [INFO] [stderr] --> src/genome.rs:604:5 [INFO] [stderr] | [INFO] [stderr] 604 | fn mutate_remove_node(&mut self, rng: &mut R) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/activation.rs:26:24 [INFO] [stderr] | [INFO] [stderr] 26 | pub(crate) fn eval(&self, val: f32) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/aggregation.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | pub(crate) fn aggregate(&self, values: Vec) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `checkpoint::CheckpointConfig` [INFO] [stderr] --> src/checkpoint.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> CheckpointConfig { [INFO] [stderr] 19 | | CheckpointConfig { [INFO] [stderr] 20 | | checkpoint_fn: None, [INFO] [stderr] 21 | | checkpoint_rate: 0, [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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] 4 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/config.rs:102:66 [INFO] [stderr] | [INFO] [stderr] 102 | let new_species_size = population.len() as f32 * species_fitness_by_proto_id.get(&proto_id).unwrap() / [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&species_fitness_by_proto_id[&proto_id]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/gene.rs:36:43 [INFO] [stderr] | [INFO] [stderr] 36 | pub(crate) fn activate(&self, values: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 36 | pub(crate) fn activate(&self, values: &[f32]) -> f32 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `values.clone()` to [INFO] [stderr] | [INFO] [stderr] 37 | let mut values = values.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/genome.rs:199:18 [INFO] [stderr] | [INFO] [stderr] 199 | .or_insert(HashSet::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/genome.rs:203:18 [INFO] [stderr] | [INFO] [stderr] 203 | .or_insert(HashSet::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:223:13 [INFO] [stderr] | [INFO] [stderr] 223 | / match out_ids_by_in_id.get(&id) { [INFO] [stderr] 224 | | Some(ref out_ids) => { [INFO] [stderr] 225 | | for out_id in out_ids.iter() { [INFO] [stderr] 226 | | // Remove the connection from the list of in_ids. [INFO] [stderr] ... | [INFO] [stderr] 238 | | None => (), // Node necessarily can't reach output. [INFO] [stderr] 239 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 223 | if let Some(ref out_ids) = out_ids_by_in_id.get(&id) { [INFO] [stderr] 224 | for out_id in out_ids.iter() { [INFO] [stderr] 225 | // Remove the connection from the list of in_ids. [INFO] [stderr] 226 | match remaining_edges_by_out_id.get_mut(out_id) { [INFO] [stderr] 227 | Some(ref mut in_ids) => { [INFO] [stderr] 228 | in_ids.remove(&id); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:246:22 [INFO] [stderr] | [INFO] [stderr] 246 | let id = self.input_ids_by_name.get(name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.input_ids_by_name[name]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:253:26 [INFO] [stderr] | [INFO] [stderr] 253 | for in_id in in_ids_by_out_id.get(&id).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&in_ids_by_out_id[&id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:254:29 [INFO] [stderr] | [INFO] [stderr] 254 | let value = self.connections_by_edge [INFO] [stderr] | _____________________________^ [INFO] [stderr] 255 | | .get(&(*in_id, id)) [INFO] [stderr] 256 | | .unwrap() [INFO] [stderr] | |_____________________________^ help: try this: `&self.connections_by_edge[&(*in_id, id)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:257:32 [INFO] [stderr] | [INFO] [stderr] 257 | .activate(*outputs_by_id.get(in_id).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&outputs_by_id[in_id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:262:17 [INFO] [stderr] | [INFO] [stderr] 262 | self.output_nodes_by_id.get(&id).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.output_nodes_by_id[&id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | let other_node = other.output_nodes_by_id.get(&id).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&other.output_nodes_by_id[&id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/genome.rs:377:22 [INFO] [stderr] | [INFO] [stderr] 377 | let genome = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 377 | let genome = &(*self).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 377 | let genome = &genome::Genome<'a>::clone(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:388:13 [INFO] [stderr] | [INFO] [stderr] 388 | / match less_fit_genome.hidden_nodes_by_id.get(&id) { [INFO] [stderr] 389 | | Some(ref other_node) => { [INFO] [stderr] 390 | | hidden_nodes_by_id.insert(*id, node.crossover(other_node)); [INFO] [stderr] 391 | | } [INFO] [stderr] 392 | | None => (), [INFO] [stderr] 393 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 388 | if let Some(ref other_node) = less_fit_genome.hidden_nodes_by_id.get(&id) { [INFO] [stderr] 389 | hidden_nodes_by_id.insert(*id, node.crossover(other_node)); [INFO] [stderr] 390 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:398:13 [INFO] [stderr] | [INFO] [stderr] 398 | / match less_fit_genome.hidden_nodes_by_id.get(&id) { [INFO] [stderr] 399 | | Some(ref other_node) => { [INFO] [stderr] 400 | | output_nodes_by_id.insert(*id, node.crossover(other_node)); [INFO] [stderr] 401 | | } [INFO] [stderr] 402 | | None => (), [INFO] [stderr] 403 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 398 | if let Some(ref other_node) = less_fit_genome.hidden_nodes_by_id.get(&id) { [INFO] [stderr] 399 | output_nodes_by_id.insert(*id, node.crossover(other_node)); [INFO] [stderr] 400 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | / match less_fit_genome.connections_by_edge.get(&edge) { [INFO] [stderr] 409 | | Some(ref other_con) => { [INFO] [stderr] 410 | | connections_by_edge.insert(*edge, con.crossover(other_con)); [INFO] [stderr] 411 | | } [INFO] [stderr] 412 | | None => (), [INFO] [stderr] 413 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 408 | if let Some(ref other_con) = less_fit_genome.connections_by_edge.get(&edge) { [INFO] [stderr] 409 | connections_by_edge.insert(*edge, con.crossover(other_con)); [INFO] [stderr] 410 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: The function/method `choose` doesn't need a mutable reference [INFO] [stderr] --> src/genome.rs:517:37 [INFO] [stderr] | [INFO] [stderr] 517 | let connection = rng.choose(&mut possible_connections).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:567:19 [INFO] [stderr] | [INFO] [stderr] 567 | let con = self.connections_by_edge.get(&split_edge).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.connections_by_edge[&split_edge]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/genome.rs:638:18 [INFO] [stderr] | [INFO] [stderr] 638 | .or_insert(HashSet::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:647:13 [INFO] [stderr] | [INFO] [stderr] 647 | / match out_ids_by_in_id.get(&queue.pop_front().unwrap()) { [INFO] [stderr] 648 | | Some(ref out_ids) => { [INFO] [stderr] 649 | | if out_ids.contains(&in_id) { [INFO] [stderr] 650 | | return true; [INFO] [stderr] ... | [INFO] [stderr] 656 | | None => (), [INFO] [stderr] 657 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 647 | if let Some(ref out_ids) = out_ids_by_in_id.get(&queue.pop_front().unwrap()) { [INFO] [stderr] 648 | if out_ids.contains(&in_id) { [INFO] [stderr] 649 | return true; [INFO] [stderr] 650 | } [INFO] [stderr] 651 | for out_id in out_ids.into_iter() { [INFO] [stderr] 652 | queue.push_back(*out_id); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashSet [INFO] [stderr] --> src/genome.rs:652:43 [INFO] [stderr] | [INFO] [stderr] 652 | for out_id in out_ids.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `speciation::SpeciationConfig` [INFO] [stderr] --> src/speciation.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> SpeciationConfig { [INFO] [stderr] 20 | | SpeciationConfig { [INFO] [stderr] 21 | | compatibility_threshold: 0.0, [INFO] [stderr] 22 | | compatibility_disjoint_coefficient: 0.0, [INFO] [stderr] 23 | | compatibility_weight_coefficient: 0.0, [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/speciation.rs:81:14 [INFO] [stderr] | [INFO] [stderr] 81 | .or_insert(HashSet::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `neat-rust`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused variable: `new_species_size` [INFO] [stderr] --> src/config.rs:102:21 [INFO] [stderr] | [INFO] [stderr] 102 | let new_species_size = population.len() as f32 * species_fitness_by_proto_id.get(&proto_id).unwrap() / [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using `_new_species_size` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rng` [INFO] [stderr] --> src/genome.rs:604:46 [INFO] [stderr] | [INFO] [stderr] 604 | fn mutate_remove_node(&mut self, rng: &mut R) { [INFO] [stderr] | ^^^ help: consider using `_rng` instead [INFO] [stderr] [INFO] [stderr] warning: method is never used: `mutate_remove_node` [INFO] [stderr] --> src/genome.rs:604:5 [INFO] [stderr] | [INFO] [stderr] 604 | fn mutate_remove_node(&mut self, rng: &mut R) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/activation.rs:26:24 [INFO] [stderr] | [INFO] [stderr] 26 | pub(crate) fn eval(&self, val: f32) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/aggregation.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | pub(crate) fn aggregate(&self, values: Vec) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `checkpoint::CheckpointConfig` [INFO] [stderr] --> src/checkpoint.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> CheckpointConfig { [INFO] [stderr] 19 | | CheckpointConfig { [INFO] [stderr] 20 | | checkpoint_fn: None, [INFO] [stderr] 21 | | checkpoint_rate: 0, [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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] 4 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/config.rs:102:66 [INFO] [stderr] | [INFO] [stderr] 102 | let new_species_size = population.len() as f32 * species_fitness_by_proto_id.get(&proto_id).unwrap() / [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&species_fitness_by_proto_id[&proto_id]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/gene.rs:36:43 [INFO] [stderr] | [INFO] [stderr] 36 | pub(crate) fn activate(&self, values: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 36 | pub(crate) fn activate(&self, values: &[f32]) -> f32 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `values.clone()` to [INFO] [stderr] | [INFO] [stderr] 37 | let mut values = values.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | / assert_eq!( [INFO] [stderr] 125 | | node_1.distance(&node_2, &spec_conf), [INFO] [stderr] 126 | | node_2.distance(&node_1, &spec_conf) [INFO] [stderr] 127 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | / assert_eq!( [INFO] [stderr] 125 | | node_1.distance(&node_2, &spec_conf), [INFO] [stderr] 126 | | node_2.distance(&node_1, &spec_conf) [INFO] [stderr] 127 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | assert_eq!(node_1.distance(&node_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | assert_eq!(node_1.distance(&node_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / assert_eq!( [INFO] [stderr] 134 | | node_1.distance(&node_2, &spec_conf), [INFO] [stderr] 135 | | node_2.distance(&node_1, &spec_conf) [INFO] [stderr] 136 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / assert_eq!( [INFO] [stderr] 134 | | node_1.distance(&node_2, &spec_conf), [INFO] [stderr] 135 | | node_2.distance(&node_1, &spec_conf) [INFO] [stderr] 136 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | assert_eq!(node_1.distance(&node_2, &spec_conf), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | assert_eq!(node_1.distance(&node_2, &spec_conf), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / assert_eq!( [INFO] [stderr] 143 | | node_1.distance(&node_2, &spec_conf), [INFO] [stderr] 144 | | node_2.distance(&node_1, &spec_conf) [INFO] [stderr] 145 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / assert_eq!( [INFO] [stderr] 143 | | node_1.distance(&node_2, &spec_conf), [INFO] [stderr] 144 | | node_2.distance(&node_1, &spec_conf) [INFO] [stderr] 145 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | assert_eq!(node_1.distance(&node_2, &spec_conf), 0.25); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | assert_eq!(node_1.distance(&node_2, &spec_conf), 0.25); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | / assert_eq!( [INFO] [stderr] 152 | | node_1.distance(&node_2, &spec_conf), [INFO] [stderr] 153 | | node_2.distance(&node_1, &spec_conf) [INFO] [stderr] 154 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | / assert_eq!( [INFO] [stderr] 152 | | node_1.distance(&node_2, &spec_conf), [INFO] [stderr] 153 | | node_2.distance(&node_1, &spec_conf) [INFO] [stderr] 154 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | assert_eq!(node_1.distance(&node_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | assert_eq!(node_1.distance(&node_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:172:9 [INFO] [stderr] | [INFO] [stderr] 172 | / assert_eq!( [INFO] [stderr] 173 | | con_1.distance(&con_2, &spec_conf), [INFO] [stderr] 174 | | con_2.distance(&con_1, &spec_conf) [INFO] [stderr] 175 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:172:9 [INFO] [stderr] | [INFO] [stderr] 172 | / assert_eq!( [INFO] [stderr] 173 | | con_1.distance(&con_2, &spec_conf), [INFO] [stderr] 174 | | con_2.distance(&con_1, &spec_conf) [INFO] [stderr] 175 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:176:9 [INFO] [stderr] | [INFO] [stderr] 176 | assert_eq!(con_1.distance(&con_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:176:9 [INFO] [stderr] | [INFO] [stderr] 176 | assert_eq!(con_1.distance(&con_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:181:9 [INFO] [stderr] | [INFO] [stderr] 181 | / assert_eq!( [INFO] [stderr] 182 | | con_1.distance(&con_2, &spec_conf), [INFO] [stderr] 183 | | con_2.distance(&con_1, &spec_conf) [INFO] [stderr] 184 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:181:9 [INFO] [stderr] | [INFO] [stderr] 181 | / assert_eq!( [INFO] [stderr] 182 | | con_1.distance(&con_2, &spec_conf), [INFO] [stderr] 183 | | con_2.distance(&con_1, &spec_conf) [INFO] [stderr] 184 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | assert_eq!(con_1.distance(&con_2, &spec_conf), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | assert_eq!(con_1.distance(&con_2, &spec_conf), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:190:9 [INFO] [stderr] | [INFO] [stderr] 190 | / assert_eq!( [INFO] [stderr] 191 | | con_1.distance(&con_2, &spec_conf), [INFO] [stderr] 192 | | con_2.distance(&con_1, &spec_conf) [INFO] [stderr] 193 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:190:9 [INFO] [stderr] | [INFO] [stderr] 190 | / assert_eq!( [INFO] [stderr] 191 | | con_1.distance(&con_2, &spec_conf), [INFO] [stderr] 192 | | con_2.distance(&con_1, &spec_conf) [INFO] [stderr] 193 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:194:9 [INFO] [stderr] | [INFO] [stderr] 194 | assert_eq!(con_1.distance(&con_2, &spec_conf), 0.25); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:194:9 [INFO] [stderr] | [INFO] [stderr] 194 | assert_eq!(con_1.distance(&con_2, &spec_conf), 0.25); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | / assert_eq!( [INFO] [stderr] 200 | | con_1.distance(&con_2, &spec_conf), [INFO] [stderr] 201 | | con_2.distance(&con_1, &spec_conf) [INFO] [stderr] 202 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | / assert_eq!( [INFO] [stderr] 200 | | con_1.distance(&con_2, &spec_conf), [INFO] [stderr] 201 | | con_2.distance(&con_1, &spec_conf) [INFO] [stderr] 202 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/gene.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | assert_eq!(con_1.distance(&con_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/gene.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | assert_eq!(con_1.distance(&con_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/genome.rs:199:18 [INFO] [stderr] | [INFO] [stderr] 199 | .or_insert(HashSet::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/genome.rs:203:18 [INFO] [stderr] | [INFO] [stderr] 203 | .or_insert(HashSet::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:223:13 [INFO] [stderr] | [INFO] [stderr] 223 | / match out_ids_by_in_id.get(&id) { [INFO] [stderr] 224 | | Some(ref out_ids) => { [INFO] [stderr] 225 | | for out_id in out_ids.iter() { [INFO] [stderr] 226 | | // Remove the connection from the list of in_ids. [INFO] [stderr] ... | [INFO] [stderr] 238 | | None => (), // Node necessarily can't reach output. [INFO] [stderr] 239 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 223 | if let Some(ref out_ids) = out_ids_by_in_id.get(&id) { [INFO] [stderr] 224 | for out_id in out_ids.iter() { [INFO] [stderr] 225 | // Remove the connection from the list of in_ids. [INFO] [stderr] 226 | match remaining_edges_by_out_id.get_mut(out_id) { [INFO] [stderr] 227 | Some(ref mut in_ids) => { [INFO] [stderr] 228 | in_ids.remove(&id); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:246:22 [INFO] [stderr] | [INFO] [stderr] 246 | let id = self.input_ids_by_name.get(name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.input_ids_by_name[name]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:253:26 [INFO] [stderr] | [INFO] [stderr] 253 | for in_id in in_ids_by_out_id.get(&id).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&in_ids_by_out_id[&id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:254:29 [INFO] [stderr] | [INFO] [stderr] 254 | let value = self.connections_by_edge [INFO] [stderr] | _____________________________^ [INFO] [stderr] 255 | | .get(&(*in_id, id)) [INFO] [stderr] 256 | | .unwrap() [INFO] [stderr] | |_____________________________^ help: try this: `&self.connections_by_edge[&(*in_id, id)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:257:32 [INFO] [stderr] | [INFO] [stderr] 257 | .activate(*outputs_by_id.get(in_id).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&outputs_by_id[in_id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:262:17 [INFO] [stderr] | [INFO] [stderr] 262 | self.output_nodes_by_id.get(&id).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.output_nodes_by_id[&id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | let other_node = other.output_nodes_by_id.get(&id).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&other.output_nodes_by_id[&id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/genome.rs:377:22 [INFO] [stderr] | [INFO] [stderr] 377 | let genome = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 377 | let genome = &(*self).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 377 | let genome = &genome::Genome<'a>::clone(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:388:13 [INFO] [stderr] | [INFO] [stderr] 388 | / match less_fit_genome.hidden_nodes_by_id.get(&id) { [INFO] [stderr] 389 | | Some(ref other_node) => { [INFO] [stderr] 390 | | hidden_nodes_by_id.insert(*id, node.crossover(other_node)); [INFO] [stderr] 391 | | } [INFO] [stderr] 392 | | None => (), [INFO] [stderr] 393 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 388 | if let Some(ref other_node) = less_fit_genome.hidden_nodes_by_id.get(&id) { [INFO] [stderr] 389 | hidden_nodes_by_id.insert(*id, node.crossover(other_node)); [INFO] [stderr] 390 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:398:13 [INFO] [stderr] | [INFO] [stderr] 398 | / match less_fit_genome.hidden_nodes_by_id.get(&id) { [INFO] [stderr] 399 | | Some(ref other_node) => { [INFO] [stderr] 400 | | output_nodes_by_id.insert(*id, node.crossover(other_node)); [INFO] [stderr] 401 | | } [INFO] [stderr] 402 | | None => (), [INFO] [stderr] 403 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 398 | if let Some(ref other_node) = less_fit_genome.hidden_nodes_by_id.get(&id) { [INFO] [stderr] 399 | output_nodes_by_id.insert(*id, node.crossover(other_node)); [INFO] [stderr] 400 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | / match less_fit_genome.connections_by_edge.get(&edge) { [INFO] [stderr] 409 | | Some(ref other_con) => { [INFO] [stderr] 410 | | connections_by_edge.insert(*edge, con.crossover(other_con)); [INFO] [stderr] 411 | | } [INFO] [stderr] 412 | | None => (), [INFO] [stderr] 413 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 408 | if let Some(ref other_con) = less_fit_genome.connections_by_edge.get(&edge) { [INFO] [stderr] 409 | connections_by_edge.insert(*edge, con.crossover(other_con)); [INFO] [stderr] 410 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: The function/method `choose` doesn't need a mutable reference [INFO] [stderr] --> src/genome.rs:517:37 [INFO] [stderr] | [INFO] [stderr] 517 | let connection = rng.choose(&mut possible_connections).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:567:19 [INFO] [stderr] | [INFO] [stderr] 567 | let con = self.connections_by_edge.get(&split_edge).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.connections_by_edge[&split_edge]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/genome.rs:638:18 [INFO] [stderr] | [INFO] [stderr] 638 | .or_insert(HashSet::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/genome.rs:647:13 [INFO] [stderr] | [INFO] [stderr] 647 | / match out_ids_by_in_id.get(&queue.pop_front().unwrap()) { [INFO] [stderr] 648 | | Some(ref out_ids) => { [INFO] [stderr] 649 | | if out_ids.contains(&in_id) { [INFO] [stderr] 650 | | return true; [INFO] [stderr] ... | [INFO] [stderr] 656 | | None => (), [INFO] [stderr] 657 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 647 | if let Some(ref out_ids) = out_ids_by_in_id.get(&queue.pop_front().unwrap()) { [INFO] [stderr] 648 | if out_ids.contains(&in_id) { [INFO] [stderr] 649 | return true; [INFO] [stderr] 650 | } [INFO] [stderr] 651 | for out_id in out_ids.into_iter() { [INFO] [stderr] 652 | queue.push_back(*out_id); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashSet [INFO] [stderr] --> src/genome.rs:652:43 [INFO] [stderr] | [INFO] [stderr] 652 | for out_id in out_ids.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:751:27 [INFO] [stderr] | [INFO] [stderr] 751 | assert_approx_eq!(results.get(&OUTPUT_1).unwrap(), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&results[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:774:24 [INFO] [stderr] | [INFO] [stderr] 774 | let in_id_1 = *gen.input_ids_by_name.get(&INPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.input_ids_by_name[&INPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:775:24 [INFO] [stderr] | [INFO] [stderr] 775 | let in_id_2 = *gen.input_ids_by_name.get(&INPUT_2).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.input_ids_by_name[&INPUT_2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:776:23 [INFO] [stderr] | [INFO] [stderr] 776 | let out_id = *gen.output_ids_by_name.get(&OUTPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.output_ids_by_name[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:814:27 [INFO] [stderr] | [INFO] [stderr] 814 | assert_approx_eq!(results.get(&OUTPUT_1).unwrap(), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&results[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:825:27 [INFO] [stderr] | [INFO] [stderr] 825 | assert_approx_eq!(results.get(&OUTPUT_1).unwrap(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&results[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:836:27 [INFO] [stderr] | [INFO] [stderr] 836 | assert_approx_eq!(results.get(&OUTPUT_1).unwrap(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&results[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:847:27 [INFO] [stderr] | [INFO] [stderr] 847 | assert_approx_eq!(results.get(&OUTPUT_1).unwrap(), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&results[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:870:9 [INFO] [stderr] | [INFO] [stderr] 870 | / assert_eq!( [INFO] [stderr] 871 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 872 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 873 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:870:9 [INFO] [stderr] | [INFO] [stderr] 870 | / assert_eq!( [INFO] [stderr] 871 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 872 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 873 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:874:9 [INFO] [stderr] | [INFO] [stderr] 874 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:874:9 [INFO] [stderr] | [INFO] [stderr] 874 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:880:9 [INFO] [stderr] | [INFO] [stderr] 880 | / assert_eq!( [INFO] [stderr] 881 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 882 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 883 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:880:9 [INFO] [stderr] | [INFO] [stderr] 880 | / assert_eq!( [INFO] [stderr] 881 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 882 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 883 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:884:9 [INFO] [stderr] | [INFO] [stderr] 884 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:884:9 [INFO] [stderr] | [INFO] [stderr] 884 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:892:9 [INFO] [stderr] | [INFO] [stderr] 892 | / assert_eq!( [INFO] [stderr] 893 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 894 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 895 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:892:9 [INFO] [stderr] | [INFO] [stderr] 892 | / assert_eq!( [INFO] [stderr] 893 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 894 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 895 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:896:9 [INFO] [stderr] | [INFO] [stderr] 896 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:896:9 [INFO] [stderr] | [INFO] [stderr] 896 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:901:9 [INFO] [stderr] | [INFO] [stderr] 901 | / assert_eq!( [INFO] [stderr] 902 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 903 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 904 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:901:9 [INFO] [stderr] | [INFO] [stderr] 901 | / assert_eq!( [INFO] [stderr] 902 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 903 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 904 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:905:9 [INFO] [stderr] | [INFO] [stderr] 905 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:905:9 [INFO] [stderr] | [INFO] [stderr] 905 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:911:9 [INFO] [stderr] | [INFO] [stderr] 911 | / assert_eq!( [INFO] [stderr] 912 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 913 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 914 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:911:9 [INFO] [stderr] | [INFO] [stderr] 911 | / assert_eq!( [INFO] [stderr] 912 | | gen_1.distance(&gen_2, &spec_conf), [INFO] [stderr] 913 | | gen_2.distance(&gen_1, &spec_conf) [INFO] [stderr] 914 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:915:9 [INFO] [stderr] | [INFO] [stderr] 915 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:915:9 [INFO] [stderr] | [INFO] [stderr] 915 | assert_eq!(gen_1.distance(&gen_2, &spec_conf), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1005:22 [INFO] [stderr] | [INFO] [stderr] 1005 | let in_id = *gen.input_ids_by_name.get(&INPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.input_ids_by_name[&INPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1006:23 [INFO] [stderr] | [INFO] [stderr] 1006 | let out_id = *gen.output_ids_by_name.get(&OUTPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.output_ids_by_name[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1017:13 [INFO] [stderr] | [INFO] [stderr] 1017 | / gen.connections_by_edge [INFO] [stderr] 1018 | | .get(&(in_id, out_id)) [INFO] [stderr] 1019 | | .unwrap() [INFO] [stderr] | |_________________________^ help: try this: `&gen.connections_by_edge[&(in_id, out_id)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1036:22 [INFO] [stderr] | [INFO] [stderr] 1036 | let in_id = *gen.input_ids_by_name.get(&INPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.input_ids_by_name[&INPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1037:23 [INFO] [stderr] | [INFO] [stderr] 1037 | let out_id = *gen.output_ids_by_name.get(&OUTPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.output_ids_by_name[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1040:13 [INFO] [stderr] | [INFO] [stderr] 1040 | / gen.connections_by_edge [INFO] [stderr] 1041 | | .get(&(in_id, out_id)) [INFO] [stderr] 1042 | | .unwrap() [INFO] [stderr] | |_________________________^ help: try this: `&gen.connections_by_edge[&(in_id, out_id)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1051:13 [INFO] [stderr] | [INFO] [stderr] 1051 | / gen.connections_by_edge [INFO] [stderr] 1052 | | .get(&(in_id, out_id)) [INFO] [stderr] 1053 | | .unwrap() [INFO] [stderr] | |_________________________^ help: try this: `&gen.connections_by_edge[&(in_id, out_id)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1067:22 [INFO] [stderr] | [INFO] [stderr] 1067 | let in_id = *gen.input_ids_by_name.get(&INPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.input_ids_by_name[&INPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1068:23 [INFO] [stderr] | [INFO] [stderr] 1068 | let out_id = *gen.output_ids_by_name.get(&OUTPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.output_ids_by_name[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1093:22 [INFO] [stderr] | [INFO] [stderr] 1093 | let in_id = *gen.input_ids_by_name.get(&INPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.input_ids_by_name[&INPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1094:23 [INFO] [stderr] | [INFO] [stderr] 1094 | let out_id = *gen.output_ids_by_name.get(&OUTPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.output_ids_by_name[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1105:13 [INFO] [stderr] | [INFO] [stderr] 1105 | / gen.connections_by_edge [INFO] [stderr] 1106 | | .get(&(in_id, out_id)) [INFO] [stderr] 1107 | | .unwrap() [INFO] [stderr] | |_________________________^ help: try this: `&gen.connections_by_edge[&(in_id, out_id)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1159:22 [INFO] [stderr] | [INFO] [stderr] 1159 | let in_id = *gen.input_ids_by_name.get(&INPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.input_ids_by_name[&INPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1160:23 [INFO] [stderr] | [INFO] [stderr] 1160 | let out_id = *gen.output_ids_by_name.get(&OUTPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.output_ids_by_name[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1162:30 [INFO] [stderr] | [INFO] [stderr] 1162 | let initial_weight = gen.connections_by_edge [INFO] [stderr] | ______________________________^ [INFO] [stderr] 1163 | | .get(&(in_id, out_id)) [INFO] [stderr] 1164 | | .unwrap() [INFO] [stderr] | |_____________________^ help: try this: `&gen.connections_by_edge[&(in_id, out_id)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:1167:9 [INFO] [stderr] | [INFO] [stderr] 1167 | assert_eq!(initial_weight, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:1167:9 [INFO] [stderr] | [INFO] [stderr] 1167 | assert_eq!(initial_weight, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1171:26 [INFO] [stderr] | [INFO] [stderr] 1171 | let new_weight = gen.connections_by_edge [INFO] [stderr] | __________________________^ [INFO] [stderr] 1172 | | .get(&(in_id, out_id)) [INFO] [stderr] 1173 | | .unwrap() [INFO] [stderr] | |_____________________^ help: try this: `&gen.connections_by_edge[&(in_id, out_id)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/genome.rs:1176:9 [INFO] [stderr] | [INFO] [stderr] 1176 | assert_eq!(new_weight, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/genome.rs:1176:9 [INFO] [stderr] | [INFO] [stderr] 1176 | assert_eq!(new_weight, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1186:22 [INFO] [stderr] | [INFO] [stderr] 1186 | let in_id = *gen.input_ids_by_name.get(&INPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.input_ids_by_name[&INPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/genome.rs:1187:23 [INFO] [stderr] | [INFO] [stderr] 1187 | let out_id = *gen.output_ids_by_name.get(&OUTPUT_1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&gen.output_ids_by_name[&OUTPUT_1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `speciation::SpeciationConfig` [INFO] [stderr] --> src/speciation.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> SpeciationConfig { [INFO] [stderr] 20 | | SpeciationConfig { [INFO] [stderr] 21 | | compatibility_threshold: 0.0, [INFO] [stderr] 22 | | compatibility_disjoint_coefficient: 0.0, [INFO] [stderr] 23 | | compatibility_weight_coefficient: 0.0, [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/speciation.rs:81:14 [INFO] [stderr] | [INFO] [stderr] 81 | .or_insert(HashSet::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/speciation.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | / species [INFO] [stderr] 122 | | .values() [INFO] [stderr] 123 | | .find(|val| **val == vec![1].into_iter().collect()) [INFO] [stderr] 124 | | .is_some() [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|val| **val == vec![1].into_iter().collect()).is_some()` with `any(|val| **val == vec![1].into_iter().collect())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/speciation.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | / species [INFO] [stderr] 128 | | .values() [INFO] [stderr] 129 | | .find(|val| **val == vec![2, 3].into_iter().collect()) [INFO] [stderr] 130 | | .is_some() [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|val| **val == vec![2, 3].into_iter().collect()).is_some()` with `any(|val| **val == vec![2, 3].into_iter().collect())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] error: aborting due to 29 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `neat-rust`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "f2b22134c7c8cb760bb62355101a68265c55a0947cf21fa47aa6ec261f19b4af"` [INFO] running `"docker" "rm" "-f" "f2b22134c7c8cb760bb62355101a68265c55a0947cf21fa47aa6ec261f19b4af"` [INFO] [stdout] f2b22134c7c8cb760bb62355101a68265c55a0947cf21fa47aa6ec261f19b4af