[INFO] updating cached repository Sceptix/bf-ai [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Sceptix/bf-ai [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Sceptix/bf-ai" "work/ex/clippy-test-run/sources/stable/gh/Sceptix/bf-ai"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Sceptix/bf-ai'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Sceptix/bf-ai" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Sceptix/bf-ai"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Sceptix/bf-ai'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] edfd56b4290df567afb6fac1add72a89eaa0b189 [INFO] sha for GitHub repo Sceptix/bf-ai: edfd56b4290df567afb6fac1add72a89eaa0b189 [INFO] validating manifest of Sceptix/bf-ai 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 Sceptix/bf-ai 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 Sceptix/bf-ai [INFO] finished frobbing Sceptix/bf-ai [INFO] frobbed toml for Sceptix/bf-ai written to work/ex/clippy-test-run/sources/stable/gh/Sceptix/bf-ai/Cargo.toml [INFO] started frobbing Sceptix/bf-ai [INFO] finished frobbing Sceptix/bf-ai [INFO] frobbed toml for Sceptix/bf-ai written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Sceptix/bf-ai/Cargo.toml [INFO] crate Sceptix/bf-ai 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 Sceptix/bf-ai against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Sceptix/bf-ai:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] c202c1f5bc3b9fb4e9547f7d5d5a0d5cb0ad09ac5bbc4c1e9631285b5c436c32 [INFO] running `"docker" "start" "-a" "c202c1f5bc3b9fb4e9547f7d5d5a0d5cb0ad09ac5bbc4c1e9631285b5c436c32"` [INFO] [stderr] Checking bf-ai v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:361:39 [INFO] [stderr] | [INFO] [stderr] 361 | population.push(Species { genome: genome, fitness: fitness }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `genome` [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/main.rs:361:55 [INFO] [stderr] | [INFO] [stderr] 361 | population.push(Species { genome: genome, fitness: fitness }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `fitness` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:361:39 [INFO] [stderr] | [INFO] [stderr] 361 | population.push(Species { genome: genome, fitness: fitness }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `genome` [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/main.rs:361:55 [INFO] [stderr] | [INFO] [stderr] 361 | population.push(Species { genome: genome, fitness: fitness }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `fitness` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | p [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/main.rs:74:21 [INFO] [stderr] | [INFO] [stderr] 74 | let p = generate_population(POPULATIONSIZE / THREADS); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:123:7 [INFO] [stderr] | [INFO] [stderr] 123 | if(population[0].genome != lastbestgenome){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:141:7 [INFO] [stderr] | [INFO] [stderr] 141 | if(population[0].fitness == ((SEARCHSTRING.chars().count() as i32 - 1 as i32) as i32 * 256 as i32) as i32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:199:7 [INFO] [stderr] | [INFO] [stderr] 199 | if(yesorno >= 0 && yesorno < mutation || bypass){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:206:23 [INFO] [stderr] | [INFO] [stderr] 206 | if(y != index){ [INFO] [stderr] | ^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:243:7 [INFO] [stderr] | [INFO] [stderr] 243 | if(s1genome.len() > s2genome.len()){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:247:15 [INFO] [stderr] | [INFO] [stderr] 247 | if(rand == 0){ [INFO] [stderr] | ^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:249:20 [INFO] [stderr] | [INFO] [stderr] 249 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 250 | | if(s2genome.len() <= x) { [INFO] [stderr] 251 | | newgenome.push(s1genome.chars().nth(x).unwrap()); [INFO] [stderr] 252 | | } else { [INFO] [stderr] 253 | | newgenome.push(s2genome.chars().nth(x).unwrap()); [INFO] [stderr] 254 | | } [INFO] [stderr] 255 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 249 | } else if(s2genome.len() <= x) { [INFO] [stderr] 250 | newgenome.push(s1genome.chars().nth(x).unwrap()); [INFO] [stderr] 251 | } else { [INFO] [stderr] 252 | newgenome.push(s2genome.chars().nth(x).unwrap()); [INFO] [stderr] 253 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:250:19 [INFO] [stderr] | [INFO] [stderr] 250 | if(s2genome.len() <= x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:261:15 [INFO] [stderr] | [INFO] [stderr] 261 | if(rand == 0){ [INFO] [stderr] | ^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:263:20 [INFO] [stderr] | [INFO] [stderr] 263 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 264 | | if(s1genome.len() <= x) { [INFO] [stderr] 265 | | newgenome.push(s2genome.chars().nth(x).unwrap()); [INFO] [stderr] 266 | | } else { [INFO] [stderr] 267 | | newgenome.push(s1genome.chars().nth(x).unwrap()); [INFO] [stderr] 268 | | } [INFO] [stderr] 269 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 263 | } else if(s1genome.len() <= x) { [INFO] [stderr] 264 | newgenome.push(s2genome.chars().nth(x).unwrap()); [INFO] [stderr] 265 | } else { [INFO] [stderr] 266 | newgenome.push(s1genome.chars().nth(x).unwrap()); [INFO] [stderr] 267 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:264:19 [INFO] [stderr] | [INFO] [stderr] 264 | if(s1genome.len() <= x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:281:7 [INFO] [stderr] | [INFO] [stderr] 281 | if(ind1.fitness > ind2.fitness){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:313:15 [INFO] [stderr] | [INFO] [stderr] 313 | if(rand >= currangestart && rand <= currangestart + (probabilities[i2] * 1000.0) as i32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:327:15 [INFO] [stderr] | [INFO] [stderr] 327 | if(rand >= currangestart2 && rand <= currangestart2 + (probabilities[i3] * 1000.0) as i32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | p [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/main.rs:74:21 [INFO] [stderr] | [INFO] [stderr] 74 | let p = generate_population(POPULATIONSIZE / THREADS); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:123:7 [INFO] [stderr] | [INFO] [stderr] 123 | if(population[0].genome != lastbestgenome){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:141:7 [INFO] [stderr] | [INFO] [stderr] 141 | if(population[0].fitness == ((SEARCHSTRING.chars().count() as i32 - 1 as i32) as i32 * 256 as i32) as i32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:199:7 [INFO] [stderr] | [INFO] [stderr] 199 | if(yesorno >= 0 && yesorno < mutation || bypass){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:206:23 [INFO] [stderr] | [INFO] [stderr] 206 | if(y != index){ [INFO] [stderr] | ^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:243:7 [INFO] [stderr] | [INFO] [stderr] 243 | if(s1genome.len() > s2genome.len()){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:247:15 [INFO] [stderr] | [INFO] [stderr] 247 | if(rand == 0){ [INFO] [stderr] | ^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:249:20 [INFO] [stderr] | [INFO] [stderr] 249 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 250 | | if(s2genome.len() <= x) { [INFO] [stderr] 251 | | newgenome.push(s1genome.chars().nth(x).unwrap()); [INFO] [stderr] 252 | | } else { [INFO] [stderr] 253 | | newgenome.push(s2genome.chars().nth(x).unwrap()); [INFO] [stderr] 254 | | } [INFO] [stderr] 255 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 249 | } else if(s2genome.len() <= x) { [INFO] [stderr] 250 | newgenome.push(s1genome.chars().nth(x).unwrap()); [INFO] [stderr] 251 | } else { [INFO] [stderr] 252 | newgenome.push(s2genome.chars().nth(x).unwrap()); [INFO] [stderr] 253 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:250:19 [INFO] [stderr] | [INFO] [stderr] 250 | if(s2genome.len() <= x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:261:15 [INFO] [stderr] | [INFO] [stderr] 261 | if(rand == 0){ [INFO] [stderr] | ^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:263:20 [INFO] [stderr] | [INFO] [stderr] 263 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 264 | | if(s1genome.len() <= x) { [INFO] [stderr] 265 | | newgenome.push(s2genome.chars().nth(x).unwrap()); [INFO] [stderr] 266 | | } else { [INFO] [stderr] 267 | | newgenome.push(s1genome.chars().nth(x).unwrap()); [INFO] [stderr] 268 | | } [INFO] [stderr] 269 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 263 | } else if(s1genome.len() <= x) { [INFO] [stderr] 264 | newgenome.push(s2genome.chars().nth(x).unwrap()); [INFO] [stderr] 265 | } else { [INFO] [stderr] 266 | newgenome.push(s1genome.chars().nth(x).unwrap()); [INFO] [stderr] 267 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:264:19 [INFO] [stderr] | [INFO] [stderr] 264 | if(s1genome.len() <= x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:281:7 [INFO] [stderr] | [INFO] [stderr] 281 | if(ind1.fitness > ind2.fitness){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:313:15 [INFO] [stderr] | [INFO] [stderr] 313 | if(rand >= currangestart && rand <= currangestart + (probabilities[i2] * 1000.0) as i32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:327:15 [INFO] [stderr] | [INFO] [stderr] 327 | if(rand >= currangestart2 && rand <= currangestart2 + (probabilities[i3] * 1000.0) as i32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused variable: `iselite` [INFO] [stderr] --> src/main.rs:150:73 [INFO] [stderr] | [INFO] [stderr] 150 | fn evolve_population(size: i32, oldpop: Vec, mutationval: i32, iselite: i32) -> (Vec){ [INFO] [stderr] | ^^^^^^^ help: consider using `_iselite` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/main.rs:203:17 [INFO] [stderr] | [INFO] [stderr] 203 | for x in 0..changes{ [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `rand` is never read [INFO] [stderr] --> src/main.rs:244:9 [INFO] [stderr] | [INFO] [stderr] 244 | rand = rand::thread_rng().gen_range(0,2); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `rand` is never read [INFO] [stderr] --> src/main.rs:258:9 [INFO] [stderr] | [INFO] [stderr] 258 | rand = rand::thread_rng().gen_range(0,2); [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `iterations` is never read [INFO] [stderr] --> src/main.rs:315:17 [INFO] [stderr] | [INFO] [stderr] 315 | iterations = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `currangestart` is never read [INFO] [stderr] --> src/main.rs:316:17 [INFO] [stderr] | [INFO] [stderr] 316 | currangestart = 0; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `iterations2` is never read [INFO] [stderr] --> src/main.rs:329:17 [INFO] [stderr] | [INFO] [stderr] 329 | iterations2 = 0; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `currangestart2` is never read [INFO] [stderr] --> src/main.rs:330:17 [INFO] [stderr] | [INFO] [stderr] 330 | currangestart2 = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | let mut mutation: i32 = MUTATIONRATE; [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | let mut s1genome = String::from(s1.genome.clone()); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | let mut s2genome = s2.genome.clone(); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | let mut random = rand::thread_rng().gen_range(0, population.len()); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:278:9 [INFO] [stderr] | [INFO] [stderr] 278 | let mut random2 = rand::thread_rng().gen_range(0, population.len()); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `POPULATIONGROWTH` [INFO] [stderr] --> src/main.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | const POPULATIONGROWTH: i32 = 0; //in percent [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:108:28 [INFO] [stderr] | [INFO] [stderr] 108 | let mutclone = mutation.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `mutation` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/main.rs:125:12 [INFO] [stderr] | [INFO] [stderr] 125 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 126 | | //mutation += 2; [INFO] [stderr] 127 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/main.rs:123:47 [INFO] [stderr] | [INFO] [stderr] 123 | if(population[0].genome != lastbestgenome){ [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 124 | | //mutation -= 1; [INFO] [stderr] 125 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/main.rs:160:17 [INFO] [stderr] | [INFO] [stderr] 160 | for _ in 0..(size / 6) * 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:162:25 [INFO] [stderr] | [INFO] [stderr] 162 | ccs = crossover(oldpopclone.get(roulettetuple.0 as usize).unwrap().clone(), oldpopclone.get(roulettetuple.1 as usize).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `oldpopclone[roulettetuple.0 as usize]` [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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:162:85 [INFO] [stderr] | [INFO] [stderr] 162 | ccs = crossover(oldpopclone.get(roulettetuple.0 as usize).unwrap().clone(), oldpopclone.get(roulettetuple.1 as usize).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `oldpopclone[roulettetuple.1 as usize]` [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 Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:167:26 [INFO] [stderr] | [INFO] [stderr] 167 | ccs1 = crossover(oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as usize).unwrap().clone(), oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `oldpopclone.clone()[tournament_select(oldpopclone.clone()) as usize]` [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 Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:167:117 [INFO] [stderr] | [INFO] [stderr] 167 | ccs1 = crossover(oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as usize).unwrap().clone(), oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as [INFO] [stderr] | _____________________________________________________________________________________________________________________^ [INFO] [stderr] 168 | | usize).unwrap().clone()); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 167 | ccs1 = crossover(oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as usize).unwrap().clone(), oldpopclone.clone()[tournament_select(oldpopclone.clone()) as [INFO] [stderr] 168 | usize].clone()); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:201:43 [INFO] [stderr] | [INFO] [stderr] 201 | let mut firststring: String = String::from(s.genome.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s.genome.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:239:24 [INFO] [stderr] | [INFO] [stderr] 239 | let mut s1genome = String::from(s1.genome.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s1.genome.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:279:16 [INFO] [stderr] | [INFO] [stderr] 279 | let ind1 = population.get(random).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `population[random]` [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 Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:280:16 [INFO] [stderr] | [INFO] [stderr] 280 | let ind2 = population.get(random2).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `population[random2]` [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: the loop variable `i` is only used to index `population`. [INFO] [stderr] --> src/main.rs:290:14 [INFO] [stderr] | [INFO] [stderr] 290 | for i in 0..population.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 290 | for in &population{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `population`. [INFO] [stderr] --> src/main.rs:297:14 [INFO] [stderr] | [INFO] [stderr] 297 | for i in 0..population.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 297 | for in &population{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i2` is only used to index `probabilities`. [INFO] [stderr] --> src/main.rs:312:15 [INFO] [stderr] | [INFO] [stderr] 312 | for i2 in 0..probabilities.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 312 | for in &probabilities{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i3` is only used to index `probabilities`. [INFO] [stderr] --> src/main.rs:326:15 [INFO] [stderr] | [INFO] [stderr] 326 | for i3 in 0..probabilities.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 326 | for in &probabilities{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/main.rs:379:5 [INFO] [stderr] | [INFO] [stderr] 379 | / loop { [INFO] [stderr] 380 | | randomgenomesize = rand::thread_rng().gen_range(GENOME_SIZE_MIN - 1, GENOME_SIZE_MAX); [INFO] [stderr] 381 | | [INFO] [stderr] 382 | | for _ in 0..randomgenomesize + 1 { [INFO] [stderr] ... | [INFO] [stderr] 406 | | } [INFO] [stderr] 407 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:382:18 [INFO] [stderr] | [INFO] [stderr] 382 | for _ in 0..randomgenomesize + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=randomgenomesize` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:420:16 [INFO] [stderr] | [INFO] [stderr] 420 | if !output.chars().nth(x).is_none() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `output.chars().nth(x).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:425:32 [INFO] [stderr] | [INFO] [stderr] 425 | value_no_abs = cursearchasascii as i32 - curoutasascii as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(cursearchasascii)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:425:58 [INFO] [stderr] | [INFO] [stderr] 425 | value_no_abs = cursearchasascii as i32 - curoutasascii as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(curoutasascii)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `bf-ai`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused variable: `iselite` [INFO] [stderr] --> src/main.rs:150:73 [INFO] [stderr] | [INFO] [stderr] 150 | fn evolve_population(size: i32, oldpop: Vec, mutationval: i32, iselite: i32) -> (Vec){ [INFO] [stderr] | ^^^^^^^ help: consider using `_iselite` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/main.rs:203:17 [INFO] [stderr] | [INFO] [stderr] 203 | for x in 0..changes{ [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `rand` is never read [INFO] [stderr] --> src/main.rs:244:9 [INFO] [stderr] | [INFO] [stderr] 244 | rand = rand::thread_rng().gen_range(0,2); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `rand` is never read [INFO] [stderr] --> src/main.rs:258:9 [INFO] [stderr] | [INFO] [stderr] 258 | rand = rand::thread_rng().gen_range(0,2); [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `iterations` is never read [INFO] [stderr] --> src/main.rs:315:17 [INFO] [stderr] | [INFO] [stderr] 315 | iterations = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `currangestart` is never read [INFO] [stderr] --> src/main.rs:316:17 [INFO] [stderr] | [INFO] [stderr] 316 | currangestart = 0; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `iterations2` is never read [INFO] [stderr] --> src/main.rs:329:17 [INFO] [stderr] | [INFO] [stderr] 329 | iterations2 = 0; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `currangestart2` is never read [INFO] [stderr] --> src/main.rs:330:17 [INFO] [stderr] | [INFO] [stderr] 330 | currangestart2 = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | let mut mutation: i32 = MUTATIONRATE; [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | let mut s1genome = String::from(s1.genome.clone()); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | let mut s2genome = s2.genome.clone(); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | let mut random = rand::thread_rng().gen_range(0, population.len()); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:278:9 [INFO] [stderr] | [INFO] [stderr] 278 | let mut random2 = rand::thread_rng().gen_range(0, population.len()); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `POPULATIONGROWTH` [INFO] [stderr] --> src/main.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | const POPULATIONGROWTH: i32 = 0; //in percent [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:108:28 [INFO] [stderr] | [INFO] [stderr] 108 | let mutclone = mutation.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `mutation` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/main.rs:125:12 [INFO] [stderr] | [INFO] [stderr] 125 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 126 | | //mutation += 2; [INFO] [stderr] 127 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/main.rs:123:47 [INFO] [stderr] | [INFO] [stderr] 123 | if(population[0].genome != lastbestgenome){ [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 124 | | //mutation -= 1; [INFO] [stderr] 125 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/main.rs:160:17 [INFO] [stderr] | [INFO] [stderr] 160 | for _ in 0..(size / 6) * 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:162:25 [INFO] [stderr] | [INFO] [stderr] 162 | ccs = crossover(oldpopclone.get(roulettetuple.0 as usize).unwrap().clone(), oldpopclone.get(roulettetuple.1 as usize).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `oldpopclone[roulettetuple.0 as usize]` [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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:162:85 [INFO] [stderr] | [INFO] [stderr] 162 | ccs = crossover(oldpopclone.get(roulettetuple.0 as usize).unwrap().clone(), oldpopclone.get(roulettetuple.1 as usize).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `oldpopclone[roulettetuple.1 as usize]` [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 Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:167:26 [INFO] [stderr] | [INFO] [stderr] 167 | ccs1 = crossover(oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as usize).unwrap().clone(), oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `oldpopclone.clone()[tournament_select(oldpopclone.clone()) as usize]` [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 Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:167:117 [INFO] [stderr] | [INFO] [stderr] 167 | ccs1 = crossover(oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as usize).unwrap().clone(), oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as [INFO] [stderr] | _____________________________________________________________________________________________________________________^ [INFO] [stderr] 168 | | usize).unwrap().clone()); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 167 | ccs1 = crossover(oldpopclone.clone().get(tournament_select(oldpopclone.clone()) as usize).unwrap().clone(), oldpopclone.clone()[tournament_select(oldpopclone.clone()) as [INFO] [stderr] 168 | usize].clone()); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:201:43 [INFO] [stderr] | [INFO] [stderr] 201 | let mut firststring: String = String::from(s.genome.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s.genome.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:239:24 [INFO] [stderr] | [INFO] [stderr] 239 | let mut s1genome = String::from(s1.genome.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s1.genome.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:279:16 [INFO] [stderr] | [INFO] [stderr] 279 | let ind1 = population.get(random).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `population[random]` [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 Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:280:16 [INFO] [stderr] | [INFO] [stderr] 280 | let ind2 = population.get(random2).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `population[random2]` [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: the loop variable `i` is only used to index `population`. [INFO] [stderr] --> src/main.rs:290:14 [INFO] [stderr] | [INFO] [stderr] 290 | for i in 0..population.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 290 | for in &population{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `population`. [INFO] [stderr] --> src/main.rs:297:14 [INFO] [stderr] | [INFO] [stderr] 297 | for i in 0..population.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 297 | for in &population{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i2` is only used to index `probabilities`. [INFO] [stderr] --> src/main.rs:312:15 [INFO] [stderr] | [INFO] [stderr] 312 | for i2 in 0..probabilities.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 312 | for in &probabilities{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i3` is only used to index `probabilities`. [INFO] [stderr] --> src/main.rs:326:15 [INFO] [stderr] | [INFO] [stderr] 326 | for i3 in 0..probabilities.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 326 | for in &probabilities{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/main.rs:379:5 [INFO] [stderr] | [INFO] [stderr] 379 | / loop { [INFO] [stderr] 380 | | randomgenomesize = rand::thread_rng().gen_range(GENOME_SIZE_MIN - 1, GENOME_SIZE_MAX); [INFO] [stderr] 381 | | [INFO] [stderr] 382 | | for _ in 0..randomgenomesize + 1 { [INFO] [stderr] ... | [INFO] [stderr] 406 | | } [INFO] [stderr] 407 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:382:18 [INFO] [stderr] | [INFO] [stderr] 382 | for _ in 0..randomgenomesize + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=randomgenomesize` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:420:16 [INFO] [stderr] | [INFO] [stderr] 420 | if !output.chars().nth(x).is_none() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `output.chars().nth(x).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:425:32 [INFO] [stderr] | [INFO] [stderr] 425 | value_no_abs = cursearchasascii as i32 - curoutasascii as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(cursearchasascii)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:425:58 [INFO] [stderr] | [INFO] [stderr] 425 | value_no_abs = cursearchasascii as i32 - curoutasascii as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(curoutasascii)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `bf-ai`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "c202c1f5bc3b9fb4e9547f7d5d5a0d5cb0ad09ac5bbc4c1e9631285b5c436c32"` [INFO] running `"docker" "rm" "-f" "c202c1f5bc3b9fb4e9547f7d5d5a0d5cb0ad09ac5bbc4c1e9631285b5c436c32"` [INFO] [stdout] c202c1f5bc3b9fb4e9547f7d5d5a0d5cb0ad09ac5bbc4c1e9631285b5c436c32