[INFO] cloning repository https://github.com/MaxOnGreeeeen/rust-ml-alghoritms
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/MaxOnGreeeeen/rust-ml-alghoritms" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaxOnGreeeeen%2Frust-ml-alghoritms", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaxOnGreeeeen%2Frust-ml-alghoritms'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ff086fc0c842cbe7666cffc5115343d1980ac38c
[INFO] checking MaxOnGreeeeen/rust-ml-alghoritms against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaxOnGreeeeen%2Frust-ml-alghoritms" "/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/MaxOnGreeeeen/rust-ml-alghoritms
[INFO] finished tweaking git repo https://github.com/MaxOnGreeeeen/rust-ml-alghoritms
[INFO] tweaked toml for git repo https://github.com/MaxOnGreeeeen/rust-ml-alghoritms written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/MaxOnGreeeeen/rust-ml-alghoritms on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/MaxOnGreeeeen/rust-ml-alghoritms already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded yeslogic-fontconfig-sys v3.2.0
[INFO] [stderr]   Downloaded const-cstr v0.3.0
[INFO] [stderr]   Downloaded proc-macro2 v1.0.68
[INFO] [stderr]   Downloaded font-kit v0.11.0
[INFO] [stderr]   Downloaded ttf-parser v0.17.1
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2b8b72ff1725160ab6ef0bed056a4ed3c279844f182959171a85fb387c876331
[INFO] running `Command { std: "docker" "start" "-a" "2b8b72ff1725160ab6ef0bed056a4ed3c279844f182959171a85fb387c876331", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2b8b72ff1725160ab6ef0bed056a4ed3c279844f182959171a85fb387c876331", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2b8b72ff1725160ab6ef0bed056a4ed3c279844f182959171a85fb387c876331", kill_on_drop: false }`
[INFO] [stdout] 2b8b72ff1725160ab6ef0bed056a4ed3c279844f182959171a85fb387c876331
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 018864a45fea63b0617caf42648b6082d2a3f66b3e5c7c81cbd72bbd6afd5a5a
[INFO] running `Command { std: "docker" "start" "-a" "018864a45fea63b0617caf42648b6082d2a3f66b3e5c7c81cbd72bbd6afd5a5a", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.149
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling semver v1.0.20
[INFO] [stderr]    Compiling num-bigint v0.4.4
[INFO] [stderr]    Compiling num-rational v0.4.1
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]    Compiling yeslogic-fontconfig-sys v3.2.0
[INFO] [stderr]     Checking miniz_oxide v0.7.1
[INFO] [stderr]     Checking fdeflate v0.3.0
[INFO] [stderr]     Checking libloading v0.8.1
[INFO] [stderr]    Compiling serde v1.0.193
[INFO] [stderr]     Checking const-cstr v0.3.0
[INFO] [stderr]     Checking jpeg-decoder v0.3.0
[INFO] [stderr]     Checking bytemuck v1.14.0
[INFO] [stderr]     Checking plotters-backend v0.3.5
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling font-kit v0.11.0
[INFO] [stderr]     Checking walkdir v2.4.0
[INFO] [stderr]     Checking gif v0.12.0
[INFO] [stderr]     Checking iana-time-zone v0.1.58
[INFO] [stderr]     Checking float-ord v0.2.0
[INFO] [stderr]     Checking num-complex v0.4.4
[INFO] [stderr]     Checking ttf-parser v0.17.1
[INFO] [stderr]     Checking flate2 v1.0.27
[INFO] [stderr]     Checking chrono v0.4.31
[INFO] [stderr]     Checking plotters-svg v0.3.5
[INFO] [stderr]    Compiling rustc_version v0.4.0
[INFO] [stderr]    Compiling cc v1.0.83
[INFO] [stderr]    Compiling pathfinder_simd v0.5.2
[INFO] [stderr]     Checking png v0.17.10
[INFO] [stderr]     Checking dirs-sys-next v0.1.2
[INFO] [stderr]     Checking getrandom v0.2.11
[INFO] [stderr]    Compiling cmake v0.1.50
[INFO] [stderr]     Checking dirs-next v2.0.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling freetype-sys v0.13.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking pathfinder_geometry v0.5.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking freetype v0.7.0
[INFO] [stderr]     Checking image v0.24.7
[INFO] [stderr]     Checking num v0.4.1
[INFO] [stderr]     Checking csv v1.3.0
[INFO] [stderr]     Checking plotters-bitmap v0.3.3
[INFO] [stderr]     Checking plotters v0.3.5
[INFO] [stderr]     Checking rust-ml-alghoritms v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/knn.rs:97:19
[INFO] [stdout]    |
[INFO] [stdout] 97 |         point.x = ((point.x - param_min_x) / (param_max_x - param_min_x));
[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] 97 -         point.x = ((point.x - param_min_x) / (param_max_x - param_min_x));
[INFO] [stdout] 97 +         point.x = (point.x - param_min_x) / (param_max_x - param_min_x) ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/knn.rs:98:19
[INFO] [stdout]    |
[INFO] [stdout] 98 |         point.y = ((point.y - param_min_y) / (param_max_y - param_min_y));
[INFO] [stdout]    |                   ^                                                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 98 -         point.y = ((point.y - param_min_y) / (param_max_y - param_min_y));
[INFO] [stdout] 98 +         point.y = (point.y - param_min_y) / (param_max_y - param_min_y) ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/decision_tree_cart.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::error::Error;
[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/decision_tree_cart.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{Rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/decision_tree_cart.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |         ;
[INFO] [stdout]    |         ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/knn.rs:97:19
[INFO] [stdout]    |
[INFO] [stdout] 97 |         point.x = ((point.x - param_min_x) / (param_max_x - param_min_x));
[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] 97 -         point.x = ((point.x - param_min_x) / (param_max_x - param_min_x));
[INFO] [stdout] 97 +         point.x = (point.x - param_min_x) / (param_max_x - param_min_x) ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/knn.rs:98:19
[INFO] [stdout]    |
[INFO] [stdout] 98 |         point.y = ((point.y - param_min_y) / (param_max_y - param_min_y));
[INFO] [stdout]    |                   ^                                                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 98 -         point.y = ((point.y - param_min_y) / (param_max_y - param_min_y));
[INFO] [stdout] 98 +         point.y = (point.y - param_min_y) / (param_max_y - param_min_y) ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/decision_tree_cart.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::error::Error;
[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/decision_tree_cart.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{Rng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/decision_tree_cart.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |         ;
[INFO] [stdout]    |         ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/k_means.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let mut iter_centroids_global_cache: Arc<Mutex<Vec<IterCentroid>>> = Arc::new(Mutex::new(vec![]));
[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 `end` is never read
[INFO] [stdout]    --> src/k_means.rs:311:23
[INFO] [stdout]     |
[INFO] [stdout] 311 |         let mut end = 0;
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/k_means.rs:349:46
[INFO] [stdout]     |
[INFO] [stdout] 349 |             range_local.iter_mut().for_each(|mut point| {
[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/k_means.rs:359:69
[INFO] [stdout]     |
[INFO] [stdout] 359 |             range_local.iter_mut().enumerate().for_each(|(point_id, mut point)| {
[INFO] [stdout]     |                                                                     ----^^^^^
[INFO] [stdout]     |                                                                     |
[INFO] [stdout]     |                                                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point_id`
[INFO] [stdout]    --> src/k_means.rs:359:59
[INFO] [stdout]     |
[INFO] [stdout] 359 |             range_local.iter_mut().enumerate().for_each(|(point_id, mut point)| {
[INFO] [stdout]     |                                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_point_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `end` is never read
[INFO] [stdout]   --> src/knn.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut end = 0;
[INFO] [stdout]    |                   ^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point_id`
[INFO] [stdout]   --> src/knn.rs:67:47
[INFO] [stdout]    |
[INFO] [stdout] 67 |     points.into_iter().enumerate().for_each(|(point_id, point)| {
[INFO] [stdout]    |                                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_point_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point_id`
[INFO] [stdout]   --> src/knn.rs:80:47
[INFO] [stdout]    |
[INFO] [stdout] 80 |     points.into_iter().enumerate().for_each(|(point_id, point)| {
[INFO] [stdout]    |                                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_point_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/decision_tree_cart.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut headers = binding.into_iter().collect::<Vec<_>>();
[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/decision_tree_cart.rs:291:17
[INFO] [stdout]     |
[INFO] [stdout] 291 |             let mut feature_target: i32;
[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/decision_tree_cart.rs:287:13
[INFO] [stdout]     |
[INFO] [stdout] 287 |         let mut features_targets = Self::get_target_features_classes(data, target);
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATASET_FILE_PATH` is never used
[INFO] [stdout]   --> src/k_means.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const DATASET_FILE_PATH: &str = "datasets/Cust_Segmentation.csv";
[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 `PLOT_OUTPUT_FILE_PATH` is never used
[INFO] [stdout]   --> src/k_means.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const PLOT_OUTPUT_FILE_PATH: &str = "target/kmeans.png";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLUSTERS` is never used
[INFO] [stdout]   --> src/k_means.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const CLUSTERS: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ITERATIONS` is never used
[INFO] [stdout]   --> src/k_means.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const MAX_ITERATIONS: i32 = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREADS_NUM` is never used
[INFO] [stdout]   --> src/k_means.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const THREADS_NUM: i32 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/k_means.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Point {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ArcMutex` is never used
[INFO] [stdout]   --> src/k_means.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub type ArcMutex<T> = Arc<Mutex<T>>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `IPointDistance` is never used
[INFO] [stdout]   --> src/k_means.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | trait IPointDistance {
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_default_coord` are never used
[INFO] [stdout]   --> src/k_means.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl Point {
[INFO] [stdout]    | ---------- associated functions in this implementation
[INFO] [stdout] 40 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     fn with_default_coord(id: i32, x: f32, y: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IterCentroid` is never constructed
[INFO] [stdout]   --> src/k_means.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct IterCentroid {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Range` is never constructed
[INFO] [stdout]   --> src/k_means.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct Range {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KMeans` is never constructed
[INFO] [stdout]   --> src/k_means.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct KMeans {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `IKMeans` is never used
[INFO] [stdout]   --> src/k_means.rs:94:11
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub trait IKMeans {
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/k_means.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl KMeans {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 105 |     fn new(clusters: usize, iterations: i32) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_k_means` is never used
[INFO] [stdout]    --> src/k_means.rs:390:8
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub fn benchmark_k_means(){
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATASET_FILE_PATH` is never used
[INFO] [stdout]  --> src/knn.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const DATASET_FILE_PATH: &str = "datasets/diabetes.csv";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLASSES` is never used
[INFO] [stdout]  --> src/knn.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const CLASSES: usize = 2;
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREADS` is never used
[INFO] [stdout]  --> src/knn.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const THREADS: usize = 4;
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/knn.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Point {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Arr` is never used
[INFO] [stdout]   --> src/knn.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub type Arr = [i32; CLASSES];
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_data_ranges` is never used
[INFO] [stdout]   --> src/knn.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn resolve_data_ranges(points: &Vec<Point>) -> [Vec<Point>; THREADS] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_dataset` is never used
[INFO] [stdout]   --> src/knn.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn read_dataset(file_path: &str) -> Result<Vec<Point>, Box<dyn Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `distance` is never used
[INFO] [stdout]   --> src/knn.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn distance<'a>(point_a: &'a Point, point_b: &'a Point) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_point` is never used
[INFO] [stdout]   --> src/knn.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn classify_point(points: &mut Vec<Point>, k_neighbours: i32, test_point: &Point) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `knn_thread` is never used
[INFO] [stdout]   --> src/knn.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn knn_thread(points: &mut Vec<Point>, test_point: &Point, classes_vec: &Arc<Mutex<Vec<Arr>>>, k_neighbours: &i32) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize` is never used
[INFO] [stdout]   --> src/knn.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub fn normalize(points: &mut Vec<Point>) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_precision_metric` is never used
[INFO] [stdout]    --> src/knn.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub fn get_precision_metric(points: &mut Vec<Point>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_accuracy_metric` is never used
[INFO] [stdout]    --> src/knn.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn get_accuracy_metric(points: &mut Vec<Point>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_recall_metric` is never used
[INFO] [stdout]    --> src/knn.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn get_recall_metric(points: &mut Vec<Point>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_knn` is never used
[INFO] [stdout]    --> src/knn.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub fn benchmark_knn() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `knn_parallel` is never used
[INFO] [stdout]    --> src/knn.rs:176:8
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub fn knn_parallel(points: &mut Vec<Point>, test_point: Option<&Point>) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_knn_parallel` is never used
[INFO] [stdout]    --> src/knn.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn benchmark_knn_parallel() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOC_DATASET_FILE_PATH` is never used
[INFO] [stdout]  --> src/decision_tree_cart.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const LOC_DATASET_FILE_PATH: &str = "datasets/diabetes.csv";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Feature` is never constructed
[INFO] [stdout]   --> src/decision_tree_cart.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Feature {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `of_features_array` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Feature {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 18 |     fn of_features_array(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DataSet` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:95:6
[INFO] [stdout]    |
[INFO] [stdout] 95 | type DataSet<T> = Vec<Vec<T>>;
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FeatureType` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:98:6
[INFO] [stdout]    |
[INFO] [stdout] 98 | type FeatureType = f32;
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Node` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:101:6
[INFO] [stdout]     |
[INFO] [stdout] 101 | enum Node {
[INFO] [stdout]     |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DecisionTreeClassifier` is never constructed
[INFO] [stdout]    --> src/decision_tree_cart.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct DecisionTreeClassifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl DecisionTreeClassifier {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 127 |     fn new(max_depth: i32, min_samples_split: i32, min_samples_leaf: i32) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn fit(&mut self,
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn fit_parallel(&mut self,
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     fn build_tree_parallel(data: &Vec<Feature>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn build_tree(data: &Vec<Feature>,
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     fn calculate_split(data: &Vec<Feature>, target: &Vec<f32>) -> (f32, usize, FeatureType) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     fn filter_uniq(vec: &Vec<f32>) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     fn get_outcome(data: &Vec<Feature>,
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     fn split_data(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub fn predict(&self, train_data: &Vec<FeatureType>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     fn query_tree(&self, ref node: &Node, train_data: &Vec<FeatureType>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     fn get_target_features_classes(data: &Vec<Feature>, target: &Vec<f32>) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     fn proxy_gini_impurity(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_cart_parallel` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:462:8
[INFO] [stdout]     |
[INFO] [stdout] 462 | pub fn benchmark_cart_parallel() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_cart_linear` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:482:8
[INFO] [stdout]     |
[INFO] [stdout] 482 | pub fn benchmark_cart_linear() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_parsed_value` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn validate_parsed_value(match_value: Result<FeatureType, ParseFloatError>) -> Option<FeatureType> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_dataset` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn read_dataset(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_precision_metric` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:388:12
[INFO] [stdout]     |
[INFO] [stdout] 388 |     pub fn get_precision_metric(decision_tree: &DecisionTreeClassifier, data: &Vec<Feature>, target: &Vec<f32>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_accuracy_metric` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:405:12
[INFO] [stdout]     |
[INFO] [stdout] 405 |     pub fn get_accuracy_metric(decision_tree: &DecisionTreeClassifier, data: &Vec<Feature>, target: &Vec<f32>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_recall_metric` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:432:12
[INFO] [stdout]     |
[INFO] [stdout] 432 |     pub fn get_recall_metric(decision_tree: &DecisionTreeClassifier, data: &Vec<Feature>, target: &Vec<f32>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_metrics` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:451:12
[INFO] [stdout]     |
[INFO] [stdout] 451 |     pub fn get_metrics(decision_tree_classifier: &DecisionTreeClassifier, data: &Vec<Feature>, target: &Vec<f32>){
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/k_means.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let mut iter_centroids_global_cache: Arc<Mutex<Vec<IterCentroid>>> = Arc::new(Mutex::new(vec![]));
[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 `end` is never read
[INFO] [stdout]    --> src/k_means.rs:311:23
[INFO] [stdout]     |
[INFO] [stdout] 311 |         let mut end = 0;
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/k_means.rs:349:46
[INFO] [stdout]     |
[INFO] [stdout] 349 |             range_local.iter_mut().for_each(|mut point| {
[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/k_means.rs:359:69
[INFO] [stdout]     |
[INFO] [stdout] 359 |             range_local.iter_mut().enumerate().for_each(|(point_id, mut point)| {
[INFO] [stdout]     |                                                                     ----^^^^^
[INFO] [stdout]     |                                                                     |
[INFO] [stdout]     |                                                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point_id`
[INFO] [stdout]    --> src/k_means.rs:359:59
[INFO] [stdout]     |
[INFO] [stdout] 359 |             range_local.iter_mut().enumerate().for_each(|(point_id, mut point)| {
[INFO] [stdout]     |                                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_point_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `end` is never read
[INFO] [stdout]   --> src/knn.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut end = 0;
[INFO] [stdout]    |                   ^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point_id`
[INFO] [stdout]   --> src/knn.rs:67:47
[INFO] [stdout]    |
[INFO] [stdout] 67 |     points.into_iter().enumerate().for_each(|(point_id, point)| {
[INFO] [stdout]    |                                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_point_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point_id`
[INFO] [stdout]   --> src/knn.rs:80:47
[INFO] [stdout]    |
[INFO] [stdout] 80 |     points.into_iter().enumerate().for_each(|(point_id, point)| {
[INFO] [stdout]    |                                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_point_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/decision_tree_cart.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut headers = binding.into_iter().collect::<Vec<_>>();
[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/decision_tree_cart.rs:291:17
[INFO] [stdout]     |
[INFO] [stdout] 291 |             let mut feature_target: i32;
[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/decision_tree_cart.rs:287:13
[INFO] [stdout]     |
[INFO] [stdout] 287 |         let mut features_targets = Self::get_target_features_classes(data, target);
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATASET_FILE_PATH` is never used
[INFO] [stdout]   --> src/k_means.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const DATASET_FILE_PATH: &str = "datasets/Cust_Segmentation.csv";
[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 `PLOT_OUTPUT_FILE_PATH` is never used
[INFO] [stdout]   --> src/k_means.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const PLOT_OUTPUT_FILE_PATH: &str = "target/kmeans.png";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLUSTERS` is never used
[INFO] [stdout]   --> src/k_means.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const CLUSTERS: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ITERATIONS` is never used
[INFO] [stdout]   --> src/k_means.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const MAX_ITERATIONS: i32 = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREADS_NUM` is never used
[INFO] [stdout]   --> src/k_means.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const THREADS_NUM: i32 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/k_means.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Point {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ArcMutex` is never used
[INFO] [stdout]   --> src/k_means.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub type ArcMutex<T> = Arc<Mutex<T>>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `IPointDistance` is never used
[INFO] [stdout]   --> src/k_means.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | trait IPointDistance {
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_default_coord` are never used
[INFO] [stdout]   --> src/k_means.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl Point {
[INFO] [stdout]    | ---------- associated functions in this implementation
[INFO] [stdout] 40 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     fn with_default_coord(id: i32, x: f32, y: f32) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IterCentroid` is never constructed
[INFO] [stdout]   --> src/k_means.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct IterCentroid {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Range` is never constructed
[INFO] [stdout]   --> src/k_means.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct Range {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KMeans` is never constructed
[INFO] [stdout]   --> src/k_means.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct KMeans {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `IKMeans` is never used
[INFO] [stdout]   --> src/k_means.rs:94:11
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub trait IKMeans {
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/k_means.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl KMeans {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 105 |     fn new(clusters: usize, iterations: i32) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_k_means` is never used
[INFO] [stdout]    --> src/k_means.rs:390:8
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub fn benchmark_k_means(){
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATASET_FILE_PATH` is never used
[INFO] [stdout]  --> src/knn.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const DATASET_FILE_PATH: &str = "datasets/diabetes.csv";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLASSES` is never used
[INFO] [stdout]  --> src/knn.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const CLASSES: usize = 2;
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREADS` is never used
[INFO] [stdout]  --> src/knn.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const THREADS: usize = 4;
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/knn.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Point {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Arr` is never used
[INFO] [stdout]   --> src/knn.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub type Arr = [i32; CLASSES];
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_data_ranges` is never used
[INFO] [stdout]   --> src/knn.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn resolve_data_ranges(points: &Vec<Point>) -> [Vec<Point>; THREADS] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_dataset` is never used
[INFO] [stdout]   --> src/knn.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn read_dataset(file_path: &str) -> Result<Vec<Point>, Box<dyn Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `distance` is never used
[INFO] [stdout]   --> src/knn.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn distance<'a>(point_a: &'a Point, point_b: &'a Point) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_point` is never used
[INFO] [stdout]   --> src/knn.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn classify_point(points: &mut Vec<Point>, k_neighbours: i32, test_point: &Point) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `knn_thread` is never used
[INFO] [stdout]   --> src/knn.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn knn_thread(points: &mut Vec<Point>, test_point: &Point, classes_vec: &Arc<Mutex<Vec<Arr>>>, k_neighbours: &i32) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize` is never used
[INFO] [stdout]   --> src/knn.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub fn normalize(points: &mut Vec<Point>) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_precision_metric` is never used
[INFO] [stdout]    --> src/knn.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub fn get_precision_metric(points: &mut Vec<Point>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_accuracy_metric` is never used
[INFO] [stdout]    --> src/knn.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn get_accuracy_metric(points: &mut Vec<Point>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_recall_metric` is never used
[INFO] [stdout]    --> src/knn.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn get_recall_metric(points: &mut Vec<Point>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_knn` is never used
[INFO] [stdout]    --> src/knn.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub fn benchmark_knn() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `knn_parallel` is never used
[INFO] [stdout]    --> src/knn.rs:176:8
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub fn knn_parallel(points: &mut Vec<Point>, test_point: Option<&Point>) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_knn_parallel` is never used
[INFO] [stdout]    --> src/knn.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn benchmark_knn_parallel() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOC_DATASET_FILE_PATH` is never used
[INFO] [stdout]  --> src/decision_tree_cart.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const LOC_DATASET_FILE_PATH: &str = "datasets/diabetes.csv";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Feature` is never constructed
[INFO] [stdout]   --> src/decision_tree_cart.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Feature {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `of_features_array` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Feature {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 18 |     fn of_features_array(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DataSet` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:95:6
[INFO] [stdout]    |
[INFO] [stdout] 95 | type DataSet<T> = Vec<Vec<T>>;
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FeatureType` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:98:6
[INFO] [stdout]    |
[INFO] [stdout] 98 | type FeatureType = f32;
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Node` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:101:6
[INFO] [stdout]     |
[INFO] [stdout] 101 | enum Node {
[INFO] [stdout]     |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DecisionTreeClassifier` is never constructed
[INFO] [stdout]    --> src/decision_tree_cart.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct DecisionTreeClassifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl DecisionTreeClassifier {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 127 |     fn new(max_depth: i32, min_samples_split: i32, min_samples_leaf: i32) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn fit(&mut self,
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn fit_parallel(&mut self,
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     fn build_tree_parallel(data: &Vec<Feature>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn build_tree(data: &Vec<Feature>,
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     fn calculate_split(data: &Vec<Feature>, target: &Vec<f32>) -> (f32, usize, FeatureType) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     fn filter_uniq(vec: &Vec<f32>) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     fn get_outcome(data: &Vec<Feature>,
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     fn split_data(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub fn predict(&self, train_data: &Vec<FeatureType>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     fn query_tree(&self, ref node: &Node, train_data: &Vec<FeatureType>) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     fn get_target_features_classes(data: &Vec<Feature>, target: &Vec<f32>) -> Vec<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     fn proxy_gini_impurity(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_cart_parallel` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:462:8
[INFO] [stdout]     |
[INFO] [stdout] 462 | pub fn benchmark_cart_parallel() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `benchmark_cart_linear` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:482:8
[INFO] [stdout]     |
[INFO] [stdout] 482 | pub fn benchmark_cart_linear() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_parsed_value` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn validate_parsed_value(match_value: Result<FeatureType, ParseFloatError>) -> Option<FeatureType> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_dataset` is never used
[INFO] [stdout]   --> src/decision_tree_cart.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn read_dataset(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_precision_metric` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:388:12
[INFO] [stdout]     |
[INFO] [stdout] 388 |     pub fn get_precision_metric(decision_tree: &DecisionTreeClassifier, data: &Vec<Feature>, target: &Vec<f32>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_accuracy_metric` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:405:12
[INFO] [stdout]     |
[INFO] [stdout] 405 |     pub fn get_accuracy_metric(decision_tree: &DecisionTreeClassifier, data: &Vec<Feature>, target: &Vec<f32>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_recall_metric` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:432:12
[INFO] [stdout]     |
[INFO] [stdout] 432 |     pub fn get_recall_metric(decision_tree: &DecisionTreeClassifier, data: &Vec<Feature>, target: &Vec<f32>) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_metrics` is never used
[INFO] [stdout]    --> src/decision_tree_cart.rs:451:12
[INFO] [stdout]     |
[INFO] [stdout] 451 |     pub fn get_metrics(decision_tree_classifier: &DecisionTreeClassifier, data: &Vec<Feature>, target: &Vec<f32>){
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.44s
[INFO] running `Command { std: "docker" "inspect" "018864a45fea63b0617caf42648b6082d2a3f66b3e5c7c81cbd72bbd6afd5a5a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "018864a45fea63b0617caf42648b6082d2a3f66b3e5c7c81cbd72bbd6afd5a5a", kill_on_drop: false }`
[INFO] [stdout] 018864a45fea63b0617caf42648b6082d2a3f66b3e5c7c81cbd72bbd6afd5a5a
