[INFO] cloning repository https://github.com/Veanir/imo-7
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Veanir/imo-7" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVeanir%2Fimo-7", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVeanir%2Fimo-7'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] bce23af361d142a0cef4e4659f40cd2147f98ac5
[INFO] checking Veanir/imo-7/bce23af361d142a0cef4e4659f40cd2147f98ac5 against master#0028f344ce9f64766259577c998a1959ca1f6a0b for pr-153041
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVeanir%2Fimo-7" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Veanir/imo-7
[INFO] finished tweaking git repo https://github.com/Veanir/imo-7
[INFO] tweaked toml for git repo https://github.com/Veanir/imo-7 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Veanir/imo-7 on toolchain 0028f344ce9f64766259577c998a1959ca1f6a0b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0028f344ce9f64766259577c998a1959ca1f6a0b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Veanir/imo-7 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" "+0028f344ce9f64766259577c998a1959ca1f6a0b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+0028f344ce9f64766259577c998a1959ca1f6a0b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 85070dca1b82129d00c401626e8b2be3bd85585878b4bbd17bf218c288f4a87c
[INFO] running `Command { std: "docker" "start" "-a" "85070dca1b82129d00c401626e8b2be3bd85585878b4bbd17bf218c288f4a87c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "85070dca1b82129d00c401626e8b2be3bd85585878b4bbd17bf218c288f4a87c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85070dca1b82129d00c401626e8b2be3bd85585878b4bbd17bf218c288f4a87c", kill_on_drop: false }`
[INFO] [stdout] 85070dca1b82129d00c401626e8b2be3bd85585878b4bbd17bf218c288f4a87c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+0028f344ce9f64766259577c998a1959ca1f6a0b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1937ccb4e20b924003fc6c54487aeab59be6f58165fdb778273ab5b15f605c29
[INFO] running `Command { std: "docker" "start" "-a" "1937ccb4e20b924003fc6c54487aeab59be6f58165fdb778273ab5b15f605c29", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.171
[INFO] [stderr]    Compiling semver v1.0.26
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling proc-macro2 v1.0.94
[INFO] [stderr]     Checking once_cell v1.21.1
[INFO] [stderr]    Compiling zerocopy v0.8.23
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]     Checking libloading v0.8.6
[INFO] [stderr]    Compiling cc v1.2.16
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling yeslogic-fontconfig-sys v6.0.0
[INFO] [stderr]    Compiling portable-atomic v1.11.0
[INFO] [stderr]     Checking weezl v0.1.8
[INFO] [stderr]     Checking jpeg-decoder v0.3.1
[INFO] [stderr]    Compiling font-kit v0.14.2
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]     Checking miniz_oxide v0.8.5
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking bytemuck v1.22.0
[INFO] [stderr]     Checking walkdir v2.5.0
[INFO] [stderr]     Checking gif v0.12.0
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]     Checking float-ord v0.3.2
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking ttf-parser v0.20.0
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]     Checking flate2 v1.1.0
[INFO] [stderr]    Compiling pathfinder_simd v0.5.4
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]    Compiling freetype-sys v0.20.1
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking pathfinder_geometry v0.5.1
[INFO] [stderr]     Checking chrono v0.4.40
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.0
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking plotters-bitmap v0.3.7
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]     Checking IMO v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:163:36
[INFO] [stdout]     |
[INFO] [stdout] 163 |             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout]     |                                    ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 163 -             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout] 163 +             let progress_percent = iterations_done * 100 / total_iterations.max(1) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryHeap`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::{BinaryHeap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:559:24
[INFO] [stdout]     |
[INFO] [stdout] 559 |                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 559 -                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout] 559 +                     if i >= *pos1 && i <= *pos3  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/algorithms/msls.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle`
[INFO] [stdout]  --> src/algorithms/perturbation.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NeighborhoodType` and `SearchVariant`
[INFO] [stdout]  --> src/algorithms/hae.rs:3:59
[INFO] [stdout]   |
[INFO] [stdout] 3 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                           ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/algorithms/hae.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/algorithms/avns.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout]    |                 ^                                                                                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 99 -                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout] 99 +                 neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt ,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchVariant`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:4:77
[INFO] [stdout]   |
[INFO] [stdout] 4 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/algorithm.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CycleId`
[INFO] [stdout]  --> src/moves/inter_route.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::moves::types::{CycleId, EvaluatedMove, Move};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:163:36
[INFO] [stdout]     |
[INFO] [stdout] 163 |             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout]     |                                    ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 163 -             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout] 163 +             let progress_percent = iterations_done * 100 / total_iterations.max(1) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/constructive/weighted_regret_cycle.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/ils.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/lns.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::thread_rng;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/random_walk.rs:130:23
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/hae.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/hae.rs:73:23
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/avns.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/avns.rs:47:23
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_3opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_or_opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 |     vertices.shuffle(&mut thread_rng());
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryHeap`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::{BinaryHeap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:559:24
[INFO] [stdout]     |
[INFO] [stdout] 559 |                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 559 -                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout] 559 +                     if i >= *pos1 && i <= *pos3  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/algorithms/msls.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle`
[INFO] [stdout]  --> src/algorithms/perturbation.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NeighborhoodType` and `SearchVariant`
[INFO] [stdout]  --> src/algorithms/hae.rs:3:59
[INFO] [stdout]   |
[INFO] [stdout] 3 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                           ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/algorithms/hae.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/algorithms/avns.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout]    |                 ^                                                                                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 99 -                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout] 99 +                 neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt ,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchVariant`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:4:77
[INFO] [stdout]   |
[INFO] [stdout] 4 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/algorithm.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CycleId`
[INFO] [stdout]  --> src/moves/inter_route.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::moves::types::{CycleId, EvaluatedMove, Move};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/constructive/weighted_regret_cycle.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/ils.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/lns.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::thread_rng;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/random_walk.rs:130:23
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/hae.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/hae.rs:73:23
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/avns.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/avns.rs:47:23
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_3opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_or_opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 |     vertices.shuffle(&mut thread_rng());
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:129:26
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let start1 = rng.gen_range(0..n);
[INFO] [stdout]     |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:101:20
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:102:20
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:119:20
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:122:20
[INFO] [stdout]     |
[INFO] [stdout] 122 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:149:24
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:129:26
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let start1 = rng.gen_range(0..n);
[INFO] [stdout]     |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let move_type_choice = rng.gen_range(0..=2);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:46:65
[INFO] [stdout]    |
[INFO] [stdout] 46 |                 let cycle_choice = if n1 >= 2 && (n2 < 2 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:61:32
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:62:36
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:64:32
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:76:65
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 let cycle_choice = if n1 >= 3 && (n2 < 3 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:92:32
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:95:32
[INFO] [stdout]    |
[INFO] [stdout] 95 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:117:34
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let mut p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:120:30
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/hae.rs:206:16
[INFO] [stdout]     |
[INFO] [stdout] 206 |         if rng.gen_bool(0.5) { p1.clone() } else { p2.clone() }
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:211:24
[INFO] [stdout]     |
[INFO] [stdout] 211 |             return rng.gen_range(0..self.neighborhoods.len());
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:215:32
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let random_value = rng.gen_range(0.0..1.0) * total_score;
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:133:28
[INFO] [stdout]     |
[INFO] [stdout] 133 |                     if rng.gen_bool(0.1) {
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 |                         rng.gen_range(0..2)
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:194:39
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:236:32
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:240:27
[INFO] [stdout]     |
[INFO] [stdout] 240 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:275:31
[INFO] [stdout]     |
[INFO] [stdout] 275 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:101:20
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:102:20
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:119:20
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:122:20
[INFO] [stdout]     |
[INFO] [stdout] 122 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:149:24
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:208:39
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:251:32
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:255:27
[INFO] [stdout]     |
[INFO] [stdout] 255 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:293:31
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let move_type_choice = rng.gen_range(0..=2);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:146:28
[INFO] [stdout]     |
[INFO] [stdout] 146 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:46:65
[INFO] [stdout]    |
[INFO] [stdout] 46 |                 let cycle_choice = if n1 >= 2 && (n2 < 2 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:61:32
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:62:36
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:64:32
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:76:65
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 let cycle_choice = if n1 >= 3 && (n2 < 3 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:92:32
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:95:32
[INFO] [stdout]    |
[INFO] [stdout] 95 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:206:39
[INFO] [stdout]     |
[INFO] [stdout] 206 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:252:32
[INFO] [stdout]     |
[INFO] [stdout] 252 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:256:27
[INFO] [stdout]     |
[INFO] [stdout] 256 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:117:34
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let mut p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:292:31
[INFO] [stdout]     |
[INFO] [stdout] 292 |                 } else if rng.gen_bool(0.15) { // Slightly increased chance to destroy common edges
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:120:30
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/hae.rs:206:16
[INFO] [stdout]     |
[INFO] [stdout] 206 |         if rng.gen_bool(0.5) { p1.clone() } else { p2.clone() }
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:211:24
[INFO] [stdout]     |
[INFO] [stdout] 211 |             return rng.gen_range(0..self.neighborhoods.len());
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:215:32
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let random_value = rng.gen_range(0.0..1.0) * total_score;
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:133:28
[INFO] [stdout]     |
[INFO] [stdout] 133 |                     if rng.gen_bool(0.1) {
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 |                         rng.gen_range(0..2)
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:194:39
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:236:32
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:240:27
[INFO] [stdout]     |
[INFO] [stdout] 240 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:275:31
[INFO] [stdout]     |
[INFO] [stdout] 275 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:208:39
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:251:32
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:255:27
[INFO] [stdout]     |
[INFO] [stdout] 255 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:293:31
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:146:28
[INFO] [stdout]     |
[INFO] [stdout] 146 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:206:39
[INFO] [stdout]     |
[INFO] [stdout] 206 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_available_count`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |         let initial_available_count = available.len();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_available_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_solution`
[INFO] [stdout]   --> src/algorithms/ils.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let initial_solution = generate_random_solution(instance);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_solution`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:252:32
[INFO] [stdout]     |
[INFO] [stdout] 252 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:256:27
[INFO] [stdout]     |
[INFO] [stdout] 256 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:292:31
[INFO] [stdout]     |
[INFO] [stdout] 292 |                 } else if rng.gen_bool(0.15) { // Slightly increased chance to destroy common edges
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_evaluated_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:132:66
[INFO] [stdout]     |
[INFO] [stdout] 132 |             let mut best_evaluated_move: Option<EvaluatedMove> = None;
[INFO] [stdout]     |                                                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_improving_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:133:44
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let mut found_improving_move = false;
[INFO] [stdout]     |                                            ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         k: usize,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:532:13
[INFO] [stdout]     |
[INFO] [stdout] 532 |         let mut add_node_and_neighbors = |node: usize, affected: &mut HashSet<usize>| {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos2`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:555:42
[INFO] [stdout]     |
[INFO] [stdout] 555 |             Move::IntraRoute3Opt { pos1, pos2, pos3, cycle, .. } => {
[INFO] [stdout]     |                                          ^^^^ help: try ignoring the field: `pos2: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/msls.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/hae.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut child = p1.clone();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:200:13
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let mut current_nodes = child.cycle1.iter().chain(child.cycle2.iter()).cloned().collect::<std::collections::HashSet<usize>>();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/avns.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `improved` is assigned to, but never used
[INFO] [stdout]   --> src/algorithms/avns.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let mut improved = false;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_improved` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `improved` is never read
[INFO] [stdout]    --> src/algorithms/avns.rs:119:17
[INFO] [stdout]     |
[INFO] [stdout] 119 |                 improved = true;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_available_count`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |         let initial_available_count = available.len();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_available_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_solution`
[INFO] [stdout]   --> src/algorithms/ils.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let initial_solution = generate_random_solution(instance);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_solution`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_evaluated_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:132:66
[INFO] [stdout]     |
[INFO] [stdout] 132 |             let mut best_evaluated_move: Option<EvaluatedMove> = None;
[INFO] [stdout]     |                                                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_improving_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:133:44
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let mut found_improving_move = false;
[INFO] [stdout]     |                                            ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         k: usize,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:532:13
[INFO] [stdout]     |
[INFO] [stdout] 532 |         let mut add_node_and_neighbors = |node: usize, affected: &mut HashSet<usize>| {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos2`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:555:42
[INFO] [stdout]     |
[INFO] [stdout] 555 |             Move::IntraRoute3Opt { pos1, pos2, pos3, cycle, .. } => {
[INFO] [stdout]     |                                          ^^^^ help: try ignoring the field: `pos2: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/msls.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/hae.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut child = p1.clone();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:200:13
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let mut current_nodes = child.cycle1.iter().chain(child.cycle2.iter()).cloned().collect::<std::collections::HashSet<usize>>();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/avns.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `improved` is assigned to, but never used
[INFO] [stdout]   --> src/algorithms/avns.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let mut improved = false;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_improved` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `improved` is never read
[INFO] [stdout]    --> src/algorithms/avns.rs:119:17
[INFO] [stdout]     |
[INFO] [stdout] 119 |                 improved = true;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:109:29
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         let mut start = pos_b;
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |                         let mut end = pos_c;
[INFO] [stdout]     |                             ----^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/moves/types.rs:93:17
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 a,
[INFO] [stdout]    |                 ^ help: try ignoring the field: `a: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:109:29
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         let mut start = pos_b;
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |                         let mut end = pos_c;
[INFO] [stdout]     |                             ----^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/moves/types.rs:93:17
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 a,
[INFO] [stdout]    |                 ^ help: try ignoring the field: `a: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `IMO` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `imo`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]  --> src/bin/launch_visualization.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::process::Command;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/algorithm.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:163:36
[INFO] [stdout]     |
[INFO] [stdout] 163 |             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout]     |                                    ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 163 -             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout] 163 +             let progress_percent = iterations_done * 100 / total_iterations.max(1) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryHeap`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::{BinaryHeap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:559:24
[INFO] [stdout]     |
[INFO] [stdout] 559 |                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 559 -                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout] 559 +                     if i >= *pos1 && i <= *pos3  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/algorithms/msls.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle`
[INFO] [stdout]  --> src/algorithms/perturbation.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NeighborhoodType` and `SearchVariant`
[INFO] [stdout]  --> src/algorithms/hae.rs:3:59
[INFO] [stdout]   |
[INFO] [stdout] 3 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                           ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/algorithms/hae.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/algorithms/avns.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout]    |                 ^                                                                                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 99 -                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout] 99 +                 neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt ,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchVariant`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:4:77
[INFO] [stdout]   |
[INFO] [stdout] 4 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CycleId`
[INFO] [stdout]  --> src/moves/inter_route.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::moves::types::{CycleId, EvaluatedMove, Move};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EvaluatedMove` and `Move`
[INFO] [stdout]  --> src/moves/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use types::{EvaluatedMove, Move};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/algorithm.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:163:36
[INFO] [stdout]     |
[INFO] [stdout] 163 |             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout]     |                                    ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 163 -             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout] 163 +             let progress_percent = iterations_done * 100 / total_iterations.max(1) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryHeap`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::{BinaryHeap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:559:24
[INFO] [stdout]     |
[INFO] [stdout] 559 |                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 559 -                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout] 559 +                     if i >= *pos1 && i <= *pos3  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/algorithms/msls.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle`
[INFO] [stdout]  --> src/algorithms/perturbation.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NeighborhoodType` and `SearchVariant`
[INFO] [stdout]  --> src/algorithms/hae.rs:3:59
[INFO] [stdout]   |
[INFO] [stdout] 3 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                           ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/algorithms/hae.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/algorithms/avns.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout]    |                 ^                                                                                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 99 -                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout] 99 +                 neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt ,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchVariant`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:4:77
[INFO] [stdout]   |
[INFO] [stdout] 4 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CycleId`
[INFO] [stdout]  --> src/moves/inter_route.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::moves::types::{CycleId, EvaluatedMove, Move};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EvaluatedMove` and `Move`
[INFO] [stdout]  --> src/moves/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use types::{EvaluatedMove, Move};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/constructive/weighted_regret_cycle.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/ils.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/lns.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::thread_rng;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/random_walk.rs:130:23
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/hae.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/hae.rs:73:23
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/avns.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/avns.rs:47:23
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_3opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_or_opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 |     vertices.shuffle(&mut thread_rng());
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PYTHON_INTERPRETER` is never used
[INFO] [stdout]   --> src/bin/launch_visualization.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const PYTHON_INTERPRETER: &str = "python"; // This will be removed
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PYTHON_SCRIPT_NAME` is never used
[INFO] [stdout]   --> src/bin/launch_visualization.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const PYTHON_SCRIPT_NAME: &str = "visualize_als_choices.py"; // This will be removed
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/constructive/weighted_regret_cycle.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/ils.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/lns.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::thread_rng;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]  --> src/bin/launch_visualization.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::process::Command;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/random_walk.rs:130:23
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/hae.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/hae.rs:73:23
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/avns.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/avns.rs:47:23
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_3opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_or_opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 |     vertices.shuffle(&mut thread_rng());
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:129:26
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let start1 = rng.gen_range(0..n);
[INFO] [stdout]     |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/algorithm.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:163:36
[INFO] [stdout]     |
[INFO] [stdout] 163 |             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout]     |                                    ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 163 -             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout] 163 +             let progress_percent = iterations_done * 100 / total_iterations.max(1) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryHeap`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::{BinaryHeap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:559:24
[INFO] [stdout]     |
[INFO] [stdout] 559 |                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 559 -                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout] 559 +                     if i >= *pos1 && i <= *pos3  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/algorithms/msls.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle`
[INFO] [stdout]  --> src/algorithms/perturbation.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NeighborhoodType` and `SearchVariant`
[INFO] [stdout]  --> src/algorithms/hae.rs:3:59
[INFO] [stdout]   |
[INFO] [stdout] 3 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                           ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/algorithms/hae.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/algorithms/avns.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout]    |                 ^                                                                                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 99 -                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout] 99 +                 neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt ,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchVariant`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:4:77
[INFO] [stdout]   |
[INFO] [stdout] 4 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CycleId`
[INFO] [stdout]  --> src/moves/inter_route.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::moves::types::{CycleId, EvaluatedMove, Move};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EvaluatedMove` and `Move`
[INFO] [stdout]  --> src/moves/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use types::{EvaluatedMove, Move};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HeuristicAlgorithm`
[INFO] [stdout]   --> src/lab7_test.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:101:20
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:102:20
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:119:20
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:122:20
[INFO] [stdout]     |
[INFO] [stdout] 122 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:149:24
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:129:26
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let start1 = rng.gen_range(0..n);
[INFO] [stdout]     |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PYTHON_INTERPRETER` is never used
[INFO] [stdout]   --> src/bin/launch_visualization.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const PYTHON_INTERPRETER: &str = "python"; // This will be removed
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PYTHON_SCRIPT_NAME` is never used
[INFO] [stdout]   --> src/bin/launch_visualization.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const PYTHON_SCRIPT_NAME: &str = "visualize_als_choices.py"; // This will be removed
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let move_type_choice = rng.gen_range(0..=2);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:46:65
[INFO] [stdout]    |
[INFO] [stdout] 46 |                 let cycle_choice = if n1 >= 2 && (n2 < 2 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:61:32
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:62:36
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:64:32
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:76:65
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 let cycle_choice = if n1 >= 3 && (n2 < 3 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:92:32
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:95:32
[INFO] [stdout]    |
[INFO] [stdout] 95 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:117:34
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let mut p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:120:30
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/hae.rs:206:16
[INFO] [stdout]     |
[INFO] [stdout] 206 |         if rng.gen_bool(0.5) { p1.clone() } else { p2.clone() }
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:211:24
[INFO] [stdout]     |
[INFO] [stdout] 211 |             return rng.gen_range(0..self.neighborhoods.len());
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:215:32
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let random_value = rng.gen_range(0.0..1.0) * total_score;
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:133:28
[INFO] [stdout]     |
[INFO] [stdout] 133 |                     if rng.gen_bool(0.1) {
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 |                         rng.gen_range(0..2)
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:194:39
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:236:32
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:240:27
[INFO] [stdout]     |
[INFO] [stdout] 240 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:275:31
[INFO] [stdout]     |
[INFO] [stdout] 275 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:101:20
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:102:20
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:208:39
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:119:20
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:122:20
[INFO] [stdout]     |
[INFO] [stdout] 122 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:149:24
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:251:32
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:255:27
[INFO] [stdout]     |
[INFO] [stdout] 255 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:293:31
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let move_type_choice = rng.gen_range(0..=2);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/algorithm.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:163:36
[INFO] [stdout]     |
[INFO] [stdout] 163 |             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout]     |                                    ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 163 -             let progress_percent = (iterations_done * 100 / total_iterations.max(1));
[INFO] [stdout] 163 +             let progress_percent = iterations_done * 100 / total_iterations.max(1) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:146:28
[INFO] [stdout]     |
[INFO] [stdout] 146 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryHeap`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:15:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::{BinaryHeap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:46:65
[INFO] [stdout]    |
[INFO] [stdout] 46 |                 let cycle_choice = if n1 >= 2 && (n2 < 2 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:559:24
[INFO] [stdout]     |
[INFO] [stdout] 559 |                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 559 -                     if (i >= *pos1 && i <= *pos3) {
[INFO] [stdout] 559 +                     if i >= *pos1 && i <= *pos3  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/algorithms/msls.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle`
[INFO] [stdout]  --> src/algorithms/perturbation.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::algorithms::constructive::weighted_regret_cycle::WeightedRegretCycle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:61:32
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NeighborhoodType` and `SearchVariant`
[INFO] [stdout]  --> src/algorithms/hae.rs:3:59
[INFO] [stdout]   |
[INFO] [stdout] 3 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                           ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/algorithms/hae.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/algorithms/avns.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout]    |                 ^                                                                                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 99 -                 (neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt),
[INFO] [stdout] 99 +                 neighborhood == NeighborhoodType::OrOpt || neighborhood == NeighborhoodType::ThreeOpt ,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:62:36
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchVariant`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:4:77
[INFO] [stdout]   |
[INFO] [stdout] 4 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CycleId`
[INFO] [stdout]  --> src/moves/inter_route.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::moves::types::{CycleId, EvaluatedMove, Move};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:64:32
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:76:65
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 let cycle_choice = if n1 >= 3 && (n2 < 3 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EvaluatedMove` and `Move`
[INFO] [stdout]  --> src/moves/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use types::{EvaluatedMove, Move};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HeuristicAlgorithm`
[INFO] [stdout]   --> src/lab7_test.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     HeuristicAlgorithm, InitialSolutionType, LocalSearch, NeighborhoodType, SearchVariant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:92:32
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:95:32
[INFO] [stdout]    |
[INFO] [stdout] 95 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:206:39
[INFO] [stdout]     |
[INFO] [stdout] 206 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:252:32
[INFO] [stdout]     |
[INFO] [stdout] 252 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:256:27
[INFO] [stdout]     |
[INFO] [stdout] 256 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:292:31
[INFO] [stdout]     |
[INFO] [stdout] 292 |                 } else if rng.gen_bool(0.15) { // Slightly increased chance to destroy common edges
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:117:34
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let mut p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:120:30
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/hae.rs:206:16
[INFO] [stdout]     |
[INFO] [stdout] 206 |         if rng.gen_bool(0.5) { p1.clone() } else { p2.clone() }
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:211:24
[INFO] [stdout]     |
[INFO] [stdout] 211 |             return rng.gen_range(0..self.neighborhoods.len());
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:215:32
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let random_value = rng.gen_range(0.0..1.0) * total_score;
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:133:28
[INFO] [stdout]     |
[INFO] [stdout] 133 |                     if rng.gen_bool(0.1) {
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 |                         rng.gen_range(0..2)
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/constructive/weighted_regret_cycle.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/constructive/weighted_regret_cycle.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/ils.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/ils.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/ils.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/lns.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/lns.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/lns.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::thread_rng;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/random_walk.rs:130:23
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/hae.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/hae.rs:73:23
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/avns.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/avns.rs:47:23
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_3opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_or_opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:194:39
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 |     vertices.shuffle(&mut thread_rng());
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:236:32
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::thread_rng;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:240:27
[INFO] [stdout]     |
[INFO] [stdout] 240 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:275:31
[INFO] [stdout]     |
[INFO] [stdout] 275 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/random_walk.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]    --> src/algorithms/random_walk.rs:130:23
[INFO] [stdout]     |
[INFO] [stdout] 130 |         let mut rng = thread_rng();
[INFO] [stdout]     |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/hae.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{Rng, thread_rng};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/hae.rs:73:23
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/avns.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/avns.rs:47:23
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:69:23
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_3opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/algorithms/enhanced_hae_or_opt.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut rng = thread_rng();
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::thread_rng;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: renamed to `rng`
[INFO] [stdout]  --> src/utils.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 |     vertices.shuffle(&mut thread_rng());
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:208:39
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:251:32
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:255:27
[INFO] [stdout]     |
[INFO] [stdout] 255 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:293:31
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:146:28
[INFO] [stdout]     |
[INFO] [stdout] 146 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:206:39
[INFO] [stdout]     |
[INFO] [stdout] 206 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:252:32
[INFO] [stdout]     |
[INFO] [stdout] 252 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:256:27
[INFO] [stdout]     |
[INFO] [stdout] 256 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:292:31
[INFO] [stdout]     |
[INFO] [stdout] 292 |                 } else if rng.gen_bool(0.15) { // Slightly increased chance to destroy common edges
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_available_count`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |         let initial_available_count = available.len();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_available_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_solution`
[INFO] [stdout]   --> src/algorithms/ils.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let initial_solution = generate_random_solution(instance);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_solution`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:129:26
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let start1 = rng.gen_range(0..n);
[INFO] [stdout]     |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:129:26
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let start1 = rng.gen_range(0..n);
[INFO] [stdout]     |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_evaluated_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:132:66
[INFO] [stdout]     |
[INFO] [stdout] 132 |             let mut best_evaluated_move: Option<EvaluatedMove> = None;
[INFO] [stdout]     |                                                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_improving_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:133:44
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let mut found_improving_move = false;
[INFO] [stdout]     |                                            ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         k: usize,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:532:13
[INFO] [stdout]     |
[INFO] [stdout] 532 |         let mut add_node_and_neighbors = |node: usize, affected: &mut HashSet<usize>| {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos2`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:555:42
[INFO] [stdout]     |
[INFO] [stdout] 555 |             Move::IntraRoute3Opt { pos1, pos2, pos3, cycle, .. } => {
[INFO] [stdout]     |                                          ^^^^ help: try ignoring the field: `pos2: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/msls.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:101:20
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:102:20
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:119:20
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:122:20
[INFO] [stdout]     |
[INFO] [stdout] 122 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:149:24
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/hae.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:101:20
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut child = p1.clone();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:102:20
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:200:13
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let mut current_nodes = child.cycle1.iter().chain(child.cycle2.iter()).cloned().collect::<std::collections::HashSet<usize>>();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:119:20
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:122:20
[INFO] [stdout]     |
[INFO] [stdout] 122 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let pos1 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:149:24
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/perturbation.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |         pos2 = rng.gen_range(0..n);
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let move_type_choice = rng.gen_range(0..=2);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:46:65
[INFO] [stdout]    |
[INFO] [stdout] 46 |                 let cycle_choice = if n1 >= 2 && (n2 < 2 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:61:32
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:62:36
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:64:32
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:76:65
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 let cycle_choice = if n1 >= 3 && (n2 < 3 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:92:32
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:95:32
[INFO] [stdout]    |
[INFO] [stdout] 95 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/avns.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `improved` is assigned to, but never used
[INFO] [stdout]   --> src/algorithms/avns.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let mut improved = false;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_improved` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `improved` is never read
[INFO] [stdout]    --> src/algorithms/avns.rs:119:17
[INFO] [stdout]     |
[INFO] [stdout] 119 |                 improved = true;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let move_type_choice = rng.gen_range(0..=2);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 let pos1 = rng.gen_range(0..n1);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let pos2 = rng.gen_range(0..n2);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:46:65
[INFO] [stdout]    |
[INFO] [stdout] 46 |                 let cycle_choice = if n1 >= 2 && (n2 < 2 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:61:32
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:62:36
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:64:32
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:76:65
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 let cycle_choice = if n1 >= 3 && (n2 < 3 || rng.gen_bool(0.5)) {
[INFO] [stdout]    |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:92:32
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 let pos1 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]   --> src/algorithms/random_walk.rs:95:32
[INFO] [stdout]    |
[INFO] [stdout] 95 |                     pos2 = rng.gen_range(0..n);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:117:34
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let mut p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:120:30
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:117:34
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let mut p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/hae.rs:120:30
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 p2_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/hae.rs:206:16
[INFO] [stdout]     |
[INFO] [stdout] 206 |         if rng.gen_bool(0.5) { p1.clone() } else { p2.clone() }
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/hae.rs:206:16
[INFO] [stdout]     |
[INFO] [stdout] 206 |         if rng.gen_bool(0.5) { p1.clone() } else { p2.clone() }
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_available_count`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |         let initial_available_count = available.len();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_available_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_solution`
[INFO] [stdout]   --> src/algorithms/ils.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let initial_solution = generate_random_solution(instance);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_solution`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:211:24
[INFO] [stdout]     |
[INFO] [stdout] 211 |             return rng.gen_range(0..self.neighborhoods.len());
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:215:32
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let random_value = rng.gen_range(0.0..1.0) * total_score;
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:211:24
[INFO] [stdout]     |
[INFO] [stdout] 211 |             return rng.gen_range(0..self.neighborhoods.len());
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/avns.rs:215:32
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let random_value = rng.gen_range(0.0..1.0) * total_score;
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:133:28
[INFO] [stdout]     |
[INFO] [stdout] 133 |                     if rng.gen_bool(0.1) {
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 |                         rng.gen_range(0..2)
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:133:28
[INFO] [stdout]     |
[INFO] [stdout] 133 |                     if rng.gen_bool(0.1) {
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 |                         rng.gen_range(0..2)
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:194:39
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:194:39
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_evaluated_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:132:66
[INFO] [stdout]     |
[INFO] [stdout] 132 |             let mut best_evaluated_move: Option<EvaluatedMove> = None;
[INFO] [stdout]     |                                                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_improving_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:133:44
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let mut found_improving_move = false;
[INFO] [stdout]     |                                            ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:236:32
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:240:27
[INFO] [stdout]     |
[INFO] [stdout] 240 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:236:32
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:275:31
[INFO] [stdout]     |
[INFO] [stdout] 275 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:240:27
[INFO] [stdout]     |
[INFO] [stdout] 240 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:275:31
[INFO] [stdout]     |
[INFO] [stdout] 275 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         k: usize,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:532:13
[INFO] [stdout]     |
[INFO] [stdout] 532 |         let mut add_node_and_neighbors = |node: usize, affected: &mut HashSet<usize>| {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos2`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:555:42
[INFO] [stdout]     |
[INFO] [stdout] 555 |             Move::IntraRoute3Opt { pos1, pos2, pos3, cycle, .. } => {
[INFO] [stdout]     |                                          ^^^^ help: try ignoring the field: `pos2: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:208:39
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/msls.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:208:39
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:251:32
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:255:27
[INFO] [stdout]     |
[INFO] [stdout] 255 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:251:32
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:255:27
[INFO] [stdout]     |
[INFO] [stdout] 255 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:293:31
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:293:31
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 } else if rng.gen_bool(0.1) {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:146:28
[INFO] [stdout]     |
[INFO] [stdout] 146 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:146:28
[INFO] [stdout]     |
[INFO] [stdout] 146 |                     if rng.gen_bool(prob_0) { 0 } else { 1 }
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:206:39
[INFO] [stdout]     |
[INFO] [stdout] 206 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:206:39
[INFO] [stdout]     |
[INFO] [stdout] 206 |                 let replace_idx = rng.gen_range(population.len() / 2..population.len());
[INFO] [stdout]     |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:252:32
[INFO] [stdout]     |
[INFO] [stdout] 252 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:256:27
[INFO] [stdout]     |
[INFO] [stdout] 256 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:292:31
[INFO] [stdout]     |
[INFO] [stdout] 292 |                 } else if rng.gen_bool(0.15) { // Slightly increased chance to destroy common edges
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:252:32
[INFO] [stdout]     |
[INFO] [stdout] 252 |         let mut best_idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:256:27
[INFO] [stdout]     |
[INFO] [stdout] 256 |             let idx = rng.gen_range(0..population.len());
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_bool`: Renamed to `random_bool`
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:292:31
[INFO] [stdout]     |
[INFO] [stdout] 292 |                 } else if rng.gen_bool(0.15) { // Slightly increased chance to destroy common edges
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:109:29
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         let mut start = pos_b;
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |                         let mut end = pos_c;
[INFO] [stdout]     |                             ----^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/moves/types.rs:93:17
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 a,
[INFO] [stdout]    |                 ^ help: try ignoring the field: `a: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/hae.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut child = p1.clone();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:200:13
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let mut current_nodes = child.cycle1.iter().chain(child.cycle2.iter()).cloned().collect::<std::collections::HashSet<usize>>();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/avns.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `improved` is assigned to, but never used
[INFO] [stdout]   --> src/algorithms/avns.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let mut improved = false;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_improved` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `improved` is never read
[INFO] [stdout]    --> src/algorithms/avns.rs:119:17
[INFO] [stdout]     |
[INFO] [stdout] 119 |                 improved = true;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut file = OpenOptions::new().write(true).create(true).truncate(true).open(results_file_path)?;
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]   --> src/main.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut file = OpenOptions::new().write(true).create(true).truncate(true).open(results_file_path)?;
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]  --> src/algorithm.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait TspAlgorithm {
[INFO] [stdout]   |           ------------ method in this trait
[INFO] [stdout] 8 |     fn name(&self) -> &str;
[INFO] [stdout]   |        ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RunResult` is never constructed
[INFO] [stdout]   --> src/algorithm.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct RunResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExperimentStats` is never constructed
[INFO] [stdout]   --> src/algorithm.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct ExperimentStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_experiment` is never used
[INFO] [stdout]   --> src/algorithm.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn run_experiment(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TimedSolveFn` is never used
[INFO] [stdout]   --> src/algorithm.rs:51:10
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub type TimedSolveFn<'a, T> =
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_experiment` is never used
[INFO] [stdout]   --> src/algorithm.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn run_timed_experiment<T: Send + Sync + ?Sized>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_experiment_base` is never used
[INFO] [stdout]   --> src/algorithm.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn run_experiment_base<F>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_stats_row` is never used
[INFO] [stdout]    --> src/algorithm.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub fn format_stats_row(stats: &ExperimentStats) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ils` is never constructed
[INFO] [stdout]   --> src/algorithms/ils.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Ils<P: Perturbation + Send + Sync> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `name`, and `solve_timed` are never used
[INFO] [stdout]   --> src/algorithms/ils.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<P: Perturbation + Send + Sync> Ils<P> {
[INFO] [stdout]    | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(base_local_search: LocalSearch, perturbation: P) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn solve_timed(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lns` is never constructed
[INFO] [stdout]   --> src/algorithms/lns.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Lns<P: Perturbation + Send + Sync> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `name`, and `solve_timed` are never used
[INFO] [stdout]   --> src/algorithms/lns.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl<P: Perturbation + Send + Sync> Lns<P> {
[INFO] [stdout]    | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 22 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn solve_timed(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Steepest` and `Greedy` are never constructed
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum SearchVariant {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 19 |     Steepest,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 20 |     Greedy,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchVariant` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `VertexExchange` is never constructed
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum NeighborhoodType {
[INFO] [stdout]    |          ---------------- variant in this enum
[INFO] [stdout] 27 |     VertexExchange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NeighborhoodType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Msls` is never constructed
[INFO] [stdout]  --> src/algorithms/msls.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Msls {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/algorithms/msls.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Msls {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 14 |     pub fn new(base_local_search: LocalSearch, num_starts: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]  --> src/algorithms/perturbation.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait Perturbation {
[INFO] [stdout]   |           ------------ method in this trait
[INFO] [stdout] 9 |     fn name(&self) -> String;
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LargePerturbation` is never constructed
[INFO] [stdout]    --> src/algorithms/perturbation.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct LargePerturbation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl LargePerturbation {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 175 |     pub fn new(destroy_fraction: f64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `destroy` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn destroy<R: Rng + ?Sized>(
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repair` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:232:15
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub(crate) fn repair(solution: &mut Solution, instance: &TsplibInstance, destroyed_nodes: HashSet<usize>) {
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RandomWalk` is never constructed
[INFO] [stdout]   --> src/algorithms/random_walk.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct RandomWalk {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `generate_random_move` are never used
[INFO] [stdout]   --> src/algorithms/random_walk.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl RandomWalk {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(max_iterations: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     fn generate_random_move(&self, solution: &Solution, rng: &mut impl Rng) -> Option<Move> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/algorithms/hae.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Hae {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Avns` is never constructed
[INFO] [stdout]   --> src/algorithms/avns.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Avns {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, and `select_neighborhood_adaptive` are never used
[INFO] [stdout]    --> src/algorithms/avns.rs:21:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Avns {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn select_neighborhood_adaptive<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHae` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHae {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHae {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHae3Opt` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHae3Opt {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHae3Opt {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHaeOrOpt` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHaeOrOpt {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHaeOrOpt {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `best_solution` and `best_cost` are never read
[INFO] [stdout]   --> src/global_convexity.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ConvexityAnalysisResult {
[INFO] [stdout]    |            ----------------------- fields in this struct
[INFO] [stdout] 29 |     pub instance_name: String,
[INFO] [stdout] 30 |     pub best_solution: Solution,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub best_cost: i32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConvexityAnalysisResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/tsplib.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct TsplibInstance {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 31 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TsplibInstance` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]    --> src/tsplib.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | impl Solution {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn is_valid(&self, instance: &TsplibInstance) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POINT_SIZE` is never used
[INFO] [stdout]  --> src/visualization.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const POINT_SIZE: u32 = 3;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_WIDTH` is never used
[INFO] [stdout]  --> src/visualization.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const LINE_WIDTH: u32 = 2;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `plot_solution` is never used
[INFO] [stdout]  --> src/visualization.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn plot_solution(
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_available_count`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |         let initial_available_count = available.len();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_available_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_solution`
[INFO] [stdout]   --> src/algorithms/ils.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let initial_solution = generate_random_solution(instance);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_solution`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_available_count`
[INFO] [stdout]    --> src/algorithms/constructive/weighted_regret_cycle.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |         let initial_available_count = available.len();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_available_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_solution`
[INFO] [stdout]   --> src/algorithms/ils.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let initial_solution = generate_random_solution(instance);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_solution`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_evaluated_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:132:66
[INFO] [stdout]     |
[INFO] [stdout] 132 |             let mut best_evaluated_move: Option<EvaluatedMove> = None;
[INFO] [stdout]     |                                                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_improving_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:133:44
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let mut found_improving_move = false;
[INFO] [stdout]     |                                            ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         k: usize,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_evaluated_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:132:66
[INFO] [stdout]     |
[INFO] [stdout] 132 |             let mut best_evaluated_move: Option<EvaluatedMove> = None;
[INFO] [stdout]     |                                                                  ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_improving_move` is never read
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:133:44
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let mut found_improving_move = false;
[INFO] [stdout]     |                                            ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:532:13
[INFO] [stdout]     |
[INFO] [stdout] 532 |         let mut add_node_and_neighbors = |node: usize, affected: &mut HashSet<usize>| {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos2`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:555:42
[INFO] [stdout]     |
[INFO] [stdout] 555 |             Move::IntraRoute3Opt { pos1, pos2, pos3, cycle, .. } => {
[INFO] [stdout]     |                                          ^^^^ help: try ignoring the field: `pos2: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         k: usize,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:532:13
[INFO] [stdout]     |
[INFO] [stdout] 532 |         let mut add_node_and_neighbors = |node: usize, affected: &mut HashSet<usize>| {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos2`
[INFO] [stdout]    --> src/algorithms/local_search/base.rs:555:42
[INFO] [stdout]     |
[INFO] [stdout] 555 |             Move::IntraRoute3Opt { pos1, pos2, pos3, cycle, .. } => {
[INFO] [stdout]     |                                          ^^^^ help: try ignoring the field: `pos2: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/msls.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/msls.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/hae.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut child = p1.clone();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:200:13
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let mut current_nodes = child.cycle1.iter().chain(child.cycle2.iter()).cloned().collect::<std::collections::HashSet<usize>>();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/avns.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `improved` is assigned to, but never used
[INFO] [stdout]   --> src/algorithms/avns.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let mut improved = false;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_improved` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `improved` is never read
[INFO] [stdout]    --> src/algorithms/avns.rs:119:17
[INFO] [stdout]     |
[INFO] [stdout] 119 |                 improved = true;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/hae.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |             let mut p1_idx = rng.gen_range(0..self.pop_size);
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut child = p1.clone();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithms/hae.rs:200:13
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let mut current_nodes = child.cycle1.iter().chain(child.cycle2.iter()).cloned().collect::<std::collections::HashSet<usize>>();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/avns.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `improved` is assigned to, but never used
[INFO] [stdout]   --> src/algorithms/avns.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let mut improved = false;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_improved` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `improved` is never read
[INFO] [stdout]    --> src/algorithms/avns.rs:119:17
[INFO] [stdout]     |
[INFO] [stdout] 119 |                 improved = true;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:109:29
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         let mut start = pos_b;
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |                         let mut end = pos_c;
[INFO] [stdout]     |                             ----^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/moves/types.rs:93:17
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 a,
[INFO] [stdout]    |                 ^ help: try ignoring the field: `a: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         mut progress_callback: ProgressCallback,
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut file = OpenOptions::new().write(true).create(true).truncate(true).open(results_file_path)?;
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]   --> src/main.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut file = OpenOptions::new().write(true).create(true).truncate(true).open(results_file_path)?;
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]  --> src/algorithm.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait TspAlgorithm {
[INFO] [stdout]   |           ------------ method in this trait
[INFO] [stdout] 8 |     fn name(&self) -> &str;
[INFO] [stdout]   |        ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RunResult` is never constructed
[INFO] [stdout]   --> src/algorithm.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct RunResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExperimentStats` is never constructed
[INFO] [stdout]   --> src/algorithm.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct ExperimentStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_experiment` is never used
[INFO] [stdout]   --> src/algorithm.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn run_experiment(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TimedSolveFn` is never used
[INFO] [stdout]   --> src/algorithm.rs:51:10
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub type TimedSolveFn<'a, T> =
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_experiment` is never used
[INFO] [stdout]   --> src/algorithm.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn run_timed_experiment<T: Send + Sync + ?Sized>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_experiment_base` is never used
[INFO] [stdout]   --> src/algorithm.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn run_experiment_base<F>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_stats_row` is never used
[INFO] [stdout]    --> src/algorithm.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub fn format_stats_row(stats: &ExperimentStats) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ils` is never constructed
[INFO] [stdout]   --> src/algorithms/ils.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Ils<P: Perturbation + Send + Sync> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `name`, and `solve_timed` are never used
[INFO] [stdout]   --> src/algorithms/ils.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<P: Perturbation + Send + Sync> Ils<P> {
[INFO] [stdout]    | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(base_local_search: LocalSearch, perturbation: P) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn solve_timed(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lns` is never constructed
[INFO] [stdout]   --> src/algorithms/lns.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Lns<P: Perturbation + Send + Sync> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `name`, and `solve_timed` are never used
[INFO] [stdout]   --> src/algorithms/lns.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl<P: Perturbation + Send + Sync> Lns<P> {
[INFO] [stdout]    | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 22 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn solve_timed(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Steepest` and `Greedy` are never constructed
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum SearchVariant {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 19 |     Steepest,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 20 |     Greedy,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchVariant` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `VertexExchange` is never constructed
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum NeighborhoodType {
[INFO] [stdout]    |          ---------------- variant in this enum
[INFO] [stdout] 27 |     VertexExchange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NeighborhoodType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Msls` is never constructed
[INFO] [stdout]  --> src/algorithms/msls.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Msls {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/algorithms/msls.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Msls {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 14 |     pub fn new(base_local_search: LocalSearch, num_starts: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]  --> src/algorithms/perturbation.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait Perturbation {
[INFO] [stdout]   |           ------------ method in this trait
[INFO] [stdout] 9 |     fn name(&self) -> String;
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LargePerturbation` is never constructed
[INFO] [stdout]    --> src/algorithms/perturbation.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct LargePerturbation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl LargePerturbation {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 175 |     pub fn new(destroy_fraction: f64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `destroy` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn destroy<R: Rng + ?Sized>(
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repair` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:232:15
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub(crate) fn repair(solution: &mut Solution, instance: &TsplibInstance, destroyed_nodes: HashSet<usize>) {
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RandomWalk` is never constructed
[INFO] [stdout]   --> src/algorithms/random_walk.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct RandomWalk {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `generate_random_move` are never used
[INFO] [stdout]   --> src/algorithms/random_walk.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl RandomWalk {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(max_iterations: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     fn generate_random_move(&self, solution: &Solution, rng: &mut impl Rng) -> Option<Move> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/algorithms/hae.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Hae {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Avns` is never constructed
[INFO] [stdout]   --> src/algorithms/avns.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Avns {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, and `select_neighborhood_adaptive` are never used
[INFO] [stdout]    --> src/algorithms/avns.rs:21:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Avns {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn select_neighborhood_adaptive<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHae` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHae {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHae {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHae3Opt` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHae3Opt {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHae3Opt {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHaeOrOpt` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae_or_opt.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHaeOrOpt {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae_or_opt.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHaeOrOpt {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `best_solution` and `best_cost` are never read
[INFO] [stdout]   --> src/global_convexity.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ConvexityAnalysisResult {
[INFO] [stdout]    |            ----------------------- fields in this struct
[INFO] [stdout] 29 |     pub instance_name: String,
[INFO] [stdout] 30 |     pub best_solution: Solution,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub best_cost: i32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConvexityAnalysisResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/tsplib.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct TsplibInstance {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 31 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TsplibInstance` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]    --> src/tsplib.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | impl Solution {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn is_valid(&self, instance: &TsplibInstance) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POINT_SIZE` is never used
[INFO] [stdout]  --> src/visualization.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const POINT_SIZE: u32 = 3;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_WIDTH` is never used
[INFO] [stdout]  --> src/visualization.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const LINE_WIDTH: u32 = 2;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `plot_solution` is never used
[INFO] [stdout]  --> src/visualization.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn plot_solution(
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:109:29
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         let mut start = pos_b;
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |                         let mut end = pos_c;
[INFO] [stdout]     |                             ----^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/moves/types.rs:93:17
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 a,
[INFO] [stdout]    |                 ^ help: try ignoring the field: `a: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:109:29
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         let mut start = pos_b;
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/moves/types.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |                         let mut end = pos_c;
[INFO] [stdout]     |                             ----^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/moves/types.rs:93:17
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 a,
[INFO] [stdout]    |                 ^ help: try ignoring the field: `a: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RunResult` is never constructed
[INFO] [stdout]   --> src/algorithm.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct RunResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExperimentStats` is never constructed
[INFO] [stdout]   --> src/algorithm.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct ExperimentStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_experiment` is never used
[INFO] [stdout]   --> src/algorithm.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn run_experiment(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TimedSolveFn` is never used
[INFO] [stdout]   --> src/algorithm.rs:51:10
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub type TimedSolveFn<'a, T> =
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_experiment` is never used
[INFO] [stdout]   --> src/algorithm.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn run_timed_experiment<T: Send + Sync + ?Sized>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_experiment_base` is never used
[INFO] [stdout]   --> src/algorithm.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn run_experiment_base<F>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_stats_row` is never used
[INFO] [stdout]    --> src/algorithm.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub fn format_stats_row(stats: &ExperimentStats) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ils` is never constructed
[INFO] [stdout]   --> src/algorithms/ils.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Ils<P: Perturbation + Send + Sync> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `name`, and `solve_timed` are never used
[INFO] [stdout]   --> src/algorithms/ils.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<P: Perturbation + Send + Sync> Ils<P> {
[INFO] [stdout]    | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(base_local_search: LocalSearch, perturbation: P) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn solve_timed(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lns` is never constructed
[INFO] [stdout]   --> src/algorithms/lns.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Lns<P: Perturbation + Send + Sync> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `name`, and `solve_timed` are never used
[INFO] [stdout]   --> src/algorithms/lns.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl<P: Perturbation + Send + Sync> Lns<P> {
[INFO] [stdout]    | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 22 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn solve_timed(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Greedy` is never constructed
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum SearchVariant {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 19 |     Steepest,
[INFO] [stdout] 20 |     Greedy,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchVariant` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `VertexExchange` is never constructed
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum NeighborhoodType {
[INFO] [stdout]    |          ---------------- variant in this enum
[INFO] [stdout] 27 |     VertexExchange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NeighborhoodType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]  --> src/algorithms/perturbation.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait Perturbation {
[INFO] [stdout]   |           ------------ method in this trait
[INFO] [stdout] 9 |     fn name(&self) -> String;
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LargePerturbation` is never constructed
[INFO] [stdout]    --> src/algorithms/perturbation.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct LargePerturbation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl LargePerturbation {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 175 |     pub fn new(destroy_fraction: f64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `destroy` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn destroy<R: Rng + ?Sized>(
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RandomWalk` is never constructed
[INFO] [stdout]   --> src/algorithms/random_walk.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct RandomWalk {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `generate_random_move` are never used
[INFO] [stdout]   --> src/algorithms/random_walk.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl RandomWalk {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(max_iterations: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     fn generate_random_move(&self, solution: &Solution, rng: &mut impl Rng) -> Option<Move> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/algorithms/hae.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Hae {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Avns` is never constructed
[INFO] [stdout]   --> src/algorithms/avns.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Avns {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, and `select_neighborhood_adaptive` are never used
[INFO] [stdout]    --> src/algorithms/avns.rs:21:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Avns {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn select_neighborhood_adaptive<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHae` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHae {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHae {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHae3Opt` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHae3Opt {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHae3Opt {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimilarityMeasures` is never constructed
[INFO] [stdout]   --> src/global_convexity.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SimilarityMeasures {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvexityDataPoint` is never constructed
[INFO] [stdout]   --> src/global_convexity.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct ConvexityDataPoint {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvexityAnalysisResult` is never constructed
[INFO] [stdout]   --> src/global_convexity.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ConvexityAnalysisResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/global_convexity.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl SimilarityMeasures {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 40 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_similarity` is never used
[INFO] [stdout]   --> src/global_convexity.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn calculate_similarity(sol1: &Solution, sol2: &Solution, instance: &TsplibInstance) -> SimilarityMeasures {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_vertex_pairs_same_cycle` is never used
[INFO] [stdout]   --> src/global_convexity.rs:64:4
[INFO] [stdout]    |
[INFO] [stdout] 64 | fn count_vertex_pairs_same_cycle(sol1: &Solution, sol2: &Solution, instance: &TsplibInstance) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_common_edges` is never used
[INFO] [stdout]    --> src/global_convexity.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn count_common_edges(sol1: &Solution, sol2: &Solution) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_random_local_optima` is never used
[INFO] [stdout]    --> src/global_convexity.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn generate_random_local_optima(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_average_similarity` is never used
[INFO] [stdout]    --> src/global_convexity.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn calculate_average_similarity(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_correlation` is never used
[INFO] [stdout]    --> src/global_convexity.rs:190:4
[INFO] [stdout]     |
[INFO] [stdout] 190 | fn calculate_correlation(x_values: &[f64], y_values: &[f64]) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_global_convexity` is never used
[INFO] [stdout]    --> src/global_convexity.rs:213:8
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub fn analyze_global_convexity<T: TspAlgorithm>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `plot_convexity_analysis` is never used
[INFO] [stdout]    --> src/global_convexity.rs:319:8
[INFO] [stdout]     |
[INFO] [stdout] 319 | pub fn plot_convexity_analysis(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/tsplib.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct TsplibInstance {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 31 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TsplibInstance` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]    --> src/tsplib.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | impl Solution {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn is_valid(&self, instance: &TsplibInstance) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RunResult` is never constructed
[INFO] [stdout]   --> src/algorithm.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct RunResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExperimentStats` is never constructed
[INFO] [stdout]   --> src/algorithm.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct ExperimentStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_experiment` is never used
[INFO] [stdout]   --> src/algorithm.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn run_experiment(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TimedSolveFn` is never used
[INFO] [stdout]   --> src/algorithm.rs:51:10
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub type TimedSolveFn<'a, T> =
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_timed_experiment` is never used
[INFO] [stdout]   --> src/algorithm.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn run_timed_experiment<T: Send + Sync + ?Sized>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_experiment_base` is never used
[INFO] [stdout]   --> src/algorithm.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn run_experiment_base<F>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_stats_row` is never used
[INFO] [stdout]    --> src/algorithm.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub fn format_stats_row(stats: &ExperimentStats) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ils` is never constructed
[INFO] [stdout]   --> src/algorithms/ils.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Ils<P: Perturbation + Send + Sync> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `name`, and `solve_timed` are never used
[INFO] [stdout]   --> src/algorithms/ils.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<P: Perturbation + Send + Sync> Ils<P> {
[INFO] [stdout]    | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(base_local_search: LocalSearch, perturbation: P) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn solve_timed(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lns` is never constructed
[INFO] [stdout]   --> src/algorithms/lns.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Lns<P: Perturbation + Send + Sync> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `name`, and `solve_timed` are never used
[INFO] [stdout]   --> src/algorithms/lns.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl<P: Perturbation + Send + Sync> Lns<P> {
[INFO] [stdout]    | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 22 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn solve_timed(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Greedy` is never constructed
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum SearchVariant {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 19 |     Steepest,
[INFO] [stdout] 20 |     Greedy,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchVariant` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `VertexExchange` is never constructed
[INFO] [stdout]   --> src/algorithms/local_search/base.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum NeighborhoodType {
[INFO] [stdout]    |          ---------------- variant in this enum
[INFO] [stdout] 27 |     VertexExchange,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NeighborhoodType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]  --> src/algorithms/perturbation.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait Perturbation {
[INFO] [stdout]   |           ------------ method in this trait
[INFO] [stdout] 9 |     fn name(&self) -> String;
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LargePerturbation` is never constructed
[INFO] [stdout]    --> src/algorithms/perturbation.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct LargePerturbation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl LargePerturbation {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 175 |     pub fn new(destroy_fraction: f64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `destroy` is never used
[INFO] [stdout]    --> src/algorithms/perturbation.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn destroy<R: Rng + ?Sized>(
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RandomWalk` is never constructed
[INFO] [stdout]   --> src/algorithms/random_walk.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct RandomWalk {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `generate_random_move` are never used
[INFO] [stdout]   --> src/algorithms/random_walk.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl RandomWalk {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(max_iterations: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     fn generate_random_move(&self, solution: &Solution, rng: &mut impl Rng) -> Option<Move> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/algorithms/hae.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Hae {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Avns` is never constructed
[INFO] [stdout]   --> src/algorithms/avns.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Avns {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, and `select_neighborhood_adaptive` are never used
[INFO] [stdout]    --> src/algorithms/avns.rs:21:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Avns {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn select_neighborhood_adaptive<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHae` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHae {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHae {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnhancedHae3Opt` is never constructed
[INFO] [stdout]   --> src/algorithms/enhanced_hae_3opt.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct EnhancedHae3Opt {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `solve_timed`, `tournament_selection`, and `advanced_recombine` are never used
[INFO] [stdout]    --> src/algorithms/enhanced_hae_3opt.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl EnhancedHae3Opt {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn solve_timed(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn tournament_selection<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn advanced_recombine<R: Rng>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimilarityMeasures` is never constructed
[INFO] [stdout]   --> src/global_convexity.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SimilarityMeasures {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvexityDataPoint` is never constructed
[INFO] [stdout]   --> src/global_convexity.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct ConvexityDataPoint {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvexityAnalysisResult` is never constructed
[INFO] [stdout]   --> src/global_convexity.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ConvexityAnalysisResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/global_convexity.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl SimilarityMeasures {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 40 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_similarity` is never used
[INFO] [stdout]   --> src/global_convexity.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn calculate_similarity(sol1: &Solution, sol2: &Solution, instance: &TsplibInstance) -> SimilarityMeasures {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_vertex_pairs_same_cycle` is never used
[INFO] [stdout]   --> src/global_convexity.rs:64:4
[INFO] [stdout]    |
[INFO] [stdout] 64 | fn count_vertex_pairs_same_cycle(sol1: &Solution, sol2: &Solution, instance: &TsplibInstance) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_common_edges` is never used
[INFO] [stdout]    --> src/global_convexity.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn count_common_edges(sol1: &Solution, sol2: &Solution) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_random_local_optima` is never used
[INFO] [stdout]    --> src/global_convexity.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn generate_random_local_optima(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_average_similarity` is never used
[INFO] [stdout]    --> src/global_convexity.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn calculate_average_similarity(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_correlation` is never used
[INFO] [stdout]    --> src/global_convexity.rs:190:4
[INFO] [stdout]     |
[INFO] [stdout] 190 | fn calculate_correlation(x_values: &[f64], y_values: &[f64]) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_global_convexity` is never used
[INFO] [stdout]    --> src/global_convexity.rs:213:8
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub fn analyze_global_convexity<T: TspAlgorithm>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `plot_convexity_analysis` is never used
[INFO] [stdout]    --> src/global_convexity.rs:319:8
[INFO] [stdout]     |
[INFO] [stdout] 319 | pub fn plot_convexity_analysis(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/tsplib.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct TsplibInstance {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 31 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TsplibInstance` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]    --> src/tsplib.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | impl Solution {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn is_valid(&self, instance: &TsplibInstance) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.64s
[INFO] running `Command { std: "docker" "inspect" "1937ccb4e20b924003fc6c54487aeab59be6f58165fdb778273ab5b15f605c29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1937ccb4e20b924003fc6c54487aeab59be6f58165fdb778273ab5b15f605c29", kill_on_drop: false }`
[INFO] [stdout] 1937ccb4e20b924003fc6c54487aeab59be6f58165fdb778273ab5b15f605c29
