[INFO] updating cached repository drojf/SpriteZip [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/drojf/SpriteZip [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/drojf/SpriteZip" "work/ex/clippy-test-run/sources/stable/gh/drojf/SpriteZip"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/drojf/SpriteZip'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/drojf/SpriteZip" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/drojf/SpriteZip"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/drojf/SpriteZip'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 463ee92e5218ebb20bf8e5cb07103863f1912b3e [INFO] sha for GitHub repo drojf/SpriteZip: 463ee92e5218ebb20bf8e5cb07103863f1912b3e [INFO] validating manifest of drojf/SpriteZip 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 drojf/SpriteZip 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 drojf/SpriteZip [INFO] finished frobbing drojf/SpriteZip [INFO] frobbed toml for drojf/SpriteZip written to work/ex/clippy-test-run/sources/stable/gh/drojf/SpriteZip/Cargo.toml [INFO] started frobbing drojf/SpriteZip [INFO] finished frobbing drojf/SpriteZip [INFO] frobbed toml for drojf/SpriteZip written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/drojf/SpriteZip/Cargo.toml [INFO] crate drojf/SpriteZip 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 drojf/SpriteZip against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/drojf/SpriteZip:/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] 549854c53ad48f28cf5812829d1b3b6ab3df249866ad364ab4a74c23a42e2fc2 [INFO] running `"docker" "start" "-a" "549854c53ad48f28cf5812829d1b3b6ab3df249866ad364ab4a74c23a42e2fc2"` [INFO] [stderr] Checking alloc-no-stdlib v1.3.0 [INFO] [stderr] Checking typed-arena v1.4.1 [INFO] [stderr] Checking miniz_oxide v0.1.3 [INFO] [stderr] Checking number_prefix v0.2.8 [INFO] [stderr] Compiling syn v0.14.2 [INFO] [stderr] Checking serde_json v1.0.20 [INFO] [stderr] Checking bincode v1.0.1 [INFO] [stderr] Checking jpeg-decoder v0.1.14 [INFO] [stderr] Checking zopfli v0.3.7 [INFO] [stderr] Checking brotli-decompressor v1.3.1 [INFO] [stderr] Compiling num-derive v0.2.2 [INFO] [stderr] Compiling serde_derive v1.0.66 [INFO] [stderr] Checking brotli v2.5.0 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking oxipng v1.0.4 [INFO] [stderr] Checking spritezip v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/common.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | file_type : file_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_type` [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: using `println!("")` [INFO] [stderr] --> src/compress.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/extract.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/common.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | file_type : file_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_type` [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: using `println!("")` [INFO] [stderr] --> src/compress.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/extract.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/common.rs:188:5 [INFO] [stderr] | [INFO] [stderr] 188 | return VerificationResult::ExactMatch; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `VerificationResult::ExactMatch` [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/common.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | return (value >> (which_byte * 8)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(value >> (which_byte * 8)) as u8` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:198:5 [INFO] [stderr] | [INFO] [stderr] 198 | return (value as u64) << (which_byte * 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(value as u64) << (which_byte * 8)` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:236:5 [INFO] [stderr] | [INFO] [stderr] 236 | return u8_buf_to_u32_big_endian(&png_width_bytes); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `u8_buf_to_u32_big_endian(&png_width_bytes)` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:323:5 [INFO] [stderr] | [INFO] [stderr] 323 | return retvec; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `retvec` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:341:5 [INFO] [stderr] | [INFO] [stderr] 341 | return retvec; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `retvec` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:467:5 [INFO] [stderr] | [INFO] [stderr] 467 | return Some(*prev_image.get_pixel(prev_x as u32, prev_y as u32)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(*prev_image.get_pixel(prev_x as u32, prev_y as u32))` [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: unneeded return statement [INFO] [stderr] --> src/compress.rs:318:5 [INFO] [stderr] | [INFO] [stderr] 318 | return crop_region [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `crop_region` [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: unused import: `Write` [INFO] [stderr] --> src/extract.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::{Read, Write, SeekFrom, Seek}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::default::Default` [INFO] [stderr] --> src/extract.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::default::Default; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/common.rs:188:5 [INFO] [stderr] | [INFO] [stderr] 188 | return VerificationResult::ExactMatch; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `VerificationResult::ExactMatch` [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/common.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | return (value >> (which_byte * 8)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(value >> (which_byte * 8)) as u8` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:198:5 [INFO] [stderr] | [INFO] [stderr] 198 | return (value as u64) << (which_byte * 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(value as u64) << (which_byte * 8)` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:236:5 [INFO] [stderr] | [INFO] [stderr] 236 | return u8_buf_to_u32_big_endian(&png_width_bytes); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `u8_buf_to_u32_big_endian(&png_width_bytes)` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:323:5 [INFO] [stderr] | [INFO] [stderr] 323 | return retvec; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `retvec` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:341:5 [INFO] [stderr] | [INFO] [stderr] 341 | return retvec; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `retvec` [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: unneeded return statement [INFO] [stderr] --> src/common.rs:467:5 [INFO] [stderr] | [INFO] [stderr] 467 | return Some(*prev_image.get_pixel(prev_x as u32, prev_y as u32)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(*prev_image.get_pixel(prev_x as u32, prev_y as u32))` [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: unneeded return statement [INFO] [stderr] --> src/compress.rs:318:5 [INFO] [stderr] | [INFO] [stderr] 318 | return crop_region [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `crop_region` [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: unused import: `Write` [INFO] [stderr] --> src/extract.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::{Read, Write, SeekFrom, Seek}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::default::Default` [INFO] [stderr] --> src/extract.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::default::Default; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `img_count` [INFO] [stderr] --> src/common.rs:134:10 [INFO] [stderr] | [INFO] [stderr] 134 | for (img_count, ent) in FileTypeIterator::new(input_folder, "png").enumerate() [INFO] [stderr] | ^^^^^^^^^ help: consider using `_img_count` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `debug_difference_count` is assigned to, but never used [INFO] [stderr] --> src/compress.rs:290:13 [INFO] [stderr] | [INFO] [stderr] 290 | let mut debug_difference_count = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_debug_difference_count` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `u8_buf_to_u32_big_endian` [INFO] [stderr] --> src/common.rs:223:1 [INFO] [stderr] | [INFO] [stderr] 223 | pub fn u8_buf_to_u32_big_endian(buf : &[u8; 4]) -> u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `u8_stream_to_u32_big_endian` [INFO] [stderr] --> src/common.rs:232:1 [INFO] [stderr] | [INFO] [stderr] 232 | pub fn u8_stream_to_u32_big_endian(reader : &mut Read) -> u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_png_dimensions` [INFO] [stderr] --> src/common.rs:240:1 [INFO] [stderr] | [INFO] [stderr] 240 | pub fn get_png_dimensions(reader : &mut Read) -> Result<(u32, u32), &'static str> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `scan_folder_for_max_png_size` [INFO] [stderr] --> src/common.rs:264:1 [INFO] [stderr] | [INFO] [stderr] 264 | pub fn scan_folder_for_max_png_size(input_folder : &str) -> (u32, u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `save_image_no_alpha` [INFO] [stderr] --> src/common.rs:290:1 [INFO] [stderr] | [INFO] [stderr] 290 | pub fn save_image_no_alpha(mut image : RgbaImage, save_path : &str) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `compress_image_to_buffer` [INFO] [stderr] --> src/common.rs:309:1 [INFO] [stderr] | [INFO] [stderr] 309 | pub fn compress_image_to_buffer(img: &image::RgbaImage) -> Vec [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `compress_buffer` [INFO] [stderr] --> src/common.rs:327:1 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn compress_buffer(img: &Vec) -> Vec [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CroppedImageBounds` [INFO] [stderr] --> src/compress.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | struct CroppedImageBounds { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `crop_function` [INFO] [stderr] --> src/compress.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | fn crop_function(img: &image::RgbaImage, offset : (u32, u32), max_width : u32, max_height : u32) -> (CroppedImageBounds, u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:20:26 [INFO] [stderr] | [INFO] [stderr] 20 | let prev_x_offset = (prev_image.width() as i64 - original_image.width() as i64)/2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(prev_image.width())` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:20:54 [INFO] [stderr] | [INFO] [stderr] 20 | let prev_x_offset = (prev_image.width() as i64 - original_image.width() as i64)/2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(original_image.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 i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:21:25 [INFO] [stderr] | [INFO] [stderr] 21 | let prev_y_offset = prev_image.height() as i64 - original_image.height() as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(prev_image.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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:21:54 [INFO] [stderr] | [INFO] [stderr] 21 | let prev_y_offset = prev_image.height() as i64 - original_image.height() as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(original_image.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: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:198:12 [INFO] [stderr] | [INFO] [stderr] 198 | return (value as u64) << (which_byte * 8); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(value)` [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 `i` is used to index `buf` [INFO] [stderr] --> src/common.rs:204:14 [INFO] [stderr] | [INFO] [stderr] 204 | for i in 0..8 [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] 204 | for (i, ) in buf.iter_mut().enumerate() [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/common.rs:212:42 [INFO] [stderr] | [INFO] [stderr] 212 | pub fn u8_buf_to_u64_little_endian(buf : &[u8; 8]) -> u64 [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 8]` [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: the loop variable `i` is used to index `buf` [INFO] [stderr] --> src/common.rs:215:14 [INFO] [stderr] | [INFO] [stderr] 215 | for i in 0..8 [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] 215 | for (i, ) in buf.iter().enumerate().take(8) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/common.rs:223:39 [INFO] [stderr] | [INFO] [stderr] 223 | pub fn u8_buf_to_u32_big_endian(buf : &[u8; 4]) -> u32 [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 4]` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | (buf[0] as u32) << 24 | [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:226:5 [INFO] [stderr] | [INFO] [stderr] 226 | (buf[1] as u32) << 16 | [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | (buf[2] as u32) << 8 | [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[3])` [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/common.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | compressor.write(&imgclone.into_vec()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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/common.rs:327:29 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn compress_buffer(img: &Vec) -> Vec [INFO] [stderr] | ^^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 327 | pub fn compress_buffer(img: &[u8]) -> Vec [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `img.clone()` to [INFO] [stderr] | [INFO] [stderr] 330 | let imgclone = img.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/common.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | compressor.write(&imgclone).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/common.rs:357:9 [INFO] [stderr] | [INFO] [stderr] 357 | / let mut safe_i = 0; [INFO] [stderr] 358 | | [INFO] [stderr] 359 | | // if dimensions given are 0,0, force dimensions to 1,1, then set i so that iterator [INFO] [stderr] 360 | | // will terminate immediately. This avoids a modulo (%) by zero error and does 0 iterations. [INFO] [stderr] ... | [INFO] [stderr] 363 | | safe_i = 2; [INFO] [stderr] 364 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let safe_i = if dimensions.0 == 0 || dimensions.1 == 0 { ..; 2 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:463:46 [INFO] [stderr] | [INFO] [stderr] 463 | if prev_x < 0 || prev_y < 0 || prev_x >= prev_image.width() as i64 || prev_y >= prev_image.height() as i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(prev_image.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 i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:463:85 [INFO] [stderr] | [INFO] [stderr] 463 | if prev_x < 0 || prev_y < 0 || prev_x >= prev_image.width() as i64 || prev_y >= prev_image.height() as i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(prev_image.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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/compress.rs:178:5 [INFO] [stderr] | [INFO] [stderr] 178 | archive_file.write(&[0; FILE_FORMAT_HEADER_LENGTH]).expect("Unable to allocate header space in file"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/compress.rs:236:5 [INFO] [stderr] | [INFO] [stderr] 236 | archive_file.write(&u64_to_u8_buf_little_endian(metadata_start)).expect("Unable to write header offset to file"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compress.rs:265:22 [INFO] [stderr] | [INFO] [stderr] 265 | let prev_x = x as i64 + x_offset_to_other_image; [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/compress.rs:266:22 [INFO] [stderr] | [INFO] [stderr] 266 | let prev_y = y as i64 + y_offset_to_other_image; [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(y)` [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/compress.rs:281:70 [INFO] [stderr] | [INFO] [stderr] 281 | print!("Diff: {} ", pretty_print_percent(debug_difference_count, original_image.width() as u64 * original_image.height() as u64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(original_image.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/compress.rs:281:102 [INFO] [stderr] | [INFO] [stderr] 281 | print!("Diff: {} ", pretty_print_percent(debug_difference_count, original_image.width() as u64 * original_image.height() as u64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(original_image.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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compress.rs:297:22 [INFO] [stderr] | [INFO] [stderr] 297 | let prev_x = original_image_x as i64 + x_offset_to_other_image; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(original_image_x)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/compress.rs:298:22 [INFO] [stderr] | [INFO] [stderr] 298 | let prev_y = original_image_y as i64 + y_offset_to_other_image; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(original_image_y)` [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/compress.rs:311:13 [INFO] [stderr] | [INFO] [stderr] 311 | image_compressor.write(&cropped_pixel.data).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/compress.rs:315:5 [INFO] [stderr] | [INFO] [stderr] 315 | bitmap_compressor.write(&difference).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/extract.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | brotli_file.read(&mut header).expect("Unable to read brotli file header"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/extract.rs:95:38 [INFO] [stderr] | [INFO] [stderr] 95 | match try_get_pixel((x as i64 + x_offset_to_prev_image, y as i64 + y_offset_to_prev_image), &prev_image) { [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/extract.rs:95:73 [INFO] [stderr] | [INFO] [stderr] 95 | match try_get_pixel((x as i64 + x_offset_to_prev_image, y as i64 + y_offset_to_prev_image), &prev_image) { [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(y)` [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 variable `pixel_count` is used as a loop counter. Consider using `for (pixel_count, item) in BlockXYIterator::new(50, (metadata.diff_width as usize, metadata.diff_height as usize)).enumerate()` or similar iterators [INFO] [stderr] --> src/extract.rs:104:22 [INFO] [stderr] | [INFO] [stderr] 104 | for (x,y) in BlockXYIterator::new(50, (metadata.diff_width as usize, metadata.diff_height as usize)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/extract.rs:130:25 [INFO] [stderr] | [INFO] [stderr] 130 | let ref mut w = std::io::BufWriter::new(&mut unoptimized_png_in_memory); [INFO] [stderr] | ----^^^^^^^^^----------------------------------------------------------- help: try: `let w = &mut std::io::BufWriter::new(&mut unoptimized_png_in_memory);` [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] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `spritezip`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused variable: `img_count` [INFO] [stderr] --> src/common.rs:134:10 [INFO] [stderr] | [INFO] [stderr] 134 | for (img_count, ent) in FileTypeIterator::new(input_folder, "png").enumerate() [INFO] [stderr] | ^^^^^^^^^ help: consider using `_img_count` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `debug_difference_count` is assigned to, but never used [INFO] [stderr] --> src/compress.rs:290:13 [INFO] [stderr] | [INFO] [stderr] 290 | let mut debug_difference_count = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_debug_difference_count` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `u8_buf_to_u32_big_endian` [INFO] [stderr] --> src/common.rs:223:1 [INFO] [stderr] | [INFO] [stderr] 223 | pub fn u8_buf_to_u32_big_endian(buf : &[u8; 4]) -> u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `u8_stream_to_u32_big_endian` [INFO] [stderr] --> src/common.rs:232:1 [INFO] [stderr] | [INFO] [stderr] 232 | pub fn u8_stream_to_u32_big_endian(reader : &mut Read) -> u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_png_dimensions` [INFO] [stderr] --> src/common.rs:240:1 [INFO] [stderr] | [INFO] [stderr] 240 | pub fn get_png_dimensions(reader : &mut Read) -> Result<(u32, u32), &'static str> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `scan_folder_for_max_png_size` [INFO] [stderr] --> src/common.rs:264:1 [INFO] [stderr] | [INFO] [stderr] 264 | pub fn scan_folder_for_max_png_size(input_folder : &str) -> (u32, u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `save_image_no_alpha` [INFO] [stderr] --> src/common.rs:290:1 [INFO] [stderr] | [INFO] [stderr] 290 | pub fn save_image_no_alpha(mut image : RgbaImage, save_path : &str) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `compress_image_to_buffer` [INFO] [stderr] --> src/common.rs:309:1 [INFO] [stderr] | [INFO] [stderr] 309 | pub fn compress_image_to_buffer(img: &image::RgbaImage) -> Vec [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `compress_buffer` [INFO] [stderr] --> src/common.rs:327:1 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn compress_buffer(img: &Vec) -> Vec [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CroppedImageBounds` [INFO] [stderr] --> src/compress.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | struct CroppedImageBounds { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `crop_function` [INFO] [stderr] --> src/compress.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | fn crop_function(img: &image::RgbaImage, offset : (u32, u32), max_width : u32, max_height : u32) -> (CroppedImageBounds, u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:20:26 [INFO] [stderr] | [INFO] [stderr] 20 | let prev_x_offset = (prev_image.width() as i64 - original_image.width() as i64)/2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(prev_image.width())` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:20:54 [INFO] [stderr] | [INFO] [stderr] 20 | let prev_x_offset = (prev_image.width() as i64 - original_image.width() as i64)/2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(original_image.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 i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:21:25 [INFO] [stderr] | [INFO] [stderr] 21 | let prev_y_offset = prev_image.height() as i64 - original_image.height() as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(prev_image.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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:21:54 [INFO] [stderr] | [INFO] [stderr] 21 | let prev_y_offset = prev_image.height() as i64 - original_image.height() as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(original_image.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: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:198:12 [INFO] [stderr] | [INFO] [stderr] 198 | return (value as u64) << (which_byte * 8); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(value)` [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 `i` is used to index `buf` [INFO] [stderr] --> src/common.rs:204:14 [INFO] [stderr] | [INFO] [stderr] 204 | for i in 0..8 [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] 204 | for (i, ) in buf.iter_mut().enumerate() [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/common.rs:212:42 [INFO] [stderr] | [INFO] [stderr] 212 | pub fn u8_buf_to_u64_little_endian(buf : &[u8; 8]) -> u64 [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 8]` [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: the loop variable `i` is used to index `buf` [INFO] [stderr] --> src/common.rs:215:14 [INFO] [stderr] | [INFO] [stderr] 215 | for i in 0..8 [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] 215 | for (i, ) in buf.iter().enumerate().take(8) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/common.rs:223:39 [INFO] [stderr] | [INFO] [stderr] 223 | pub fn u8_buf_to_u32_big_endian(buf : &[u8; 4]) -> u32 [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 4]` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | (buf[0] as u32) << 24 | [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:226:5 [INFO] [stderr] | [INFO] [stderr] 226 | (buf[1] as u32) << 16 | [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | (buf[2] as u32) << 8 | [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[3])` [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/common.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | compressor.write(&imgclone.into_vec()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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/common.rs:327:29 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn compress_buffer(img: &Vec) -> Vec [INFO] [stderr] | ^^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 327 | pub fn compress_buffer(img: &[u8]) -> Vec [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `img.clone()` to [INFO] [stderr] | [INFO] [stderr] 330 | let imgclone = img.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/common.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | compressor.write(&imgclone).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/common.rs:357:9 [INFO] [stderr] | [INFO] [stderr] 357 | / let mut safe_i = 0; [INFO] [stderr] 358 | | [INFO] [stderr] 359 | | // if dimensions given are 0,0, force dimensions to 1,1, then set i so that iterator [INFO] [stderr] 360 | | // will terminate immediately. This avoids a modulo (%) by zero error and does 0 iterations. [INFO] [stderr] ... | [INFO] [stderr] 363 | | safe_i = 2; [INFO] [stderr] 364 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let safe_i = if dimensions.0 == 0 || dimensions.1 == 0 { ..; 2 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:463:46 [INFO] [stderr] | [INFO] [stderr] 463 | if prev_x < 0 || prev_y < 0 || prev_x >= prev_image.width() as i64 || prev_y >= prev_image.height() as i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(prev_image.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 i64 may become silently lossy if types change [INFO] [stderr] --> src/common.rs:463:85 [INFO] [stderr] | [INFO] [stderr] 463 | if prev_x < 0 || prev_y < 0 || prev_x >= prev_image.width() as i64 || prev_y >= prev_image.height() as i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(prev_image.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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/compress.rs:178:5 [INFO] [stderr] | [INFO] [stderr] 178 | archive_file.write(&[0; FILE_FORMAT_HEADER_LENGTH]).expect("Unable to allocate header space in file"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/compress.rs:236:5 [INFO] [stderr] | [INFO] [stderr] 236 | archive_file.write(&u64_to_u8_buf_little_endian(metadata_start)).expect("Unable to write header offset to file"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compress.rs:265:22 [INFO] [stderr] | [INFO] [stderr] 265 | let prev_x = x as i64 + x_offset_to_other_image; [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/compress.rs:266:22 [INFO] [stderr] | [INFO] [stderr] 266 | let prev_y = y as i64 + y_offset_to_other_image; [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(y)` [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/compress.rs:281:70 [INFO] [stderr] | [INFO] [stderr] 281 | print!("Diff: {} ", pretty_print_percent(debug_difference_count, original_image.width() as u64 * original_image.height() as u64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(original_image.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/compress.rs:281:102 [INFO] [stderr] | [INFO] [stderr] 281 | print!("Diff: {} ", pretty_print_percent(debug_difference_count, original_image.width() as u64 * original_image.height() as u64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(original_image.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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compress.rs:297:22 [INFO] [stderr] | [INFO] [stderr] 297 | let prev_x = original_image_x as i64 + x_offset_to_other_image; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(original_image_x)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/compress.rs:298:22 [INFO] [stderr] | [INFO] [stderr] 298 | let prev_y = original_image_y as i64 + y_offset_to_other_image; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(original_image_y)` [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/compress.rs:311:13 [INFO] [stderr] | [INFO] [stderr] 311 | image_compressor.write(&cropped_pixel.data).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/compress.rs:315:5 [INFO] [stderr] | [INFO] [stderr] 315 | bitmap_compressor.write(&difference).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/extract.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | brotli_file.read(&mut header).expect("Unable to read brotli file header"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/extract.rs:95:38 [INFO] [stderr] | [INFO] [stderr] 95 | match try_get_pixel((x as i64 + x_offset_to_prev_image, y as i64 + y_offset_to_prev_image), &prev_image) { [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/extract.rs:95:73 [INFO] [stderr] | [INFO] [stderr] 95 | match try_get_pixel((x as i64 + x_offset_to_prev_image, y as i64 + y_offset_to_prev_image), &prev_image) { [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(y)` [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 variable `pixel_count` is used as a loop counter. Consider using `for (pixel_count, item) in BlockXYIterator::new(50, (metadata.diff_width as usize, metadata.diff_height as usize)).enumerate()` or similar iterators [INFO] [stderr] --> src/extract.rs:104:22 [INFO] [stderr] | [INFO] [stderr] 104 | for (x,y) in BlockXYIterator::new(50, (metadata.diff_width as usize, metadata.diff_height as usize)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/extract.rs:130:25 [INFO] [stderr] | [INFO] [stderr] 130 | let ref mut w = std::io::BufWriter::new(&mut unoptimized_png_in_memory); [INFO] [stderr] | ----^^^^^^^^^----------------------------------------------------------- help: try: `let w = &mut std::io::BufWriter::new(&mut unoptimized_png_in_memory);` [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] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `spritezip`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "549854c53ad48f28cf5812829d1b3b6ab3df249866ad364ab4a74c23a42e2fc2"` [INFO] running `"docker" "rm" "-f" "549854c53ad48f28cf5812829d1b3b6ab3df249866ad364ab4a74c23a42e2fc2"` [INFO] [stdout] 549854c53ad48f28cf5812829d1b3b6ab3df249866ad364ab4a74c23a42e2fc2