[INFO] cloning repository https://github.com/khskarl/genetic-thing
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/khskarl/genetic-thing" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkhskarl%2Fgenetic-thing", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkhskarl%2Fgenetic-thing'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8a0df2414ca4389cc43d063c349625b27f201b25
[INFO] testing khskarl/genetic-thing against 1.75.0 for beta-1.76-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkhskarl%2Fgenetic-thing" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/khskarl/genetic-thing on toolchain 1.75.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.75.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/khskarl/genetic-thing
[INFO] finished tweaking git repo https://github.com/khskarl/genetic-thing
[INFO] tweaked toml for git repo https://github.com/khskarl/genetic-thing written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/khskarl/genetic-thing already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.75.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded num-complex v0.1.37
[INFO] [stderr]   Downloaded num-bigint v0.1.37
[INFO] [stderr]   Downloaded gnuplot v0.0.22
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 77db12a57cfa7c95b1849254b309c7d887037e4c9842b790973bea3f3b13e8ec
[INFO] running `Command { std: "docker" "start" "-a" "77db12a57cfa7c95b1849254b309c7d887037e4c9842b790973bea3f3b13e8ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "77db12a57cfa7c95b1849254b309c7d887037e4c9842b790973bea3f3b13e8ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "77db12a57cfa7c95b1849254b309c7d887037e4c9842b790973bea3f3b13e8ec", kill_on_drop: false }`
[INFO] [stdout] 77db12a57cfa7c95b1849254b309c7d887037e4c9842b790973bea3f3b13e8ec
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 85b78aee67c40dfa015d4051890d1a4dd9693ed336a680f46277e31f25ae4def
[INFO] running `Command { std: "docker" "start" "-a" "85b78aee67c40dfa015d4051890d1a4dd9693ed336a680f46277e31f25ae4def", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.1.37
[INFO] [stderr]    Compiling libc v0.2.21
[INFO] [stderr]    Compiling rustc-serialize v0.3.23
[INFO] [stderr]    Compiling gnuplot v0.0.22
[INFO] [stderr]    Compiling rand v0.3.15
[INFO] [stderr]    Compiling num-integer v0.1.34
[INFO] [stderr]    Compiling num-iter v0.1.33
[INFO] [stderr]    Compiling num-bigint v0.1.37
[INFO] [stderr]    Compiling num-complex v0.1.37
[INFO] [stderr]    Compiling num-rational v0.1.36
[INFO] [stderr]    Compiling num v0.1.37
[INFO] [stderr]    Compiling genetic-thing v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `gnuplot::LabelOption::TextColor`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use gnuplot::LabelOption::TextColor;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Zero`
[INFO] [stdout]  --> src/genetic/population.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use self::num::{Num, Zero, One};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::num::traits::pow`
[INFO] [stdout]  --> src/genetic/population.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use self::num::traits::pow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mul`, `Sub`
[INFO] [stdout]   --> src/genetic/population.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::ops::{Add, Sub, Mul};
[INFO] [stdout]    |                     ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/genetic/fitness.rs:248:23
[INFO] [stdout]     |
[INFO] [stdout] 248 |     let mut penalty = (factor_bad_steps);
[INFO] [stdout]     |                       ^                ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 248 -     let mut penalty = (factor_bad_steps);
[INFO] [stdout] 248 +     let mut penalty = factor_bad_steps;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/genetic/fitness.rs:249:23
[INFO] [stdout]     |
[INFO] [stdout] 249 |     let mut fitness = (factor_close * 0.2 + factor_consecutive_steps);
[INFO] [stdout]     |                       ^                                             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 249 -     let mut fitness = (factor_close * 0.2 + factor_consecutive_steps);
[INFO] [stdout] 249 +     let mut fitness = factor_close * 0.2 + factor_consecutive_steps;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/genetic/mutation.rs:52:74
[INFO] [stdout]    |
[INFO] [stdout] 52 |         *gene = rand::thread_rng().gen_range(range.start, range.end + 1);;
[INFO] [stdout]    |                                                                          ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/genetic/mutation.rs:61:76
[INFO] [stdout]    |
[INFO] [stdout] 61 |         *gene = rand::thread_rng().gen_range(range.start, range.end + 1.0);;
[INFO] [stdout]    |                                                                            ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `euclidean_distance_float`, `euclidean_distance_int`
[INFO] [stdout]   --> src/main.rs:10:42
[INFO] [stdout]    |
[INFO] [stdout] 10 | use genetic::helpers::{hamming_distance, euclidean_distance_int, euclidean_distance_float};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `deceptive_4`, `deceptive_f3`, `max_alternating_bits`, `max_alternating_even_odd`, `min_dejong`, `n_queens`, `path_fitness`, `pattern_recognition`
[INFO] [stdout]   --> src/main.rs:12:24
[INFO] [stdout]    |
[INFO] [stdout] 12 | use genetic::fitness::{max_alternating_bits,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |                        max_alternating_even_odd,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |                        pattern_recognition,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |                        min_dejong,
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 16 |                        n_queens,
[INFO] [stdout]    |                        ^^^^^^^^
[INFO] [stdout] 17 |                        path_fitness,
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout] 18 |                        deceptive_f3,
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout] 19 |                        deceptive_f3s,
[INFO] [stdout] 20 |                        deceptive_4};
[INFO] [stdout]    |                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `one_point_crossover_3`, `partially_matched_crossover`, `uniform_average_crossover`, `uniform_crossover_3`, `uniform_crossover`
[INFO] [stdout]   --> src/main.rs:22:26
[INFO] [stdout]    |
[INFO] [stdout] 22 |                          one_point_crossover_3,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |                          uniform_average_crossover,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |                          uniform_crossover,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |                          uniform_crossover_3,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |                          partially_matched_crossover};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `delta_mutation`, `gaussian_mutation`, `random_int`, `swap_position`
[INFO] [stdout]   --> src/main.rs:28:25
[INFO] [stdout]    |
[INFO] [stdout] 28 |                         swap_position,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^
[INFO] [stdout] 29 |                         random_int,
[INFO] [stdout]    |                         ^^^^^^^^^^
[INFO] [stdout] 30 |                         delta_mutation,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 31 |                         gaussian_mutation};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/genetic/mutation.rs:9:30
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn mutate(&mut self, f: &Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>);
[INFO] [stdout]   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn mutate(&mut self, f: &dyn Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>);
[INFO] [stdout]   |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/genetic/mutation.rs:13:30
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn mutate(&mut self, f: &Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>) {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn mutate(&mut self, f: &dyn Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>) {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `One`
[INFO] [stdout]  --> src/genetic/population.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | use self::num::{Num, Zero, One};
[INFO] [stdout]   |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/genetic/population.rs:171:17
[INFO] [stdout]     |
[INFO] [stdout] 171 |             let mut individuals = &mut population.individuals;
[INFO] [stdout]     |                 ----^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/genetic/population.rs:172:17
[INFO] [stdout]     |
[INFO] [stdout] 172 |             let mut fitnesses = &mut population.fitnesses;
[INFO] [stdout]     |                 ----^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/fitness.rs:20:47
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn max_alternating_bits(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]    |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/fitness.rs:35:52
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn max_alternating_even_odd(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]    |                                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/fitness.rs:67:47
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn parps_fitness(binary_genome: &Vec<u8>, range: &Range<f32>) -> f32 {
[INFO] [stdout]    |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/fitness.rs:87:36
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn n_queens(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_steps_until_collision`
[INFO] [stdout]    --> src/genetic/fitness.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let mut num_steps_until_collision = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_steps_until_collision`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/genetic/fitness.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let mut num_steps_until_collision = 0;
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_repeated_steps`
[INFO] [stdout]    --> src/genetic/fitness.rs:232:10
[INFO] [stdout]     |
[INFO] [stdout] 232 |          num_repeated_steps,
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_repeated_steps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `factor_steps`
[INFO] [stdout]    --> src/genetic/fitness.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |     let factor_steps = num_steps as f32 / max_steps;
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_factor_steps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/genetic/fitness.rs:228:40
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub fn path_fitness(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]     |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/genetic/fitness.rs:258:39
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub fn deceptive_f3(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/genetic/fitness.rs:275:40
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn deceptive_f3s(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/genetic/fitness.rs:289:38
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn deceptive_4(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/helpers.rs:27:69
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn hamming_distance(genome_one: &Vec<u8>, genome_two: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]    |                                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/mutation.rs:22:57
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn bit_flip(genome: &mut Vec<u8>, probability: f32, range: &Range<u8>) {
[INFO] [stdout]    |                                                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/mutation.rs:65:63
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn swap_position(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stdout]    |                                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_ordered` is never used
[INFO] [stdout]   --> src/genetic/population.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | / impl<T> Individual<T>
[INFO] [stdout] 29 | |     where T: Copy + PartialOrd
[INFO] [stdout]    | |______________________________- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |       pub fn new_ordered(size: usize) -> Individual<i32>
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `genome_length` is never read
[INFO] [stdout]   --> src/genetic/population.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Population<T>
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 69 |     genome_length: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_ordered`, `select_fit_individual_except`, and `roulette` are never used
[INFO] [stdout]    --> src/genetic/population.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 86  | / impl<T> Population<T>
[INFO] [stdout] 87  | |     where T: Copy + PartialOrd + Num
[INFO] [stdout]     | |____________________________________- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 138 |       pub fn new_ordered(size: usize,
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |       fn select_fit_individual_except(&self, dad_index: usize) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |       fn roulette(&self) -> usize {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max_alternating_bits` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn max_alternating_bits(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max_alternating_even_odd` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn max_alternating_even_odd(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `min_dejong` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn min_dejong(genome: &Vec<f32>, range: &Range<f32>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parps_function` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn parps_function(x: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parps_fitness` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn parps_fitness(binary_genome: &Vec<u8>, range: &Range<f32>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pattern_recognition` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn pattern_recognition(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `n_queens` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn n_queens(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]    --> src/genetic/fitness.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | struct Point {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `walk` is never used
[INFO] [stdout]    --> src/genetic/fitness.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn walk(genome: &Vec<i32>, from: Point, to: Point) -> (usize, usize, usize, usize, usize) {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_fitness` is never used
[INFO] [stdout]    --> src/genetic/fitness.rs:228:8
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub fn path_fitness(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deceptive_f3` is never used
[INFO] [stdout]    --> src/genetic/fitness.rs:258:8
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub fn deceptive_f3(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deceptive_4` is never used
[INFO] [stdout]    --> src/genetic/fitness.rs:289:8
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn deceptive_4(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `binary_vector_to_decimal` is never used
[INFO] [stdout]   --> src/genetic/helpers.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn binary_vector_to_decimal(binary_vector: &Vec<u8>) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `euclidean_distance_int` is never used
[INFO] [stdout]   --> src/genetic/helpers.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn euclidean_distance_int(genome_one: &Vec<i32>, genome_two: &Vec<i32>, range: &Range<i32>) -> f32
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `euclidean_distance_float` is never used
[INFO] [stdout]   --> src/genetic/helpers.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn euclidean_distance_float(genome_one: &Vec<f32>, genome_two: &Vec<f32>, range: &Range<f32>) -> f32
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delta_mutation` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn delta_mutation(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_int` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn random_int(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_real` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn random_real(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `swap_position` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn swap_position(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gaussian` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn gaussian(mean: f32, deviation: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gaussian_mutation` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn gaussian_mutation(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `one_point_crossover_3` is never used
[INFO] [stdout]   --> src/genetic/crossover.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn one_point_crossover_3<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `partially_matched_crossover` is never used
[INFO] [stdout]   --> src/genetic/crossover.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn partially_matched_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uniform_crossover` is never used
[INFO] [stdout]   --> src/genetic/crossover.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn uniform_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uniform_average_crossover` is never used
[INFO] [stdout]    --> src/genetic/crossover.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn uniform_average_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blend_crossover` is never used
[INFO] [stdout]    --> src/genetic/crossover.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn blend_crossover(dad_genome: &Vec<f32>, mom_genome: &Vec<f32>) -> (Vec<f32>, Vec<f32>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uniform_crossover_3` is never used
[INFO] [stdout]    --> src/genetic/crossover.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn uniform_crossover_3<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 62 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 1.58s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: rustc-serialize v0.3.23
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "85b78aee67c40dfa015d4051890d1a4dd9693ed336a680f46277e31f25ae4def", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85b78aee67c40dfa015d4051890d1a4dd9693ed336a680f46277e31f25ae4def", kill_on_drop: false }`
[INFO] [stdout] 85b78aee67c40dfa015d4051890d1a4dd9693ed336a680f46277e31f25ae4def
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b0171bb3d03637e37aa2a665b5310013d0f48be706ec29507c6d194d29d95df4
[INFO] running `Command { std: "docker" "start" "-a" "b0171bb3d03637e37aa2a665b5310013d0f48be706ec29507c6d194d29d95df4", kill_on_drop: false }`
[INFO] [stderr]    Compiling genetic-thing v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `gnuplot::LabelOption::TextColor`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use gnuplot::LabelOption::TextColor;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Zero`
[INFO] [stdout]  --> src/genetic/population.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use self::num::{Num, Zero, One};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::num::traits::pow`
[INFO] [stdout]  --> src/genetic/population.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use self::num::traits::pow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mul`, `Sub`
[INFO] [stdout]   --> src/genetic/population.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::ops::{Add, Sub, Mul};
[INFO] [stdout]    |                     ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/genetic/fitness.rs:248:23
[INFO] [stdout]     |
[INFO] [stdout] 248 |     let mut penalty = (factor_bad_steps);
[INFO] [stdout]     |                       ^                ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 248 -     let mut penalty = (factor_bad_steps);
[INFO] [stdout] 248 +     let mut penalty = factor_bad_steps;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/genetic/fitness.rs:249:23
[INFO] [stdout]     |
[INFO] [stdout] 249 |     let mut fitness = (factor_close * 0.2 + factor_consecutive_steps);
[INFO] [stdout]     |                       ^                                             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 249 -     let mut fitness = (factor_close * 0.2 + factor_consecutive_steps);
[INFO] [stdout] 249 +     let mut fitness = factor_close * 0.2 + factor_consecutive_steps;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/genetic/mutation.rs:52:74
[INFO] [stdout]    |
[INFO] [stdout] 52 |         *gene = rand::thread_rng().gen_range(range.start, range.end + 1);;
[INFO] [stdout]    |                                                                          ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/genetic/mutation.rs:61:76
[INFO] [stdout]    |
[INFO] [stdout] 61 |         *gene = rand::thread_rng().gen_range(range.start, range.end + 1.0);;
[INFO] [stdout]    |                                                                            ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `euclidean_distance_float`, `euclidean_distance_int`
[INFO] [stdout]   --> src/main.rs:10:42
[INFO] [stdout]    |
[INFO] [stdout] 10 | use genetic::helpers::{hamming_distance, euclidean_distance_int, euclidean_distance_float};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `deceptive_4`, `deceptive_f3`, `max_alternating_bits`, `max_alternating_even_odd`, `min_dejong`, `n_queens`, `path_fitness`, `pattern_recognition`
[INFO] [stdout]   --> src/main.rs:12:24
[INFO] [stdout]    |
[INFO] [stdout] 12 | use genetic::fitness::{max_alternating_bits,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |                        max_alternating_even_odd,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |                        pattern_recognition,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |                        min_dejong,
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 16 |                        n_queens,
[INFO] [stdout]    |                        ^^^^^^^^
[INFO] [stdout] 17 |                        path_fitness,
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout] 18 |                        deceptive_f3,
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout] 19 |                        deceptive_f3s,
[INFO] [stdout] 20 |                        deceptive_4};
[INFO] [stdout]    |                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `one_point_crossover_3`, `partially_matched_crossover`, `uniform_average_crossover`, `uniform_crossover_3`, `uniform_crossover`
[INFO] [stdout]   --> src/main.rs:22:26
[INFO] [stdout]    |
[INFO] [stdout] 22 |                          one_point_crossover_3,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |                          uniform_average_crossover,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |                          uniform_crossover,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |                          uniform_crossover_3,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |                          partially_matched_crossover};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `delta_mutation`, `gaussian_mutation`, `random_int`, `swap_position`
[INFO] [stdout]   --> src/main.rs:28:25
[INFO] [stdout]    |
[INFO] [stdout] 28 |                         swap_position,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^
[INFO] [stdout] 29 |                         random_int,
[INFO] [stdout]    |                         ^^^^^^^^^^
[INFO] [stdout] 30 |                         delta_mutation,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 31 |                         gaussian_mutation};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/genetic/mutation.rs:9:30
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn mutate(&mut self, f: &Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>);
[INFO] [stdout]   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn mutate(&mut self, f: &dyn Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>);
[INFO] [stdout]   |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/genetic/mutation.rs:13:30
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn mutate(&mut self, f: &Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>) {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn mutate(&mut self, f: &dyn Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>) {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `One`
[INFO] [stdout]  --> src/genetic/population.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | use self::num::{Num, Zero, One};
[INFO] [stdout]   |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/genetic/population.rs:171:17
[INFO] [stdout]     |
[INFO] [stdout] 171 |             let mut individuals = &mut population.individuals;
[INFO] [stdout]     |                 ----^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/genetic/population.rs:172:17
[INFO] [stdout]     |
[INFO] [stdout] 172 |             let mut fitnesses = &mut population.fitnesses;
[INFO] [stdout]     |                 ----^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/fitness.rs:20:47
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn max_alternating_bits(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]    |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/fitness.rs:35:52
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn max_alternating_even_odd(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]    |                                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/fitness.rs:67:47
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn parps_fitness(binary_genome: &Vec<u8>, range: &Range<f32>) -> f32 {
[INFO] [stdout]    |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/fitness.rs:87:36
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn n_queens(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_steps_until_collision`
[INFO] [stdout]    --> src/genetic/fitness.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let mut num_steps_until_collision = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_steps_until_collision`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/genetic/fitness.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let mut num_steps_until_collision = 0;
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_repeated_steps`
[INFO] [stdout]    --> src/genetic/fitness.rs:232:10
[INFO] [stdout]     |
[INFO] [stdout] 232 |          num_repeated_steps,
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_repeated_steps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `factor_steps`
[INFO] [stdout]    --> src/genetic/fitness.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |     let factor_steps = num_steps as f32 / max_steps;
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_factor_steps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/genetic/fitness.rs:228:40
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub fn path_fitness(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]     |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/genetic/fitness.rs:258:39
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub fn deceptive_f3(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/genetic/fitness.rs:275:40
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn deceptive_f3s(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/genetic/fitness.rs:289:38
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn deceptive_4(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/helpers.rs:27:69
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn hamming_distance(genome_one: &Vec<u8>, genome_two: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]    |                                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/mutation.rs:22:57
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn bit_flip(genome: &mut Vec<u8>, probability: f32, range: &Range<u8>) {
[INFO] [stdout]    |                                                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]   --> src/genetic/mutation.rs:65:63
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn swap_position(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stdout]    |                                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_ordered` is never used
[INFO] [stdout]   --> src/genetic/population.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | / impl<T> Individual<T>
[INFO] [stdout] 29 | |     where T: Copy + PartialOrd
[INFO] [stdout]    | |______________________________- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |       pub fn new_ordered(size: usize) -> Individual<i32>
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `genome_length` is never read
[INFO] [stdout]   --> src/genetic/population.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Population<T>
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 69 |     genome_length: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_ordered`, `select_fit_individual_except`, and `roulette` are never used
[INFO] [stdout]    --> src/genetic/population.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 86  | / impl<T> Population<T>
[INFO] [stdout] 87  | |     where T: Copy + PartialOrd + Num
[INFO] [stdout]     | |____________________________________- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 138 |       pub fn new_ordered(size: usize,
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |       fn select_fit_individual_except(&self, dad_index: usize) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |       fn roulette(&self) -> usize {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max_alternating_bits` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn max_alternating_bits(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max_alternating_even_odd` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn max_alternating_even_odd(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `min_dejong` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn min_dejong(genome: &Vec<f32>, range: &Range<f32>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parps_function` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn parps_function(x: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parps_fitness` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn parps_fitness(binary_genome: &Vec<u8>, range: &Range<f32>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pattern_recognition` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn pattern_recognition(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `n_queens` is never used
[INFO] [stdout]   --> src/genetic/fitness.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn n_queens(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]    --> src/genetic/fitness.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | struct Point {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `walk` is never used
[INFO] [stdout]    --> src/genetic/fitness.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn walk(genome: &Vec<i32>, from: Point, to: Point) -> (usize, usize, usize, usize, usize) {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_fitness` is never used
[INFO] [stdout]    --> src/genetic/fitness.rs:228:8
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub fn path_fitness(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deceptive_f3` is never used
[INFO] [stdout]    --> src/genetic/fitness.rs:258:8
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub fn deceptive_f3(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deceptive_4` is never used
[INFO] [stdout]    --> src/genetic/fitness.rs:289:8
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn deceptive_4(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `binary_vector_to_decimal` is never used
[INFO] [stdout]   --> src/genetic/helpers.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn binary_vector_to_decimal(binary_vector: &Vec<u8>) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `euclidean_distance_int` is never used
[INFO] [stdout]   --> src/genetic/helpers.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn euclidean_distance_int(genome_one: &Vec<i32>, genome_two: &Vec<i32>, range: &Range<i32>) -> f32
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `euclidean_distance_float` is never used
[INFO] [stdout]   --> src/genetic/helpers.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn euclidean_distance_float(genome_one: &Vec<f32>, genome_two: &Vec<f32>, range: &Range<f32>) -> f32
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delta_mutation` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn delta_mutation(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_int` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn random_int(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_real` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn random_real(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `swap_position` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn swap_position(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gaussian` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn gaussian(mean: f32, deviation: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gaussian_mutation` is never used
[INFO] [stdout]   --> src/genetic/mutation.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn gaussian_mutation(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `one_point_crossover_3` is never used
[INFO] [stdout]   --> src/genetic/crossover.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn one_point_crossover_3<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `partially_matched_crossover` is never used
[INFO] [stdout]   --> src/genetic/crossover.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn partially_matched_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uniform_crossover` is never used
[INFO] [stdout]   --> src/genetic/crossover.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn uniform_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uniform_average_crossover` is never used
[INFO] [stdout]    --> src/genetic/crossover.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn uniform_average_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blend_crossover` is never used
[INFO] [stdout]    --> src/genetic/crossover.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn blend_crossover(dad_genome: &Vec<f32>, mom_genome: &Vec<f32>) -> (Vec<f32>, Vec<f32>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uniform_crossover_3` is never used
[INFO] [stdout]    --> src/genetic/crossover.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn uniform_crossover_3<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 62 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.24s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: rustc-serialize v0.3.23
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "b0171bb3d03637e37aa2a665b5310013d0f48be706ec29507c6d194d29d95df4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b0171bb3d03637e37aa2a665b5310013d0f48be706ec29507c6d194d29d95df4", kill_on_drop: false }`
[INFO] [stdout] b0171bb3d03637e37aa2a665b5310013d0f48be706ec29507c6d194d29d95df4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 76152871257a20c6635d600d260b0dd081f61b98955b099330da35d8aa3a0be6
[INFO] running `Command { std: "docker" "start" "-a" "76152871257a20c6635d600d260b0dd081f61b98955b099330da35d8aa3a0be6", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `gnuplot::LabelOption::TextColor`
[INFO] [stderr]  --> src/main.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use gnuplot::LabelOption::TextColor;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Zero`
[INFO] [stderr]  --> src/genetic/population.rs:8:22
[INFO] [stderr]   |
[INFO] [stderr] 8 | use self::num::{Num, Zero, One};
[INFO] [stderr]   |                      ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self::num::traits::pow`
[INFO] [stderr]  --> src/genetic/population.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use self::num::traits::pow;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Mul`, `Sub`
[INFO] [stderr]   --> src/genetic/population.rs:13:21
[INFO] [stderr]    |
[INFO] [stderr] 13 | use std::ops::{Add, Sub, Mul};
[INFO] [stderr]    |                     ^^^  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/genetic/fitness.rs:248:23
[INFO] [stderr]     |
[INFO] [stderr] 248 |     let mut penalty = (factor_bad_steps);
[INFO] [stderr]     |                       ^                ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 248 -     let mut penalty = (factor_bad_steps);
[INFO] [stderr] 248 +     let mut penalty = factor_bad_steps;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/genetic/fitness.rs:249:23
[INFO] [stderr]     |
[INFO] [stderr] 249 |     let mut fitness = (factor_close * 0.2 + factor_consecutive_steps);
[INFO] [stderr]     |                       ^                                             ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 249 -     let mut fitness = (factor_close * 0.2 + factor_consecutive_steps);
[INFO] [stderr] 249 +     let mut fitness = factor_close * 0.2 + factor_consecutive_steps;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]   --> src/genetic/mutation.rs:52:74
[INFO] [stderr]    |
[INFO] [stderr] 52 |         *gene = rand::thread_rng().gen_range(range.start, range.end + 1);;
[INFO] [stderr]    |                                                                          ^ help: remove this semicolon
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]   --> src/genetic/mutation.rs:61:76
[INFO] [stderr]    |
[INFO] [stderr] 61 |         *gene = rand::thread_rng().gen_range(range.start, range.end + 1.0);;
[INFO] [stderr]    |                                                                            ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `euclidean_distance_float`, `euclidean_distance_int`
[INFO] [stderr]   --> src/main.rs:10:42
[INFO] [stderr]    |
[INFO] [stderr] 10 | use genetic::helpers::{hamming_distance, euclidean_distance_int, euclidean_distance_float};
[INFO] [stderr]    |                                          ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `deceptive_4`, `deceptive_f3`, `max_alternating_bits`, `max_alternating_even_odd`, `min_dejong`, `n_queens`, `path_fitness`, `pattern_recognition`
[INFO] [stderr]   --> src/main.rs:12:24
[INFO] [stderr]    |
[INFO] [stderr] 12 | use genetic::fitness::{max_alternating_bits,
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 13 |                        max_alternating_even_odd,
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 14 |                        pattern_recognition,
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 15 |                        min_dejong,
[INFO] [stderr]    |                        ^^^^^^^^^^
[INFO] [stderr] 16 |                        n_queens,
[INFO] [stderr]    |                        ^^^^^^^^
[INFO] [stderr] 17 |                        path_fitness,
[INFO] [stderr]    |                        ^^^^^^^^^^^^
[INFO] [stderr] 18 |                        deceptive_f3,
[INFO] [stderr]    |                        ^^^^^^^^^^^^
[INFO] [stderr] 19 |                        deceptive_f3s,
[INFO] [stderr] 20 |                        deceptive_4};
[INFO] [stderr]    |                        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `one_point_crossover_3`, `partially_matched_crossover`, `uniform_average_crossover`, `uniform_crossover_3`, `uniform_crossover`
[INFO] [stderr]   --> src/main.rs:22:26
[INFO] [stderr]    |
[INFO] [stderr] 22 |                          one_point_crossover_3,
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 23 |                          uniform_average_crossover,
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 24 |                          uniform_crossover,
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 25 |                          uniform_crossover_3,
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 26 |                          partially_matched_crossover};
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `delta_mutation`, `gaussian_mutation`, `random_int`, `swap_position`
[INFO] [stderr]   --> src/main.rs:28:25
[INFO] [stderr]    |
[INFO] [stderr] 28 |                         swap_position,
[INFO] [stderr]    |                         ^^^^^^^^^^^^^
[INFO] [stderr] 29 |                         random_int,
[INFO] [stderr]    |                         ^^^^^^^^^^
[INFO] [stderr] 30 |                         delta_mutation,
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^
[INFO] [stderr] 31 |                         gaussian_mutation};
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]  --> src/genetic/mutation.rs:9:30
[INFO] [stderr]   |
[INFO] [stderr] 9 |     fn mutate(&mut self, f: &Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>);
[INFO] [stderr]   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]   = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]   |
[INFO] [stderr] 9 |     fn mutate(&mut self, f: &dyn Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>);
[INFO] [stderr]   |                              +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/genetic/mutation.rs:13:30
[INFO] [stderr]    |
[INFO] [stderr] 13 |     fn mutate(&mut self, f: &Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>) {
[INFO] [stderr]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 13 |     fn mutate(&mut self, f: &dyn Fn(&mut Vec<T>, f32, &Range<T>), probability: f32, range: &Range<T>) {
[INFO] [stderr]    |                              +++
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `One`
[INFO] [stderr]  --> src/genetic/population.rs:8:28
[INFO] [stderr]   |
[INFO] [stderr] 8 | use self::num::{Num, Zero, One};
[INFO] [stderr]   |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/genetic/population.rs:171:17
[INFO] [stderr]     |
[INFO] [stderr] 171 |             let mut individuals = &mut population.individuals;
[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/genetic/population.rs:172:17
[INFO] [stderr]     |
[INFO] [stderr] 172 |             let mut fitnesses = &mut population.fitnesses;
[INFO] [stderr]     |                 ----^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]   --> src/genetic/fitness.rs:20:47
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub fn max_alternating_bits(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]    |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]   --> src/genetic/fitness.rs:35:52
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub fn max_alternating_even_odd(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stderr]    |                                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]   --> src/genetic/fitness.rs:67:47
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub fn parps_fitness(binary_genome: &Vec<u8>, range: &Range<f32>) -> f32 {
[INFO] [stderr]    |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]   --> src/genetic/fitness.rs:87:36
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub fn n_queens(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stderr]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num_steps_until_collision`
[INFO] [stderr]    --> src/genetic/fitness.rs:151:13
[INFO] [stderr]     |
[INFO] [stderr] 151 |     let mut num_steps_until_collision = 0;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_steps_until_collision`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/genetic/fitness.rs:151:9
[INFO] [stderr]     |
[INFO] [stderr] 151 |     let mut num_steps_until_collision = 0;
[INFO] [stderr]     |         ----^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num_repeated_steps`
[INFO] [stderr]    --> src/genetic/fitness.rs:232:10
[INFO] [stderr]     |
[INFO] [stderr] 232 |          num_repeated_steps,
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_repeated_steps`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `factor_steps`
[INFO] [stderr]    --> src/genetic/fitness.rs:241:9
[INFO] [stderr]     |
[INFO] [stderr] 241 |     let factor_steps = num_steps as f32 / max_steps;
[INFO] [stderr]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_factor_steps`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]    --> src/genetic/fitness.rs:228:40
[INFO] [stderr]     |
[INFO] [stderr] 228 | pub fn path_fitness(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stderr]     |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]    --> src/genetic/fitness.rs:258:39
[INFO] [stderr]     |
[INFO] [stderr] 258 | pub fn deceptive_f3(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]    --> src/genetic/fitness.rs:275:40
[INFO] [stderr]     |
[INFO] [stderr] 275 | pub fn deceptive_f3s(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]     |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]    --> src/genetic/fitness.rs:289:38
[INFO] [stderr]     |
[INFO] [stderr] 289 | pub fn deceptive_4(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]   --> src/genetic/helpers.rs:27:69
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub fn hamming_distance(genome_one: &Vec<u8>, genome_two: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]    |                                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]   --> src/genetic/mutation.rs:22:57
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub fn bit_flip(genome: &mut Vec<u8>, probability: f32, range: &Range<u8>) {
[INFO] [stderr]    |                                                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `range`
[INFO] [stderr]   --> src/genetic/mutation.rs:65:63
[INFO] [stderr]    |
[INFO] [stderr] 65 | pub fn swap_position(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stderr]    |                                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new_ordered` is never used
[INFO] [stderr]   --> src/genetic/population.rs:45:12
[INFO] [stderr]    |
[INFO] [stderr] 28 | / impl<T> Individual<T>
[INFO] [stderr] 29 | |     where T: Copy + PartialOrd
[INFO] [stderr]    | |______________________________- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 45 |       pub fn new_ordered(size: usize) -> Individual<i32>
[INFO] [stderr]    |              ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `genome_length` is never read
[INFO] [stderr]   --> src/genetic/population.rs:69:5
[INFO] [stderr]    |
[INFO] [stderr] 60 | pub struct Population<T>
[INFO] [stderr]    |            ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 69 |     genome_length: usize,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new_ordered`, `select_fit_individual_except`, and `roulette` are never used
[INFO] [stderr]    --> src/genetic/population.rs:138:12
[INFO] [stderr]     |
[INFO] [stderr] 86  | / impl<T> Population<T>
[INFO] [stderr] 87  | |     where T: Copy + PartialOrd + Num
[INFO] [stderr]     | |____________________________________- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 138 |       pub fn new_ordered(size: usize,
[INFO] [stderr]     |              ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 373 |       fn select_fit_individual_except(&self, dad_index: usize) -> usize {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 452 |       fn roulette(&self) -> usize {
[INFO] [stderr]     |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `max_alternating_bits` is never used
[INFO] [stderr]   --> src/genetic/fitness.rs:20:8
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub fn max_alternating_bits(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `max_alternating_even_odd` is never used
[INFO] [stderr]   --> src/genetic/fitness.rs:35:8
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub fn max_alternating_even_odd(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `min_dejong` is never used
[INFO] [stderr]   --> src/genetic/fitness.rs:50:8
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub fn min_dejong(genome: &Vec<f32>, range: &Range<f32>) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parps_function` is never used
[INFO] [stderr]   --> src/genetic/fitness.rs:63:4
[INFO] [stderr]    |
[INFO] [stderr] 63 | fn parps_function(x: f32) -> f32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parps_fitness` is never used
[INFO] [stderr]   --> src/genetic/fitness.rs:67:8
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub fn parps_fitness(binary_genome: &Vec<u8>, range: &Range<f32>) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pattern_recognition` is never used
[INFO] [stderr]   --> src/genetic/fitness.rs:75:8
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub fn pattern_recognition(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `n_queens` is never used
[INFO] [stderr]   --> src/genetic/fitness.rs:87:8
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub fn n_queens(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Point` is never constructed
[INFO] [stderr]    --> src/genetic/fitness.rs:108:8
[INFO] [stderr]     |
[INFO] [stderr] 108 | struct Point {
[INFO] [stderr]     |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `walk` is never used
[INFO] [stderr]    --> src/genetic/fitness.rs:113:4
[INFO] [stderr]     |
[INFO] [stderr] 113 | fn walk(genome: &Vec<i32>, from: Point, to: Point) -> (usize, usize, usize, usize, usize) {
[INFO] [stderr]     |    ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `path_fitness` is never used
[INFO] [stderr]    --> src/genetic/fitness.rs:228:8
[INFO] [stderr]     |
[INFO] [stderr] 228 | pub fn path_fitness(genome: &Vec<i32>, range: &Range<i32>) -> f32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `deceptive_f3` is never used
[INFO] [stderr]    --> src/genetic/fitness.rs:258:8
[INFO] [stderr]     |
[INFO] [stderr] 258 | pub fn deceptive_f3(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `deceptive_4` is never used
[INFO] [stderr]    --> src/genetic/fitness.rs:289:8
[INFO] [stderr]     |
[INFO] [stderr] 289 | pub fn deceptive_4(genome: &Vec<u8>, range: &Range<u8>) -> f32 {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `binary_vector_to_decimal` is never used
[INFO] [stderr]   --> src/genetic/helpers.rs:16:8
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub fn binary_vector_to_decimal(binary_vector: &Vec<u8>) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `euclidean_distance_int` is never used
[INFO] [stderr]   --> src/genetic/helpers.rs:38:8
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub fn euclidean_distance_int(genome_one: &Vec<i32>, genome_two: &Vec<i32>, range: &Range<i32>) -> f32
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `euclidean_distance_float` is never used
[INFO] [stderr]   --> src/genetic/helpers.rs:49:8
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub fn euclidean_distance_float(genome_one: &Vec<f32>, genome_two: &Vec<f32>, range: &Range<f32>) -> f32
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `delta_mutation` is never used
[INFO] [stderr]   --> src/genetic/mutation.rs:32:8
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub fn delta_mutation(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `random_int` is never used
[INFO] [stderr]   --> src/genetic/mutation.rs:46:8
[INFO] [stderr]    |
[INFO] [stderr] 46 | pub fn random_int(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `random_real` is never used
[INFO] [stderr]   --> src/genetic/mutation.rs:56:8
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub fn random_real(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `swap_position` is never used
[INFO] [stderr]   --> src/genetic/mutation.rs:65:8
[INFO] [stderr]    |
[INFO] [stderr] 65 | pub fn swap_position(genome: &mut Vec<i32>, probability: f32, range: &Range<i32>) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `gaussian` is never used
[INFO] [stderr]   --> src/genetic/mutation.rs:79:4
[INFO] [stderr]    |
[INFO] [stderr] 79 | fn gaussian(mean: f32, deviation: f32) -> f32 {
[INFO] [stderr]    |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `gaussian_mutation` is never used
[INFO] [stderr]   --> src/genetic/mutation.rs:95:8
[INFO] [stderr]    |
[INFO] [stderr] 95 | pub fn gaussian_mutation(genome: &mut Vec<f32>, probability: f32, range: &Range<f32>) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `one_point_crossover_3` is never used
[INFO] [stderr]   --> src/genetic/crossover.rs:30:8
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub fn one_point_crossover_3<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `partially_matched_crossover` is never used
[INFO] [stderr]   --> src/genetic/crossover.rs:47:8
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub fn partially_matched_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `uniform_crossover` is never used
[INFO] [stderr]   --> src/genetic/crossover.rs:98:8
[INFO] [stderr]    |
[INFO] [stderr] 98 | pub fn uniform_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `uniform_average_crossover` is never used
[INFO] [stderr]    --> src/genetic/crossover.rs:117:8
[INFO] [stderr]     |
[INFO] [stderr] 117 | pub fn uniform_average_crossover<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `blend_crossover` is never used
[INFO] [stderr]    --> src/genetic/crossover.rs:139:8
[INFO] [stderr]     |
[INFO] [stderr] 139 | pub fn blend_crossover(dad_genome: &Vec<f32>, mom_genome: &Vec<f32>) -> (Vec<f32>, Vec<f32>) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `uniform_crossover_3` is never used
[INFO] [stderr]    --> src/genetic/crossover.rs:169:8
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn uniform_crossover_3<T>(dad_genome: &Vec<T>, mom_genome: &Vec<T>) -> (Vec<T>, Vec<T>)
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `genetic-thing` (bin "genetic-thing" test) generated 62 warnings (run `cargo fix --bin "genetic-thing" --tests` to apply 29 suggestions)
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.01s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: rustc-serialize v0.3.23
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/genetic_thing-1b20424cadfc4473)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "76152871257a20c6635d600d260b0dd081f61b98955b099330da35d8aa3a0be6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "76152871257a20c6635d600d260b0dd081f61b98955b099330da35d8aa3a0be6", kill_on_drop: false }`
[INFO] [stdout] 76152871257a20c6635d600d260b0dd081f61b98955b099330da35d8aa3a0be6
[INFO] testing khskarl/genetic-thing against beta-2023-12-22 for beta-1.76-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkhskarl%2Fgenetic-thing" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/khskarl/genetic-thing on toolchain beta-2023-12-22
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2023-12-22" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/khskarl/genetic-thing
[INFO] finished tweaking git repo https://github.com/khskarl/genetic-thing
[INFO] tweaked toml for git repo https://github.com/khskarl/genetic-thing written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/khskarl/genetic-thing already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2023-12-22" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-12-22" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 94ee2f97de714e3fd900dd4edf87d598ab6ee3ae1a105b66a0afb3e7fca01605
[INFO] running `Command { std: "docker" "start" "-a" "94ee2f97de714e3fd900dd4edf87d598ab6ee3ae1a105b66a0afb3e7fca01605", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "94ee2f97de714e3fd900dd4edf87d598ab6ee3ae1a105b66a0afb3e7fca01605", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "94ee2f97de714e3fd900dd4edf87d598ab6ee3ae1a105b66a0afb3e7fca01605", kill_on_drop: false }`
[INFO] [stdout] 94ee2f97de714e3fd900dd4edf87d598ab6ee3ae1a105b66a0afb3e7fca01605
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-12-22" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] abeab9d5ad0f6d8ccb0504b7733c58937571c5a7c000d723fee9802c0df991ca
[INFO] running `Command { std: "docker" "start" "-a" "abeab9d5ad0f6d8ccb0504b7733c58937571c5a7c000d723fee9802c0df991ca", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.1.37
[INFO] [stderr]    Compiling rustc-serialize v0.3.23
[INFO] [stderr]    Compiling libc v0.2.21
[INFO] [stderr]    Compiling gnuplot v0.0.22
[INFO] [stderr]    Compiling rand v0.3.15
[INFO] [stdout] error[E0310]: the parameter type `T` may not live long enough
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/rustc-serialize-0.3.23/src/serialize.rs:1155:5
[INFO] [stdout]      |
[INFO] [stdout] 1155 |     fn decode<D: Decoder>(d: &mut D) -> Result<Cow<'static, T>, D::Error> {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |     |
[INFO] [stdout]      |     the parameter type `T` must be valid for the static lifetime...
[INFO] [stdout]      |     ...so that the type `T` will meet its required lifetime bounds...
[INFO] [stdout]      |
[INFO] [stdout] note: ...that is required by this bound
[INFO] [stdout]     --> /rustc/0e09125c6c3c2fd70d7de961bcf0e51575235fad/library/alloc/src/borrow.rs:180:30
[INFO] [stdout] help: consider adding an explicit lifetime bound
[INFO] [stdout]      |
[INFO] [stdout] 1151 | impl<'a, T: ?Sized + 'static> Decodable for Cow<'a, T>
[INFO] [stdout]      |                    +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling num-integer v0.1.34
[INFO] [stderr]    Compiling num-iter v0.1.33
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0310`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rustc-serialize` (lib) due to 2 previous errors
[INFO] running `Command { std: "docker" "inspect" "abeab9d5ad0f6d8ccb0504b7733c58937571c5a7c000d723fee9802c0df991ca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "abeab9d5ad0f6d8ccb0504b7733c58937571c5a7c000d723fee9802c0df991ca", kill_on_drop: false }`
[INFO] [stdout] abeab9d5ad0f6d8ccb0504b7733c58937571c5a7c000d723fee9802c0df991ca
