[INFO] cloning repository https://github.com/ucsb-coast-lab/image_clustering
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ucsb-coast-lab/image_clustering" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fucsb-coast-lab%2Fimage_clustering", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fucsb-coast-lab%2Fimage_clustering'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f35a2c6fd92fc1de1c2032461f897d416a6684b6
[INFO] checking ucsb-coast-lab/image_clustering against master#ab26b175979ee7b2cb3302dce204b99df96f7efb for pr-157696
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fucsb-coast-lab%2Fimage_clustering" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ucsb-coast-lab/image_clustering
[INFO] finished tweaking git repo https://github.com/ucsb-coast-lab/image_clustering
[INFO] tweaked toml for git repo https://github.com/ucsb-coast-lab/image_clustering written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ucsb-coast-lab/image_clustering on toolchain ab26b175979ee7b2cb3302dce204b99df96f7efb
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ab26b175979ee7b2cb3302dce204b99df96f7efb" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ucsb-coast-lab/image_clustering 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" "+ab26b175979ee7b2cb3302dce204b99df96f7efb" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating git repository `https://github.com/quietlychris/plotlib`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 1 package to latest compatible version
[INFO] [stderr]       Adding plotlib v0.4.0 (https://github.com/quietlychris/plotlib?branch=master#1f213b51)
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded failure v0.1.6
[INFO] [stderr]   Downloaded synstructure v0.12.3
[INFO] [stderr]   Downloaded svg v0.6.0
[INFO] [stderr]   Downloaded hermit-abi v0.1.5
[INFO] [stderr]   Downloaded failure_derive v0.1.6
[INFO] [stderr]   Downloaded matrixmultiply v0.1.15
[INFO] [stderr]   Downloaded num-rational v0.2.3
[INFO] [stderr]   Downloaded rulinalg v0.4.2
[INFO] [stderr]   Downloaded proc-macro2 v1.0.6
[INFO] [stderr]   Downloaded backtrace v0.3.40
[INFO] [stderr]   Downloaded itertools v0.7.11
[INFO] [stderr]   Downloaded backtrace-sys v0.1.32
[INFO] [stderr]   Downloaded imageproc v0.19.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 207cf820f7a2397c1a8bc47e33122dbbbed89c641ab889e499a8159aefea7af9
[INFO] running `Command { std: "docker" "start" "207cf820f7a2397c1a8bc47e33122dbbbed89c641ab889e499a8159aefea7af9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "207cf820f7a2397c1a8bc47e33122dbbbed89c641ab889e499a8159aefea7af9" "/opt/rustwide/cargo-home/bin/cargo" "+ab26b175979ee7b2cb3302dce204b99df96f7efb" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "207cf820f7a2397c1a8bc47e33122dbbbed89c641ab889e499a8159aefea7af9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "207cf820f7a2397c1a8bc47e33122dbbbed89c641ab889e499a8159aefea7af9" "/opt/rustwide/cargo-home/bin/cargo" "+ab26b175979ee7b2cb3302dce204b99df96f7efb" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.66
[INFO] [stderr]    Compiling crossbeam-utils v0.7.0
[INFO] [stderr]    Compiling num-integer v0.1.42
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.6
[INFO] [stderr]    Compiling num-iter v0.1.40
[INFO] [stderr]     Checking scopeguard v1.0.0
[INFO] [stderr]    Compiling unicode-xid v0.2.0
[INFO] [stderr]    Compiling num-bigint v0.2.6
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]    Compiling cc v1.0.48
[INFO] [stderr]    Compiling rayon-core v1.7.0
[INFO] [stderr]    Compiling syn v1.0.11
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]    Compiling num-rational v0.2.3
[INFO] [stderr]     Checking adler32 v1.0.4
[INFO] [stderr]     Checking either v1.5.3
[INFO] [stderr]    Compiling getrandom v0.1.13
[INFO] [stderr]    Compiling num-complex v0.2.4
[INFO] [stderr]    Compiling matrixmultiply v0.1.15
[INFO] [stderr]    Compiling failure_derive v0.1.6
[INFO] [stderr]     Checking crc32fast v1.2.0
[INFO] [stderr]     Checking deflate v0.7.20
[INFO] [stderr]     Checking inflate v0.4.5
[INFO] [stderr]     Checking stb_truetype v0.3.1
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]     Checking approx v0.3.2
[INFO] [stderr]     Checking arrayvec v0.5.1
[INFO] [stderr]     Checking rustc-demangle v0.1.16
[INFO] [stderr]     Checking ppv-lite86 v0.2.6
[INFO] [stderr]    Compiling memoffset v0.5.3
[INFO] [stderr]     Checking gif v0.10.3
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking rusttype v0.8.2
[INFO] [stderr]     Checking custom_derive v0.1.7
[INFO] [stderr]     Checking conv v0.3.3
[INFO] [stderr]     Checking itertools v0.7.11
[INFO] [stderr]     Checking svg v0.6.0
[INFO] [stderr]     Checking crossbeam-queue v0.2.0
[INFO] [stderr]    Compiling backtrace-sys v0.1.32
[INFO] [stderr]     Checking num_cpus v1.11.1
[INFO] [stderr]     Checking rand_os v0.1.3
[INFO] [stderr]     Checking num v0.1.42
[INFO] [stderr]     Checking png v0.15.2
[INFO] [stderr]     Checking rulinalg v0.4.2
[INFO] [stderr]     Checking crossbeam-deque v0.7.2
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand v0.6.5
[INFO] [stderr]     Checking rusttype v0.7.9
[INFO] [stderr]     Checking c2-chacha v0.2.3
[INFO] [stderr]    Compiling quote v1.0.2
[INFO] [stderr]     Checking rand_chacha v0.2.1
[INFO] [stderr]     Checking rand v0.7.2
[INFO] [stderr]     Checking rayon v1.3.0
[INFO] [stderr]     Checking backtrace v0.3.40
[INFO] [stderr]     Checking num v0.2.1
[INFO] [stderr]    Compiling num-derive v0.2.5
[INFO] [stderr]     Checking tiff v0.3.1
[INFO] [stderr]     Checking jpeg-decoder v0.1.18
[INFO] [stderr]    Compiling synstructure v0.12.3
[INFO] [stderr]     Checking image v0.22.3
[INFO] [stderr]     Checking failure v0.1.6
[INFO] [stderr]     Checking plotlib v0.4.0 (https://github.com/quietlychris/plotlib?branch=master#1f213b51)
[INFO] [stderr]     Checking imageproc v0.19.2
[INFO] [stderr]     Checking image_clustering v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `draw_cross_mut` and `draw_hollow_circle_mut`
[INFO] [stdout]  --> src/algorithm_lib.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | use imageproc::drawing::{draw_cross_mut, draw_hollow_circle_mut};
[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/algorithm_lib.rs:363:54
[INFO] [stdout]     |
[INFO] [stdout] 363 |         cluster_centers[pixel.assigned_cluster].0 += (pixel.x as u32);
[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] 363 -         cluster_centers[pixel.assigned_cluster].0 += (pixel.x as u32);
[INFO] [stdout] 363 +         cluster_centers[pixel.assigned_cluster].0 += pixel.x as u32 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithm_lib.rs:364:54
[INFO] [stdout]     |
[INFO] [stdout] 364 |         cluster_centers[pixel.assigned_cluster].1 += (pixel.y as u32);
[INFO] [stdout]     |                                                      ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 364 -         cluster_centers[pixel.assigned_cluster].1 += (pixel.y as u32);
[INFO] [stdout] 364 +         cluster_centers[pixel.assigned_cluster].1 += pixel.y as u32 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithm_lib.rs:446:22
[INFO] [stdout]     |
[INFO] [stdout] 446 |             a_sum += (a[i].r as isize + a[i].g as isize + a[i].b as isize);
[INFO] [stdout]     |                      ^                                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 446 -             a_sum += (a[i].r as isize + a[i].g as isize + a[i].b as isize);
[INFO] [stdout] 446 +             a_sum += a[i].r as isize + a[i].g as isize + a[i].b as isize ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithm_lib.rs:448:22
[INFO] [stdout]     |
[INFO] [stdout] 448 |             b_sum += (b[i].r as isize + b[i].g as isize + b[i].b as isize);
[INFO] [stdout]     |                      ^                                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 448 -             b_sum += (b[i].r as isize + b[i].g as isize + b[i].b as isize);
[INFO] [stdout] 448 +             b_sum += b[i].r as isize + b[i].g as isize + b[i].b as isize ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `visualization_lib::*`
[INFO] [stdout]  --> src/lib.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use visualization_lib::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `algorithm_lib::*`
[INFO] [stdout]  --> src/lib.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use algorithm_lib::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rayon::iter::IndexedParallelIterator::position`: parallel `position` does not search in order -- use `position_any`, \
[INFO] [stdout]                          `position_first`, or `position_last`
[INFO] [stdout]    --> src/algorithm_lib.rs:528:43
[INFO] [stdout]     |
[INFO] [stdout] 528 |         let index = match list.par_iter().position(|&x| x.assigned_cluster == 0) {
[INFO] [stdout]     |                                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `draw_cross_mut` and `draw_hollow_circle_mut`
[INFO] [stdout]  --> src/algorithm_lib.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | use imageproc::drawing::{draw_cross_mut, draw_hollow_circle_mut};
[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/algorithm_lib.rs:363:54
[INFO] [stdout]     |
[INFO] [stdout] 363 |         cluster_centers[pixel.assigned_cluster].0 += (pixel.x as u32);
[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] 363 -         cluster_centers[pixel.assigned_cluster].0 += (pixel.x as u32);
[INFO] [stdout] 363 +         cluster_centers[pixel.assigned_cluster].0 += pixel.x as u32 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithm_lib.rs:364:54
[INFO] [stdout]     |
[INFO] [stdout] 364 |         cluster_centers[pixel.assigned_cluster].1 += (pixel.y as u32);
[INFO] [stdout]     |                                                      ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 364 -         cluster_centers[pixel.assigned_cluster].1 += (pixel.y as u32);
[INFO] [stdout] 364 +         cluster_centers[pixel.assigned_cluster].1 += pixel.y as u32 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithm_lib.rs:446:22
[INFO] [stdout]     |
[INFO] [stdout] 446 |             a_sum += (a[i].r as isize + a[i].g as isize + a[i].b as isize);
[INFO] [stdout]     |                      ^                                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 446 -             a_sum += (a[i].r as isize + a[i].g as isize + a[i].b as isize);
[INFO] [stdout] 446 +             a_sum += a[i].r as isize + a[i].g as isize + a[i].b as isize ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/algorithm_lib.rs:448:22
[INFO] [stdout]     |
[INFO] [stdout] 448 |             b_sum += (b[i].r as isize + b[i].g as isize + b[i].b as isize);
[INFO] [stdout]     |                      ^                                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 448 -             b_sum += (b[i].r as isize + b[i].g as isize + b[i].b as isize);
[INFO] [stdout] 448 +             b_sum += b[i].r as isize + b[i].g as isize + b[i].b as isize ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `visualization_lib::*`
[INFO] [stdout]  --> src/lib.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use visualization_lib::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `algorithm_lib::*`
[INFO] [stdout]  --> src/lib.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use algorithm_lib::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/visualization_lib.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let mut img = image::open(img_path).expect("Couldn't open the image");
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/visualization_lib.rs:116:10
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:32
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:43
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                           ----^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/visualization_lib.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |     for i in 0..num_clusters {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]    --> src/visualization_lib.rs:114:21
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let (pixel_vec, w, h) = build_kmeans_pixel_list_from_image(img, clusters);
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/visualization_lib.rs:114:24
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let (pixel_vec, w, h) = build_kmeans_pixel_list_from_image(img, clusters);
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_x`
[INFO] [stdout]    --> src/visualization_lib.rs:116:10
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_x`
[INFO] [stdout]    --> src/visualization_lib.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_y`
[INFO] [stdout]    --> src/visualization_lib.rs:116:32
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_y`
[INFO] [stdout]    --> src/visualization_lib.rs:116:43
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel`
[INFO] [stdout]   --> src/algorithm_lib.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     for pixel in &data {
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/algorithm_lib.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let c = a.assigned_cluster;
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/algorithm_lib.rs:161:17
[INFO] [stdout]     |
[INFO] [stdout] 161 |             let position = (x, y);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithm_lib.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 211 |     mut img: DynamicImage,
[INFO] [stdout]     |     ----^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> src/algorithm_lib.rs:358:9
[INFO] [stdout]     |
[INFO] [stdout] 358 |     for n in 0..num_clusters {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_clusters` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:221:43
[INFO] [stdout]     |
[INFO] [stdout] 221 |     let mut prev_clusters: Vec<Cluster> = Vec::with_capacity(num_clusters);
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 285 |         prev_clusters = clusters.clone();
[INFO] [stdout]     |         ------------- `prev_clusters` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `diff` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:439:20
[INFO] [stdout]     |
[INFO] [stdout] 439 |     let mut diff = 0;
[INFO] [stdout]     |                    ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 451 |         diff = (a_sum - b_sum).abs();
[INFO] [stdout]     |         ---------------------------- `diff` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithm_lib.rs:486:9
[INFO] [stdout]     |
[INFO] [stdout] 486 |     let mut img = image::open(img_path).expect("Couldn't open the image").resize(size,size,Triangle);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `remaining_zeros` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:505:35
[INFO] [stdout]     |
[INFO] [stdout] 505 |         let mut remaining_zeros = list.clone().into_iter().filter(|x| x.assigned_cluster == 0).collect::<Vec<CPixel>>().len();
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 519 |             remaining_zeros = list.clone().into_par_iter().filter(|x| x.assigned_cluster == 0).collect::<Vec<CPixel>>().len();
[INFO] [stdout]     |             ----------------------------------------------------------------------------------------------------------------- `remaining_zeros` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `print` is never used
[INFO] [stdout]   --> src/algorithm_lib.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl CPixel {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 22 |     fn print(&self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rayon::iter::IndexedParallelIterator::position`: parallel `position` does not search in order -- use `position_any`, \
[INFO] [stdout]                          `position_first`, or `position_last`
[INFO] [stdout]    --> src/algorithm_lib.rs:528:43
[INFO] [stdout]     |
[INFO] [stdout] 528 |         let index = match list.par_iter().position(|&x| x.assigned_cluster == 0) {
[INFO] [stdout]     |                                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/visualization_lib.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let mut img = image::open(img_path).expect("Couldn't open the image");
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/visualization_lib.rs:116:10
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:32
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:43
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                           ----^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/visualization_lib.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |     for i in 0..num_clusters {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]    --> src/visualization_lib.rs:114:21
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let (pixel_vec, w, h) = build_kmeans_pixel_list_from_image(img, clusters);
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/visualization_lib.rs:114:24
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let (pixel_vec, w, h) = build_kmeans_pixel_list_from_image(img, clusters);
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_x`
[INFO] [stdout]    --> src/visualization_lib.rs:116:10
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_x`
[INFO] [stdout]    --> src/visualization_lib.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_y`
[INFO] [stdout]    --> src/visualization_lib.rs:116:32
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_y`
[INFO] [stdout]    --> src/visualization_lib.rs:116:43
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel`
[INFO] [stdout]   --> src/algorithm_lib.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     for pixel in &data {
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/algorithm_lib.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let c = a.assigned_cluster;
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/algorithm_lib.rs:161:17
[INFO] [stdout]     |
[INFO] [stdout] 161 |             let position = (x, y);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithm_lib.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 211 |     mut img: DynamicImage,
[INFO] [stdout]     |     ----^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> src/algorithm_lib.rs:358:9
[INFO] [stdout]     |
[INFO] [stdout] 358 |     for n in 0..num_clusters {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_clusters` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:221:43
[INFO] [stdout]     |
[INFO] [stdout] 221 |     let mut prev_clusters: Vec<Cluster> = Vec::with_capacity(num_clusters);
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 285 |         prev_clusters = clusters.clone();
[INFO] [stdout]     |         ------------- `prev_clusters` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `diff` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:439:20
[INFO] [stdout]     |
[INFO] [stdout] 439 |     let mut diff = 0;
[INFO] [stdout]     |                    ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 451 |         diff = (a_sum - b_sum).abs();
[INFO] [stdout]     |         ---------------------------- `diff` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithm_lib.rs:486:9
[INFO] [stdout]     |
[INFO] [stdout] 486 |     let mut img = image::open(img_path).expect("Couldn't open the image").resize(size,size,Triangle);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `remaining_zeros` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:505:35
[INFO] [stdout]     |
[INFO] [stdout] 505 |         let mut remaining_zeros = list.clone().into_iter().filter(|x| x.assigned_cluster == 0).collect::<Vec<CPixel>>().len();
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 519 |             remaining_zeros = list.clone().into_par_iter().filter(|x| x.assigned_cluster == 0).collect::<Vec<CPixel>>().len();
[INFO] [stdout]     |             ----------------------------------------------------------------------------------------------------------------- `remaining_zeros` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `print` is never used
[INFO] [stdout]   --> src/algorithm_lib.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl CPixel {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 22 |     fn print(&self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rayon::iter::IndexedParallelIterator::position`: parallel `position` does not search in order -- use `position_any`, \
[INFO] [stdout]                          `position_first`, or `position_last`
[INFO] [stdout]    --> src/algorithm_lib.rs:528:43
[INFO] [stdout]     |
[INFO] [stdout] 528 |         let index = match list.par_iter().position(|&x| x.assigned_cluster == 0) {
[INFO] [stdout]     |                                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel`
[INFO] [stdout]   --> src/algorithm_lib.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     for pixel in &data {
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/algorithm_lib.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let c = a.assigned_cluster;
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/algorithm_lib.rs:161:17
[INFO] [stdout]     |
[INFO] [stdout] 161 |             let position = (x, y);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithm_lib.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 211 |     mut img: DynamicImage,
[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: `n`
[INFO] [stdout]    --> src/algorithm_lib.rs:358:9
[INFO] [stdout]     |
[INFO] [stdout] 358 |     for n in 0..num_clusters {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_clusters` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:221:43
[INFO] [stdout]     |
[INFO] [stdout] 221 |     let mut prev_clusters: Vec<Cluster> = Vec::with_capacity(num_clusters);
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 285 |         prev_clusters = clusters.clone();
[INFO] [stdout]     |         ------------- `prev_clusters` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `diff` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:439:20
[INFO] [stdout]     |
[INFO] [stdout] 439 |     let mut diff = 0;
[INFO] [stdout]     |                    ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 451 |         diff = (a_sum - b_sum).abs();
[INFO] [stdout]     |         ---------------------------- `diff` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithm_lib.rs:486:9
[INFO] [stdout]     |
[INFO] [stdout] 486 |     let mut img = image::open(img_path).expect("Couldn't open the image").resize(size,size,Triangle);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `remaining_zeros` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:505:35
[INFO] [stdout]     |
[INFO] [stdout] 505 |         let mut remaining_zeros = list.clone().into_iter().filter(|x| x.assigned_cluster == 0).collect::<Vec<CPixel>>().len();
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 519 |             remaining_zeros = list.clone().into_par_iter().filter(|x| x.assigned_cluster == 0).collect::<Vec<CPixel>>().len();
[INFO] [stdout]     |             ----------------------------------------------------------------------------------------------------------------- `remaining_zeros` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/visualization_lib.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let mut img = image::open(img_path).expect("Couldn't open the image");
[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/visualization_lib.rs:116:10
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:32
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:43
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                           ----^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/visualization_lib.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |     for i in 0..num_clusters {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]    --> src/visualization_lib.rs:114:21
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let (pixel_vec, w, h) = build_kmeans_pixel_list_from_image(img, clusters);
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/visualization_lib.rs:114:24
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let (pixel_vec, w, h) = build_kmeans_pixel_list_from_image(img, clusters);
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_x`
[INFO] [stdout]    --> src/visualization_lib.rs:116:10
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_x`
[INFO] [stdout]    --> src/visualization_lib.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_y`
[INFO] [stdout]    --> src/visualization_lib.rs:116:32
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_y`
[INFO] [stdout]    --> src/visualization_lib.rs:116:43
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let mut img = image::open(&path).expect("Couldn't open the image");
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rayon::iter::IndexedParallelIterator::position`: parallel `position` does not search in order -- use `position_any`, \
[INFO] [stdout]                          `position_first`, or `position_last`
[INFO] [stdout]    --> src/algorithm_lib.rs:528:43
[INFO] [stdout]     |
[INFO] [stdout] 528 |         let index = match list.par_iter().position(|&x| x.assigned_cluster == 0) {
[INFO] [stdout]     |                                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel`
[INFO] [stdout]   --> src/algorithm_lib.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     for pixel in &data {
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/algorithm_lib.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let c = a.assigned_cluster;
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/algorithm_lib.rs:161:17
[INFO] [stdout]     |
[INFO] [stdout] 161 |             let position = (x, y);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithm_lib.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 211 |     mut img: DynamicImage,
[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: `n`
[INFO] [stdout]    --> src/algorithm_lib.rs:358:9
[INFO] [stdout]     |
[INFO] [stdout] 358 |     for n in 0..num_clusters {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_clusters` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:221:43
[INFO] [stdout]     |
[INFO] [stdout] 221 |     let mut prev_clusters: Vec<Cluster> = Vec::with_capacity(num_clusters);
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 285 |         prev_clusters = clusters.clone();
[INFO] [stdout]     |         ------------- `prev_clusters` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `diff` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:439:20
[INFO] [stdout]     |
[INFO] [stdout] 439 |     let mut diff = 0;
[INFO] [stdout]     |                    ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 451 |         diff = (a_sum - b_sum).abs();
[INFO] [stdout]     |         ---------------------------- `diff` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/algorithm_lib.rs:486:9
[INFO] [stdout]     |
[INFO] [stdout] 486 |     let mut img = image::open(img_path).expect("Couldn't open the image").resize(size,size,Triangle);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `remaining_zeros` is never read
[INFO] [stdout]    --> src/algorithm_lib.rs:505:35
[INFO] [stdout]     |
[INFO] [stdout] 505 |         let mut remaining_zeros = list.clone().into_iter().filter(|x| x.assigned_cluster == 0).collect::<Vec<CPixel>>().len();
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 519 |             remaining_zeros = list.clone().into_par_iter().filter(|x| x.assigned_cluster == 0).collect::<Vec<CPixel>>().len();
[INFO] [stdout]     |             ----------------------------------------------------------------------------------------------------------------- `remaining_zeros` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/visualization_lib.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let mut img = image::open(img_path).expect("Couldn't open the image");
[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/visualization_lib.rs:116:10
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:32
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[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/visualization_lib.rs:116:43
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                           ----^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/visualization_lib.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |     for i in 0..num_clusters {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]    --> src/visualization_lib.rs:114:21
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let (pixel_vec, w, h) = build_kmeans_pixel_list_from_image(img, clusters);
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/visualization_lib.rs:114:24
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let (pixel_vec, w, h) = build_kmeans_pixel_list_from_image(img, clusters);
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_x`
[INFO] [stdout]    --> src/visualization_lib.rs:116:10
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_x`
[INFO] [stdout]    --> src/visualization_lib.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_y`
[INFO] [stdout]    --> src/visualization_lib.rs:116:32
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_y`
[INFO] [stdout]    --> src/visualization_lib.rs:116:43
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (mut min_x, mut max_x, mut min_y, mut max_y) = (0f64, 0f64, 0f64, 0f64);
[INFO] [stdout]     |                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let mut img = image::open(&path).expect("Couldn't open the image");
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.51s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: svg v0.6.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "207cf820f7a2397c1a8bc47e33122dbbbed89c641ab889e499a8159aefea7af9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "207cf820f7a2397c1a8bc47e33122dbbbed89c641ab889e499a8159aefea7af9", kill_on_drop: false }`
[INFO] [stdout] 207cf820f7a2397c1a8bc47e33122dbbbed89c641ab889e499a8159aefea7af9
