[INFO] crate mcq 0.1.0 is already in cache [INFO] extracting crate mcq 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/mcq/0.1.0 [INFO] extracting crate mcq 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mcq/0.1.0 [INFO] validating manifest of mcq-0.1.0 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 mcq-0.1.0 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 mcq-0.1.0 [INFO] finished frobbing mcq-0.1.0 [INFO] frobbed toml for mcq-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/mcq/0.1.0/Cargo.toml [INFO] started frobbing mcq-0.1.0 [INFO] finished frobbing mcq-0.1.0 [INFO] frobbed toml for mcq-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mcq/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 mcq-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/mcq/0.1.0:/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] 294b2ba308faddf5f55020616534fb0b9c12b0bdc7854f220b2249a33de06079 [INFO] running `"docker" "start" "-a" "294b2ba308faddf5f55020616534fb0b9c12b0bdc7854f220b2249a33de06079"` [INFO] [stderr] Checking mcq v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking num-bigint v0.1.44 [INFO] [stderr] Checking png v0.5.2 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | cnt: cnt, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cnt` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | red: red, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `red` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | grn: grn, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `grn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | blu: blu, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `blu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | cnt: cnt, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cnt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | lower: lower, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lower` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | upper: upper, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `upper` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | level: level, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `level` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:46:25 [INFO] [stderr] | [INFO] [stderr] 46 | rgb: (rgb & 0xFFFFFF), [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_FFFF` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:47:26 [INFO] [stderr] | [INFO] [stderr] 47 | blu: ((rgb & 0xFF0000) >> 16) as u8, [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | return dr * dr + dg * dg + db * db; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `dr * dr + dg * dg + db * db` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | return ColorDimension::Green; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ColorDimension::Green` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/lib.rs:237:30 [INFO] [stderr] | [INFO] [stderr] 237 | pixels_copy.push((0xFFFFFF & pixels_orig[i])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/lib.rs:237:30 [INFO] [stderr] | [INFO] [stderr] 237 | pixels_copy.push((0xFFFFFF & pixels_orig[i])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:237:31 [INFO] [stderr] | [INFO] [stderr] 237 | pixels_copy.push((0xFFFFFF & pixels_orig[i])); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | r_cols [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:325:22 [INFO] [stderr] | [INFO] [stderr] 325 | let r_cols = if cnum <= k_max as usize { [INFO] [stderr] | ______________________^ [INFO] [stderr] 326 | | // image has fewer colors than k_max [INFO] [stderr] 327 | | self.image_colors.clone() [INFO] [stderr] 328 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 348 | | self.average_colors(&color_set) [INFO] [stderr] 349 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:359:27 [INFO] [stderr] | [INFO] [stderr] 359 | let red = ((rgb & 0xFF0000) >> 16) as u8; [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:383:9 [INFO] [stderr] | [INFO] [stderr] 383 | return avg_colors; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `avg_colors` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:56:20 [INFO] [stderr] | [INFO] [stderr] 56 | rgb: ((red as u32 & 0xff) << 16) | ((grn as u32 & 0xff) << 8) | blu as u32 & 0xff, [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(red)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:56:50 [INFO] [stderr] | [INFO] [stderr] 56 | rgb: ((red as u32 & 0xff) << 16) | ((grn as u32 & 0xff) << 8) | blu as u32 & 0xff, [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(grn)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:56:77 [INFO] [stderr] | [INFO] [stderr] 56 | rgb: ((red as u32 & 0xff) << 16) | ((grn as u32 & 0xff) << 8) | blu as u32 & 0xff, [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(blu)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:67:18 [INFO] [stderr] | [INFO] [stderr] 67 | let dr = self.red as i32 - red as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(self.red)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:67:36 [INFO] [stderr] | [INFO] [stderr] 67 | let dr = self.red as i32 - red as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(red)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:68:18 [INFO] [stderr] | [INFO] [stderr] 68 | let dg = self.grn as i32 - grn as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(self.grn)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:68:36 [INFO] [stderr] | [INFO] [stderr] 68 | let dg = self.grn as i32 - grn as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(grn)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:69:18 [INFO] [stderr] | [INFO] [stderr] 69 | let db = self.blu as i32 - blu as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(self.blu)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:69:36 [INFO] [stderr] | [INFO] [stderr] 69 | let db = self.blu as i32 - blu as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(blu)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:89:62 [INFO] [stderr] | [INFO] [stderr] 89 | fn new(lower: usize, upper: usize, level: isize, colors: &Vec) -> ColorBox { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[ColorNode]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:107:32 [INFO] [stderr] | [INFO] [stderr] 107 | fn trim(&mut self, colors: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[ColorNode]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `colors`. [INFO] [stderr] --> src/lib.rs:116:18 [INFO] [stderr] | [INFO] [stderr] 116 | for i in self.lower..self.upper { [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] 116 | for in colors.iter().take(self.upper).skip(self.lower) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | self.count = self.count + color.cnt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.count += color.cnt` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:119:21 [INFO] [stderr] | [INFO] [stderr] 119 | let r = color.red as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(color.red)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:120:21 [INFO] [stderr] | [INFO] [stderr] 120 | let g = color.grn as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(color.grn)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:121:21 [INFO] [stderr] | [INFO] [stderr] 121 | let b = color.blu as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(color.blu)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:180:43 [INFO] [stderr] | [INFO] [stderr] 180 | ColorDimension::Red => colors[self.lower..(self.upper + 1)].sort_by(|a, b| a.red.cmp(&b.red)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `self.lower..=self.upper` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:181:45 [INFO] [stderr] | [INFO] [stderr] 181 | ColorDimension::Green => colors[self.lower..(self.upper + 1)].sort_by(|a, b| a.grn.cmp(&b.grn)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `self.lower..=self.upper` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:182:44 [INFO] [stderr] | [INFO] [stderr] 182 | ColorDimension::Blue => colors[self.lower..(self.upper + 1)].sort_by(|a, b| a.blu.cmp(&b.blu)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `self.lower..=self.upper` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the loop variable `median` is used to index `colors` [INFO] [stderr] --> src/lib.rs:189:23 [INFO] [stderr] | [INFO] [stderr] 189 | for median in self.lower..self.upper { [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] 189 | for (median, ) in colors.iter().enumerate().take(self.upper).skip(self.lower) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | n_pixels = n_pixels + colors[median].cnt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `n_pixels += colors[median].cnt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `colors`. [INFO] [stderr] --> src/lib.rs:203:18 [INFO] [stderr] | [INFO] [stderr] 203 | for i in self.lower..self.upper { [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] 203 | for in colors.iter().take(self.upper).skip(self.lower) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | r_sum = r_sum + cnt * ci.red as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `r_sum += cnt * ci.red as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:207:13 [INFO] [stderr] | [INFO] [stderr] 207 | g_sum = g_sum + cnt * ci.grn as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `g_sum += cnt * ci.grn as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:208:13 [INFO] [stderr] | [INFO] [stderr] 208 | b_sum = b_sum + cnt * ci.blu as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `b_sum += cnt * ci.blu as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:209:13 [INFO] [stderr] | [INFO] [stderr] 209 | n = n + cnt; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `n += cnt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `pixels_orig`. [INFO] [stderr] --> src/lib.rs:235:18 [INFO] [stderr] | [INFO] [stderr] 235 | for i in 0..n { [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] 235 | for in pixels_orig.iter().take(n) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `pixels_copy`. [INFO] [stderr] --> src/lib.rs:245:18 [INFO] [stderr] | [INFO] [stderr] 245 | for i in 0..pixels_copy.len() { [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] 245 | for in &pixels_copy { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `pixels_copy`. [INFO] [stderr] --> src/lib.rs:259:18 [INFO] [stderr] | [INFO] [stderr] 259 | for i in 0..pixels_copy.len() { [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] 259 | for in &pixels_copy { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/lib.rs:282:67 [INFO] [stderr] | [INFO] [stderr] 282 | let pixels = unsafe { ::std::slice::from_raw_parts::(::std::mem::transmute(&pixels[0]), pixels.len() / 4) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&pixels[0] as *const u8 as *const u32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:303:51 [INFO] [stderr] | [INFO] [stderr] 303 | pub fn quantize_image(&mut self, orig_pixels: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 303 | pub fn quantize_image(&mut self, orig_pixels: &[u32]) -> Vec { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `orig_pixels.clone()` to [INFO] [stderr] | [INFO] [stderr] 304 | let mut quant_pixels = orig_pixels.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `::new` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:329:61 [INFO] [stderr] | [INFO] [stderr] 329 | let initial_box = ColorBox::new(0, cnum - 1, 0, &mut self.image_colors); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:344:21 [INFO] [stderr] | [INFO] [stderr] 344 | k = k + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `k += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:375:47 [INFO] [stderr] | [INFO] [stderr] 375 | fn average_colors(&mut self, color_boxes: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[ColorBox]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking image v0.10.4 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | cnt: cnt, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cnt` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | red: red, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `red` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | grn: grn, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `grn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | blu: blu, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `blu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | cnt: cnt, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cnt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | lower: lower, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lower` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | upper: upper, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `upper` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | level: level, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `level` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:46:25 [INFO] [stderr] | [INFO] [stderr] 46 | rgb: (rgb & 0xFFFFFF), [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_FFFF` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:47:26 [INFO] [stderr] | [INFO] [stderr] 47 | blu: ((rgb & 0xFF0000) >> 16) as u8, [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | return dr * dr + dg * dg + db * db; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `dr * dr + dg * dg + db * db` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | return ColorDimension::Green; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ColorDimension::Green` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/lib.rs:237:30 [INFO] [stderr] | [INFO] [stderr] 237 | pixels_copy.push((0xFFFFFF & pixels_orig[i])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/lib.rs:237:30 [INFO] [stderr] | [INFO] [stderr] 237 | pixels_copy.push((0xFFFFFF & pixels_orig[i])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:237:31 [INFO] [stderr] | [INFO] [stderr] 237 | pixels_copy.push((0xFFFFFF & pixels_orig[i])); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | r_cols [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:325:22 [INFO] [stderr] | [INFO] [stderr] 325 | let r_cols = if cnum <= k_max as usize { [INFO] [stderr] | ______________________^ [INFO] [stderr] 326 | | // image has fewer colors than k_max [INFO] [stderr] 327 | | self.image_colors.clone() [INFO] [stderr] 328 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 348 | | self.average_colors(&color_set) [INFO] [stderr] 349 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:359:27 [INFO] [stderr] | [INFO] [stderr] 359 | let red = ((rgb & 0xFF0000) >> 16) as u8; [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:383:9 [INFO] [stderr] | [INFO] [stderr] 383 | return avg_colors; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `avg_colors` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:56:20 [INFO] [stderr] | [INFO] [stderr] 56 | rgb: ((red as u32 & 0xff) << 16) | ((grn as u32 & 0xff) << 8) | blu as u32 & 0xff, [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(red)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:56:50 [INFO] [stderr] | [INFO] [stderr] 56 | rgb: ((red as u32 & 0xff) << 16) | ((grn as u32 & 0xff) << 8) | blu as u32 & 0xff, [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(grn)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:56:77 [INFO] [stderr] | [INFO] [stderr] 56 | rgb: ((red as u32 & 0xff) << 16) | ((grn as u32 & 0xff) << 8) | blu as u32 & 0xff, [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(blu)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:67:18 [INFO] [stderr] | [INFO] [stderr] 67 | let dr = self.red as i32 - red as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(self.red)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:67:36 [INFO] [stderr] | [INFO] [stderr] 67 | let dr = self.red as i32 - red as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(red)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:68:18 [INFO] [stderr] | [INFO] [stderr] 68 | let dg = self.grn as i32 - grn as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(self.grn)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:68:36 [INFO] [stderr] | [INFO] [stderr] 68 | let dg = self.grn as i32 - grn as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(grn)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:69:18 [INFO] [stderr] | [INFO] [stderr] 69 | let db = self.blu as i32 - blu as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(self.blu)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:69:36 [INFO] [stderr] | [INFO] [stderr] 69 | let db = self.blu as i32 - blu as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(blu)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:89:62 [INFO] [stderr] | [INFO] [stderr] 89 | fn new(lower: usize, upper: usize, level: isize, colors: &Vec) -> ColorBox { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[ColorNode]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:107:32 [INFO] [stderr] | [INFO] [stderr] 107 | fn trim(&mut self, colors: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[ColorNode]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `colors`. [INFO] [stderr] --> src/lib.rs:116:18 [INFO] [stderr] | [INFO] [stderr] 116 | for i in self.lower..self.upper { [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] 116 | for in colors.iter().take(self.upper).skip(self.lower) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | self.count = self.count + color.cnt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.count += color.cnt` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:119:21 [INFO] [stderr] | [INFO] [stderr] 119 | let r = color.red as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(color.red)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:120:21 [INFO] [stderr] | [INFO] [stderr] 120 | let g = color.grn as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(color.grn)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:121:21 [INFO] [stderr] | [INFO] [stderr] 121 | let b = color.blu as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(color.blu)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:180:43 [INFO] [stderr] | [INFO] [stderr] 180 | ColorDimension::Red => colors[self.lower..(self.upper + 1)].sort_by(|a, b| a.red.cmp(&b.red)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `self.lower..=self.upper` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:181:45 [INFO] [stderr] | [INFO] [stderr] 181 | ColorDimension::Green => colors[self.lower..(self.upper + 1)].sort_by(|a, b| a.grn.cmp(&b.grn)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `self.lower..=self.upper` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:182:44 [INFO] [stderr] | [INFO] [stderr] 182 | ColorDimension::Blue => colors[self.lower..(self.upper + 1)].sort_by(|a, b| a.blu.cmp(&b.blu)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `self.lower..=self.upper` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the loop variable `median` is used to index `colors` [INFO] [stderr] --> src/lib.rs:189:23 [INFO] [stderr] | [INFO] [stderr] 189 | for median in self.lower..self.upper { [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] 189 | for (median, ) in colors.iter().enumerate().take(self.upper).skip(self.lower) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | n_pixels = n_pixels + colors[median].cnt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `n_pixels += colors[median].cnt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `colors`. [INFO] [stderr] --> src/lib.rs:203:18 [INFO] [stderr] | [INFO] [stderr] 203 | for i in self.lower..self.upper { [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] 203 | for in colors.iter().take(self.upper).skip(self.lower) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | r_sum = r_sum + cnt * ci.red as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `r_sum += cnt * ci.red as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:207:13 [INFO] [stderr] | [INFO] [stderr] 207 | g_sum = g_sum + cnt * ci.grn as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `g_sum += cnt * ci.grn as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:208:13 [INFO] [stderr] | [INFO] [stderr] 208 | b_sum = b_sum + cnt * ci.blu as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `b_sum += cnt * ci.blu as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:209:13 [INFO] [stderr] | [INFO] [stderr] 209 | n = n + cnt; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `n += cnt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `pixels_orig`. [INFO] [stderr] --> src/lib.rs:235:18 [INFO] [stderr] | [INFO] [stderr] 235 | for i in 0..n { [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] 235 | for in pixels_orig.iter().take(n) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `pixels_copy`. [INFO] [stderr] --> src/lib.rs:245:18 [INFO] [stderr] | [INFO] [stderr] 245 | for i in 0..pixels_copy.len() { [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] 245 | for in &pixels_copy { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `pixels_copy`. [INFO] [stderr] --> src/lib.rs:259:18 [INFO] [stderr] | [INFO] [stderr] 259 | for i in 0..pixels_copy.len() { [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] 259 | for in &pixels_copy { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/lib.rs:282:67 [INFO] [stderr] | [INFO] [stderr] 282 | let pixels = unsafe { ::std::slice::from_raw_parts::(::std::mem::transmute(&pixels[0]), pixels.len() / 4) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&pixels[0] as *const u8 as *const u32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:303:51 [INFO] [stderr] | [INFO] [stderr] 303 | pub fn quantize_image(&mut self, orig_pixels: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 303 | pub fn quantize_image(&mut self, orig_pixels: &[u32]) -> Vec { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `orig_pixels.clone()` to [INFO] [stderr] | [INFO] [stderr] 304 | let mut quant_pixels = orig_pixels.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `::new` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:329:61 [INFO] [stderr] | [INFO] [stderr] 329 | let initial_box = ColorBox::new(0, cnum - 1, 0, &mut self.image_colors); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:344:21 [INFO] [stderr] | [INFO] [stderr] 344 | k = k + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `k += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:375:47 [INFO] [stderr] | [INFO] [stderr] 375 | fn average_colors(&mut self, color_boxes: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[ColorBox]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> examples/image_file.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> examples/image_file.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | let ref mut fout = File::create(format!("./target/{}.png", [INFO] [stderr] | ^^^^^^^^^^^^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 71 | let fout = &mut File::create(format!("./target/{}.png", [INFO] [stderr] 72 | Path::new(file).file_name().unwrap().to_str().unwrap()) [INFO] [stderr] 73 | .as_str()) [INFO] [stderr] 74 | .unwrap(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 15.34s [INFO] running `"docker" "inspect" "294b2ba308faddf5f55020616534fb0b9c12b0bdc7854f220b2249a33de06079"` [INFO] running `"docker" "rm" "-f" "294b2ba308faddf5f55020616534fb0b9c12b0bdc7854f220b2249a33de06079"` [INFO] [stdout] 294b2ba308faddf5f55020616534fb0b9c12b0bdc7854f220b2249a33de06079