[INFO] updating cached repository XeryusTC/image-palette [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/XeryusTC/image-palette [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/XeryusTC/image-palette" "work/ex/clippy-test-run/sources/stable/gh/XeryusTC/image-palette"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/XeryusTC/image-palette'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/XeryusTC/image-palette" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/XeryusTC/image-palette"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/XeryusTC/image-palette'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] a67e27105cbdfcb12a07f7209fb867121d038873 [INFO] sha for GitHub repo XeryusTC/image-palette: a67e27105cbdfcb12a07f7209fb867121d038873 [INFO] validating manifest of XeryusTC/image-palette on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of XeryusTC/image-palette on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing XeryusTC/image-palette [INFO] finished frobbing XeryusTC/image-palette [INFO] frobbed toml for XeryusTC/image-palette written to work/ex/clippy-test-run/sources/stable/gh/XeryusTC/image-palette/Cargo.toml [INFO] started frobbing XeryusTC/image-palette [INFO] finished frobbing XeryusTC/image-palette [INFO] frobbed toml for XeryusTC/image-palette written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/XeryusTC/image-palette/Cargo.toml [INFO] crate XeryusTC/image-palette has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting XeryusTC/image-palette against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/XeryusTC/image-palette:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 05c21051500e5b51b30fb9334b1557173f5c7f805f748a0b15a2fd277db01c0f [INFO] running `"docker" "start" "-a" "05c21051500e5b51b30fb9334b1557173f5c7f805f748a0b15a2fd277db01c0f"` [INFO] [stderr] Checking clap v2.31.2 [INFO] [stderr] Checking png v0.12.0 [INFO] [stderr] Compiling num-derive v0.2.0 [INFO] [stderr] Checking jpeg-decoder v0.1.14 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking theme-palette v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | fn dist(c1: &image::Rgb, c2: &image::Rgb) -> u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `image::Rgb` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:19:34 [INFO] [stderr] | [INFO] [stderr] 19 | fn dist(c1: &image::Rgb, c2: &image::Rgb) -> u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `image::Rgb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:21:14 [INFO] [stderr] | [INFO] [stderr] 21 | let d1 = if c1[0] > c2[0] { c1[0] - c2[0] } else { c2[0] - c1[0] } as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(if c1[0] > c2[0] { c1[0] - c2[0] } else { c2[0] - c1[0] })` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:22:14 [INFO] [stderr] | [INFO] [stderr] 22 | let d2 = if c1[1] > c2[1] { c1[1] - c2[1] } else { c2[1] - c1[1] } as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(if c1[1] > c2[1] { c1[1] - c2[1] } else { c2[1] - c1[1] })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:23:14 [INFO] [stderr] | [INFO] [stderr] 23 | let d3 = if c1[2] > c2[2] { c1[2] - c2[2] } else { c2[2] - c1[2] } as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(if c1[2] > c2[2] { c1[2] - c2[2] } else { c2[2] - c1[2] })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:33:21 [INFO] [stderr] | [INFO] [stderr] 33 | let stop_crit = (cmp::max(img.width(), img.height()) as f64).sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(cmp::max(img.width(), img.height()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `c` is only used to index `centers`. [INFO] [stderr] --> src/main.rs:51:22 [INFO] [stderr] | [INFO] [stderr] 51 | for c in 1..centers.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 51 | for in centers.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `c` is used to index `centers` [INFO] [stderr] --> src/main.rs:82:22 [INFO] [stderr] | [INFO] [stderr] 82 | for c in 0..clusters { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 82 | for (c, ) in centers.iter().enumerate().take(clusters) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:89:44 [INFO] [stderr] | [INFO] [stderr] 89 | center_totals[labels[i]][0] += pixel[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:90:44 [INFO] [stderr] | [INFO] [stderr] 90 | center_totals[labels[i]][1] += pixel[1] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:91:44 [INFO] [stderr] | [INFO] [stderr] 91 | center_totals[labels[i]][2] += pixel[2] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:123:21 [INFO] [stderr] | [INFO] [stderr] 123 | color: &Rgb, x1: u32, y1: u32, x2: u32, y2: u32) [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Rgb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:167:16 [INFO] [stderr] | [INFO] [stderr] 167 | red += pixel[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:168:18 [INFO] [stderr] | [INFO] [stderr] 168 | green += pixel[1] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | blue += pixel[2] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:171:18 [INFO] [stderr] | [INFO] [stderr] 171 | let pixels = img.width() as u64 * img.height() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(img.width())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:171:39 [INFO] [stderr] | [INFO] [stderr] 171 | let pixels = img.width() as u64 * img.height() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(img.height())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:211:33 [INFO] [stderr] | [INFO] [stderr] 211 | let (mut img, grouped): (ImageBuffer, Vec>, Vec>) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:220:13 [INFO] [stderr] | [INFO] [stderr] 220 | let ref mut fout = File::create("grouped.png").unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^---------------------------------------- help: try: `let fout = &mut File::create("grouped.png").unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:242:32 [INFO] [stderr] | [INFO] [stderr] 242 | let (mut img, groups): (ImageBuffer, Vec>, Vec>) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | let ref mut fout = File::create("kmeans.png").unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^--------------------------------------- help: try: `let fout = &mut File::create("kmeans.png").unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:284:13 [INFO] [stderr] | [INFO] [stderr] 284 | let ref mut fout = File::create("ranks.png").unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^-------------------------------------- help: try: `let fout = &mut File::create("ranks.png").unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | fn dist(c1: &image::Rgb, c2: &image::Rgb) -> u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `image::Rgb` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:19:34 [INFO] [stderr] | [INFO] [stderr] 19 | fn dist(c1: &image::Rgb, c2: &image::Rgb) -> u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `image::Rgb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:21:14 [INFO] [stderr] | [INFO] [stderr] 21 | let d1 = if c1[0] > c2[0] { c1[0] - c2[0] } else { c2[0] - c1[0] } as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(if c1[0] > c2[0] { c1[0] - c2[0] } else { c2[0] - c1[0] })` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:22:14 [INFO] [stderr] | [INFO] [stderr] 22 | let d2 = if c1[1] > c2[1] { c1[1] - c2[1] } else { c2[1] - c1[1] } as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(if c1[1] > c2[1] { c1[1] - c2[1] } else { c2[1] - c1[1] })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:23:14 [INFO] [stderr] | [INFO] [stderr] 23 | let d3 = if c1[2] > c2[2] { c1[2] - c2[2] } else { c2[2] - c1[2] } as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(if c1[2] > c2[2] { c1[2] - c2[2] } else { c2[2] - c1[2] })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:33:21 [INFO] [stderr] | [INFO] [stderr] 33 | let stop_crit = (cmp::max(img.width(), img.height()) as f64).sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(cmp::max(img.width(), img.height()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `c` is only used to index `centers`. [INFO] [stderr] --> src/main.rs:51:22 [INFO] [stderr] | [INFO] [stderr] 51 | for c in 1..centers.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 51 | for in centers.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `c` is used to index `centers` [INFO] [stderr] --> src/main.rs:82:22 [INFO] [stderr] | [INFO] [stderr] 82 | for c in 0..clusters { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 82 | for (c, ) in centers.iter().enumerate().take(clusters) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:89:44 [INFO] [stderr] | [INFO] [stderr] 89 | center_totals[labels[i]][0] += pixel[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:90:44 [INFO] [stderr] | [INFO] [stderr] 90 | center_totals[labels[i]][1] += pixel[1] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:91:44 [INFO] [stderr] | [INFO] [stderr] 91 | center_totals[labels[i]][2] += pixel[2] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:123:21 [INFO] [stderr] | [INFO] [stderr] 123 | color: &Rgb, x1: u32, y1: u32, x2: u32, y2: u32) [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Rgb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:167:16 [INFO] [stderr] | [INFO] [stderr] 167 | red += pixel[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:168:18 [INFO] [stderr] | [INFO] [stderr] 168 | green += pixel[1] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | blue += pixel[2] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(pixel[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:171:18 [INFO] [stderr] | [INFO] [stderr] 171 | let pixels = img.width() as u64 * img.height() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(img.width())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:171:39 [INFO] [stderr] | [INFO] [stderr] 171 | let pixels = img.width() as u64 * img.height() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(img.height())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:211:33 [INFO] [stderr] | [INFO] [stderr] 211 | let (mut img, grouped): (ImageBuffer, Vec>, Vec>) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:220:13 [INFO] [stderr] | [INFO] [stderr] 220 | let ref mut fout = File::create("grouped.png").unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^---------------------------------------- help: try: `let fout = &mut File::create("grouped.png").unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:242:32 [INFO] [stderr] | [INFO] [stderr] 242 | let (mut img, groups): (ImageBuffer, Vec>, Vec>) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | let ref mut fout = File::create("kmeans.png").unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^--------------------------------------- help: try: `let fout = &mut File::create("kmeans.png").unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:284:13 [INFO] [stderr] | [INFO] [stderr] 284 | let ref mut fout = File::create("ranks.png").unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^-------------------------------------- help: try: `let fout = &mut File::create("ranks.png").unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 15.41s [INFO] running `"docker" "inspect" "05c21051500e5b51b30fb9334b1557173f5c7f805f748a0b15a2fd277db01c0f"` [INFO] running `"docker" "rm" "-f" "05c21051500e5b51b30fb9334b1557173f5c7f805f748a0b15a2fd277db01c0f"` [INFO] [stdout] 05c21051500e5b51b30fb9334b1557173f5c7f805f748a0b15a2fd277db01c0f