[INFO] crate bmp_rs 0.0.9 is already in cache [INFO] extracting crate bmp_rs 0.0.9 into work/ex/clippy-test-run/sources/stable/reg/bmp_rs/0.0.9 [INFO] extracting crate bmp_rs 0.0.9 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/bmp_rs/0.0.9 [INFO] validating manifest of bmp_rs-0.0.9 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 bmp_rs-0.0.9 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 bmp_rs-0.0.9 [INFO] finished frobbing bmp_rs-0.0.9 [INFO] frobbed toml for bmp_rs-0.0.9 written to work/ex/clippy-test-run/sources/stable/reg/bmp_rs/0.0.9/Cargo.toml [INFO] started frobbing bmp_rs-0.0.9 [INFO] finished frobbing bmp_rs-0.0.9 [INFO] frobbed toml for bmp_rs-0.0.9 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/bmp_rs/0.0.9/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 bmp_rs-0.0.9 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/reg/bmp_rs/0.0.9:/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] ab2176103170c86b40e6f9abd2214c731768fed248709c92981c59abc63a5cdf [INFO] running `"docker" "start" "-a" "ab2176103170c86b40e6f9abd2214c731768fed248709c92981c59abc63a5cdf"` [INFO] [stderr] Checking bmp_rs v0.0.9 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `BigEndian` [INFO] [stderr] --> src/lib.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | BigEndian, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Microsoft` [INFO] [stderr] --> src/lib.rs:123:1 [INFO] [stderr] | [INFO] [stderr] 123 | / enum Version { [INFO] [stderr] 124 | | Microsoft2 = MSVERSION2_SIZE, [INFO] [stderr] 125 | | Microsoft3 = MSVERSION3_SIZE, [INFO] [stderr] 126 | | Microsoft4 = MSVERSION4_SIZE, [INFO] [stderr] 127 | | Microsoft5 = MSVERSION5_SIZE, [INFO] [stderr] 128 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:431:30 [INFO] [stderr] | [INFO] [stderr] 431 | red: 0xFF0000, [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_0000` [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: unused import: `BigEndian` [INFO] [stderr] --> src/lib.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | BigEndian, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Microsoft` [INFO] [stderr] --> src/lib.rs:123:1 [INFO] [stderr] | [INFO] [stderr] 123 | / enum Version { [INFO] [stderr] 124 | | Microsoft2 = MSVERSION2_SIZE, [INFO] [stderr] 125 | | Microsoft3 = MSVERSION3_SIZE, [INFO] [stderr] 126 | | Microsoft4 = MSVERSION4_SIZE, [INFO] [stderr] 127 | | Microsoft5 = MSVERSION5_SIZE, [INFO] [stderr] 128 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:431:30 [INFO] [stderr] | [INFO] [stderr] 431 | red: 0xFF0000, [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00FF_0000` [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: unused variable: `mask` [INFO] [stderr] --> src/lib.rs:496:58 [INFO] [stderr] | [INFO] [stderr] 496 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^ help: consider using `_mask` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mask` [INFO] [stderr] --> src/lib.rs:515:58 [INFO] [stderr] | [INFO] [stderr] 515 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^ help: consider using `_mask` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `palette` [INFO] [stderr] --> src/lib.rs:562:39 [INFO] [stderr] | [INFO] [stderr] 562 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^^^^ help: consider using `_palette` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `palette` [INFO] [stderr] --> src/lib.rs:595:39 [INFO] [stderr] | [INFO] [stderr] 595 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^^^^ help: consider using `_palette` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mask` [INFO] [stderr] --> src/lib.rs:595:58 [INFO] [stderr] | [INFO] [stderr] 595 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^ help: consider using `_mask` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `palette` [INFO] [stderr] --> src/lib.rs:610:39 [INFO] [stderr] | [INFO] [stderr] 610 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^^^^ help: consider using `_palette` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `planes` [INFO] [stderr] --> src/lib.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | planes: u16, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `ppm_x` [INFO] [stderr] --> src/lib.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | ppm_x: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `ppm_y` [INFO] [stderr] --> src/lib.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | ppm_y: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `important_colors` [INFO] [stderr] --> src/lib.rs:243:5 [INFO] [stderr] | [INFO] [stderr] 243 | important_colors: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `color_space_type` [INFO] [stderr] --> src/lib.rs:300:5 [INFO] [stderr] | [INFO] [stderr] 300 | color_space_type: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `red_x` [INFO] [stderr] --> src/lib.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | red_x: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `red_y` [INFO] [stderr] --> src/lib.rs:302:5 [INFO] [stderr] | [INFO] [stderr] 302 | red_y: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `red_z` [INFO] [stderr] --> src/lib.rs:303:5 [INFO] [stderr] | [INFO] [stderr] 303 | red_z: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `green_x` [INFO] [stderr] --> src/lib.rs:304:5 [INFO] [stderr] | [INFO] [stderr] 304 | green_x: i32, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `green_y` [INFO] [stderr] --> src/lib.rs:305:5 [INFO] [stderr] | [INFO] [stderr] 305 | green_y: i32, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `green_z` [INFO] [stderr] --> src/lib.rs:306:5 [INFO] [stderr] | [INFO] [stderr] 306 | green_z: i32, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `blue_x` [INFO] [stderr] --> src/lib.rs:307:5 [INFO] [stderr] | [INFO] [stderr] 307 | blue_x: i32, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `blue_y` [INFO] [stderr] --> src/lib.rs:308:5 [INFO] [stderr] | [INFO] [stderr] 308 | blue_y: i32, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `blue_z` [INFO] [stderr] --> src/lib.rs:309:5 [INFO] [stderr] | [INFO] [stderr] 309 | blue_z: i32, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `gamma_red` [INFO] [stderr] --> src/lib.rs:310:5 [INFO] [stderr] | [INFO] [stderr] 310 | gamma_red: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `gamma_green` [INFO] [stderr] --> src/lib.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | gamma_green: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `gamma_blue` [INFO] [stderr] --> src/lib.rs:312:5 [INFO] [stderr] | [INFO] [stderr] 312 | gamma_blue: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `intent` [INFO] [stderr] --> src/lib.rs:352:5 [INFO] [stderr] | [INFO] [stderr] 352 | intent: u32, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `data` [INFO] [stderr] --> src/lib.rs:353:5 [INFO] [stderr] | [INFO] [stderr] 353 | data: u32, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `size` [INFO] [stderr] --> src/lib.rs:354:5 [INFO] [stderr] | [INFO] [stderr] 354 | size: u32, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `reserved` [INFO] [stderr] --> src/lib.rs:355:5 [INFO] [stderr] | [INFO] [stderr] 355 | reserved: u32, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `extra` [INFO] [stderr] --> src/lib.rs:382:5 [INFO] [stderr] | [INFO] [stderr] 382 | extra: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `profile` [INFO] [stderr] --> src/lib.rs:383:5 [INFO] [stderr] | [INFO] [stderr] 383 | profile: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:161:23 [INFO] [stderr] | [INFO] [stderr] 161 | ( dimension[0] as i32, dimension[1] as i32 ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(dimension[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:161:44 [INFO] [stderr] | [INFO] [stderr] 161 | ( dimension[0] as i32, dimension[1] as i32 ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(dimension[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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib.rs:171:25 [INFO] [stderr] | [INFO] [stderr] 171 | let bottom_up = if height.signum() == 1 { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `height.signum() == 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/lib.rs:173:14 [INFO] [stderr] | [INFO] [stderr] 173 | .ok_or( DecodingError::new_io( "Invalid width." ) )? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| DecodingError::new_io( "Invalid width." ))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/lib.rs:175:14 [INFO] [stderr] | [INFO] [stderr] 175 | .ok_or( DecodingError::new_io( "Invalid height." ) )? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| DecodingError::new_io( "Invalid height." ))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:183:19 [INFO] [stderr] | [INFO] [stderr] 183 | let bpp = cursor.read_u16::()? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(cursor.read_u16::()?)` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:213:21 [INFO] [stderr] | [INFO] [stderr] 213 | let a = match has_alpha { [INFO] [stderr] | _____________________^ [INFO] [stderr] 214 | | true => x[3], [INFO] [stderr] 215 | | false => 255, [INFO] [stderr] 216 | | }; [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if has_alpha { x[3] } else { 255 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the `v @ _` pattern can be written as just `v` [INFO] [stderr] --> src/lib.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | v @ _ => return Err( DecodingError::new_io( [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:290:21 [INFO] [stderr] | [INFO] [stderr] 290 | let alpha = match has_alpha { [INFO] [stderr] | _____________________^ [INFO] [stderr] 291 | | true => cursor.read_u32::()?, [INFO] [stderr] 292 | | false => 0, [INFO] [stderr] 293 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if has_alpha { cursor.read_u32::()? } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the variable `x` is used as a loop counter. Consider using `for (x, item) in buf.enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:543:17 [INFO] [stderr] | [INFO] [stderr] 543 | for byte in buf { [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: the `max @ _` pattern can be written as just `max` [INFO] [stderr] --> src/lib.rs:557:9 [INFO] [stderr] | [INFO] [stderr] 557 | max @ _ => ( ( 255 * ( ( value & mask ) >> shr_count ) ) / max ) as u8, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `x` is used as a loop counter. Consider using `for (x, item) in buf.chunks( 2 ).enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:576:22 [INFO] [stderr] | [INFO] [stderr] 576 | for mut bytes in buf.chunks( 2 ) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:577:21 [INFO] [stderr] | [INFO] [stderr] 577 | let color = bytes.read_u16::().unwrap() as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes.read_u16::().unwrap())` [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 `x` is used as a loop counter. Consider using `for (x, item) in buf.chunks( 3 ).enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:599:18 [INFO] [stderr] | [INFO] [stderr] 599 | for bytes in buf.chunks( 3 ) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: the variable `x` is used as a loop counter. Consider using `for (x, item) in buf.chunks( 4 ).enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:624:22 [INFO] [stderr] | [INFO] [stderr] 624 | for mut bytes in buf.chunks( 4 ) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: the function has a cyclomatic complexity of 46 [INFO] [stderr] --> src/lib.rs:647:1 [INFO] [stderr] | [INFO] [stderr] 647 | / pub fn decode( [INFO] [stderr] 648 | | input: &mut io::Read, mut builder: TBuilder ) -> Result { [INFO] [stderr] 649 | | [INFO] [stderr] 650 | | // Read file header [INFO] [stderr] ... | [INFO] [stderr] 912 | | builder.build() [INFO] [stderr] 913 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib.rs:682:30 [INFO] [stderr] | [INFO] [stderr] 682 | Some( ref i ) => if i.compression.is_some() { true } else { false }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `i.compression.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:739:30 [INFO] [stderr] | [INFO] [stderr] 739 | let dx = buffer[ index ] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[ index ])` [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:740:30 [INFO] [stderr] | [INFO] [stderr] 740 | let dy = buffer[ index + 1 ] as i32 * row_mod; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[ index + 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/lib.rs:815:30 [INFO] [stderr] | [INFO] [stderr] 815 | let dx = buffer[ index ] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[ index ])` [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:816:30 [INFO] [stderr] | [INFO] [stderr] 816 | let dy = buffer[ index + 1 ] as i32 * row_mod; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[ index + 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] error: this `if` has identical blocks [INFO] [stderr] --> src/lib.rs:852:40 [INFO] [stderr] | [INFO] [stderr] 852 | } else if even { [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 853 | | if x >= width { [INFO] [stderr] 854 | | x = 0; [INFO] [stderr] 855 | | y = ( ( y as i32 ) + row_mod ) as u32; [INFO] [stderr] ... | [INFO] [stderr] 861 | | x += 1; [INFO] [stderr] 862 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/lib.rs:842:47 [INFO] [stderr] | [INFO] [stderr] 842 | if i < second_len - 1 { [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 843 | | if x >= width { [INFO] [stderr] 844 | | x = 0; [INFO] [stderr] 845 | | y = ( ( y as i32 ) + row_mod ) as u32; [INFO] [stderr] ... | [INFO] [stderr] 851 | | x += 1; [INFO] [stderr] 852 | | } else if even { [INFO] [stderr] | |_________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:881:33 [INFO] [stderr] | [INFO] [stderr] 881 | let color = match control { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 882 | | true => { [INFO] [stderr] 883 | | control = false; [INFO] [stderr] 884 | | &color2 [INFO] [stderr] ... | [INFO] [stderr] 889 | | }, [INFO] [stderr] 890 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 881 | let color = if control { [INFO] [stderr] 882 | control = false; [INFO] [stderr] 883 | &color2 [INFO] [stderr] 884 | } else { [INFO] [stderr] 885 | control = true; [INFO] [stderr] 886 | &color1 [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/lib.rs:937:13 [INFO] [stderr] | [INFO] [stderr] 937 | _ => panic!( "No IO Error" ), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/lib.rs:957:13 [INFO] [stderr] | [INFO] [stderr] 957 | _ => false, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mask` [INFO] [stderr] --> src/lib.rs:496:58 [INFO] [stderr] | [INFO] [stderr] 496 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^ help: consider using `_mask` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mask` [INFO] [stderr] --> src/lib.rs:515:58 [INFO] [stderr] | [INFO] [stderr] 515 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^ help: consider using `_mask` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `palette` [INFO] [stderr] --> src/lib.rs:562:39 [INFO] [stderr] | [INFO] [stderr] 562 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^^^^ help: consider using `_palette` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `palette` [INFO] [stderr] --> src/lib.rs:595:39 [INFO] [stderr] | [INFO] [stderr] 595 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^^^^ help: consider using `_palette` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mask` [INFO] [stderr] --> src/lib.rs:595:58 [INFO] [stderr] | [INFO] [stderr] 595 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^ help: consider using `_mask` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `palette` [INFO] [stderr] --> src/lib.rs:610:39 [INFO] [stderr] | [INFO] [stderr] 610 | width: u32, row: u32, buf: &[u8], palette: &[Color], mask: &BitfieldMask, builder: &mut TBuilder ) { [INFO] [stderr] | ^^^^^^^ help: consider using `_palette` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `error` [INFO] [stderr] --> src/lib.rs:956:37 [INFO] [stderr] | [INFO] [stderr] 956 | DecodingError::IOError( error ) => true, [INFO] [stderr] | ^^^^^ help: consider using `_error` instead [INFO] [stderr] [INFO] [stderr] error: Could not compile `bmp_rs`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: field is never used: `planes` [INFO] [stderr] --> src/lib.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | planes: u16, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `ppm_x` [INFO] [stderr] --> src/lib.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | ppm_x: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `ppm_y` [INFO] [stderr] --> src/lib.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | ppm_y: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `important_colors` [INFO] [stderr] --> src/lib.rs:243:5 [INFO] [stderr] | [INFO] [stderr] 243 | important_colors: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `color_space_type` [INFO] [stderr] --> src/lib.rs:300:5 [INFO] [stderr] | [INFO] [stderr] 300 | color_space_type: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `red_x` [INFO] [stderr] --> src/lib.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | red_x: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `red_y` [INFO] [stderr] --> src/lib.rs:302:5 [INFO] [stderr] | [INFO] [stderr] 302 | red_y: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `red_z` [INFO] [stderr] --> src/lib.rs:303:5 [INFO] [stderr] | [INFO] [stderr] 303 | red_z: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `green_x` [INFO] [stderr] --> src/lib.rs:304:5 [INFO] [stderr] | [INFO] [stderr] 304 | green_x: i32, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `green_y` [INFO] [stderr] --> src/lib.rs:305:5 [INFO] [stderr] | [INFO] [stderr] 305 | green_y: i32, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `green_z` [INFO] [stderr] --> src/lib.rs:306:5 [INFO] [stderr] | [INFO] [stderr] 306 | green_z: i32, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `blue_x` [INFO] [stderr] --> src/lib.rs:307:5 [INFO] [stderr] | [INFO] [stderr] 307 | blue_x: i32, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `blue_y` [INFO] [stderr] --> src/lib.rs:308:5 [INFO] [stderr] | [INFO] [stderr] 308 | blue_y: i32, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `blue_z` [INFO] [stderr] --> src/lib.rs:309:5 [INFO] [stderr] | [INFO] [stderr] 309 | blue_z: i32, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `gamma_red` [INFO] [stderr] --> src/lib.rs:310:5 [INFO] [stderr] | [INFO] [stderr] 310 | gamma_red: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `gamma_green` [INFO] [stderr] --> src/lib.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | gamma_green: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `gamma_blue` [INFO] [stderr] --> src/lib.rs:312:5 [INFO] [stderr] | [INFO] [stderr] 312 | gamma_blue: u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `intent` [INFO] [stderr] --> src/lib.rs:352:5 [INFO] [stderr] | [INFO] [stderr] 352 | intent: u32, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `data` [INFO] [stderr] --> src/lib.rs:353:5 [INFO] [stderr] | [INFO] [stderr] 353 | data: u32, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `size` [INFO] [stderr] --> src/lib.rs:354:5 [INFO] [stderr] | [INFO] [stderr] 354 | size: u32, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `reserved` [INFO] [stderr] --> src/lib.rs:355:5 [INFO] [stderr] | [INFO] [stderr] 355 | reserved: u32, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `extra` [INFO] [stderr] --> src/lib.rs:382:5 [INFO] [stderr] | [INFO] [stderr] 382 | extra: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `profile` [INFO] [stderr] --> src/lib.rs:383:5 [INFO] [stderr] | [INFO] [stderr] 383 | profile: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:161:23 [INFO] [stderr] | [INFO] [stderr] 161 | ( dimension[0] as i32, dimension[1] as i32 ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(dimension[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:161:44 [INFO] [stderr] | [INFO] [stderr] 161 | ( dimension[0] as i32, dimension[1] as i32 ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(dimension[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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib.rs:171:25 [INFO] [stderr] | [INFO] [stderr] 171 | let bottom_up = if height.signum() == 1 { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `height.signum() == 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/lib.rs:173:14 [INFO] [stderr] | [INFO] [stderr] 173 | .ok_or( DecodingError::new_io( "Invalid width." ) )? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| DecodingError::new_io( "Invalid width." ))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/lib.rs:175:14 [INFO] [stderr] | [INFO] [stderr] 175 | .ok_or( DecodingError::new_io( "Invalid height." ) )? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| DecodingError::new_io( "Invalid height." ))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:183:19 [INFO] [stderr] | [INFO] [stderr] 183 | let bpp = cursor.read_u16::()? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(cursor.read_u16::()?)` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:213:21 [INFO] [stderr] | [INFO] [stderr] 213 | let a = match has_alpha { [INFO] [stderr] | _____________________^ [INFO] [stderr] 214 | | true => x[3], [INFO] [stderr] 215 | | false => 255, [INFO] [stderr] 216 | | }; [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if has_alpha { x[3] } else { 255 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the `v @ _` pattern can be written as just `v` [INFO] [stderr] --> src/lib.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | v @ _ => return Err( DecodingError::new_io( [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:290:21 [INFO] [stderr] | [INFO] [stderr] 290 | let alpha = match has_alpha { [INFO] [stderr] | _____________________^ [INFO] [stderr] 291 | | true => cursor.read_u32::()?, [INFO] [stderr] 292 | | false => 0, [INFO] [stderr] 293 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if has_alpha { cursor.read_u32::()? } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the variable `x` is used as a loop counter. Consider using `for (x, item) in buf.enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:543:17 [INFO] [stderr] | [INFO] [stderr] 543 | for byte in buf { [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: the `max @ _` pattern can be written as just `max` [INFO] [stderr] --> src/lib.rs:557:9 [INFO] [stderr] | [INFO] [stderr] 557 | max @ _ => ( ( 255 * ( ( value & mask ) >> shr_count ) ) / max ) as u8, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `x` is used as a loop counter. Consider using `for (x, item) in buf.chunks( 2 ).enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:576:22 [INFO] [stderr] | [INFO] [stderr] 576 | for mut bytes in buf.chunks( 2 ) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:577:21 [INFO] [stderr] | [INFO] [stderr] 577 | let color = bytes.read_u16::().unwrap() as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes.read_u16::().unwrap())` [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 `x` is used as a loop counter. Consider using `for (x, item) in buf.chunks( 3 ).enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:599:18 [INFO] [stderr] | [INFO] [stderr] 599 | for bytes in buf.chunks( 3 ) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: the variable `x` is used as a loop counter. Consider using `for (x, item) in buf.chunks( 4 ).enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:624:22 [INFO] [stderr] | [INFO] [stderr] 624 | for mut bytes in buf.chunks( 4 ) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: the function has a cyclomatic complexity of 46 [INFO] [stderr] --> src/lib.rs:647:1 [INFO] [stderr] | [INFO] [stderr] 647 | / pub fn decode( [INFO] [stderr] 648 | | input: &mut io::Read, mut builder: TBuilder ) -> Result { [INFO] [stderr] 649 | | [INFO] [stderr] 650 | | // Read file header [INFO] [stderr] ... | [INFO] [stderr] 912 | | builder.build() [INFO] [stderr] 913 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib.rs:682:30 [INFO] [stderr] | [INFO] [stderr] 682 | Some( ref i ) => if i.compression.is_some() { true } else { false }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `i.compression.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:739:30 [INFO] [stderr] | [INFO] [stderr] 739 | let dx = buffer[ index ] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[ index ])` [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:740:30 [INFO] [stderr] | [INFO] [stderr] 740 | let dy = buffer[ index + 1 ] as i32 * row_mod; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[ index + 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/lib.rs:815:30 [INFO] [stderr] | [INFO] [stderr] 815 | let dx = buffer[ index ] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[ index ])` [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:816:30 [INFO] [stderr] | [INFO] [stderr] 816 | let dy = buffer[ index + 1 ] as i32 * row_mod; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[ index + 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] error: this `if` has identical blocks [INFO] [stderr] --> src/lib.rs:852:40 [INFO] [stderr] | [INFO] [stderr] 852 | } else if even { [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 853 | | if x >= width { [INFO] [stderr] 854 | | x = 0; [INFO] [stderr] 855 | | y = ( ( y as i32 ) + row_mod ) as u32; [INFO] [stderr] ... | [INFO] [stderr] 861 | | x += 1; [INFO] [stderr] 862 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/lib.rs:842:47 [INFO] [stderr] | [INFO] [stderr] 842 | if i < second_len - 1 { [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 843 | | if x >= width { [INFO] [stderr] 844 | | x = 0; [INFO] [stderr] 845 | | y = ( ( y as i32 ) + row_mod ) as u32; [INFO] [stderr] ... | [INFO] [stderr] 851 | | x += 1; [INFO] [stderr] 852 | | } else if even { [INFO] [stderr] | |_________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:881:33 [INFO] [stderr] | [INFO] [stderr] 881 | let color = match control { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 882 | | true => { [INFO] [stderr] 883 | | control = false; [INFO] [stderr] 884 | | &color2 [INFO] [stderr] ... | [INFO] [stderr] 889 | | }, [INFO] [stderr] 890 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 881 | let color = if control { [INFO] [stderr] 882 | control = false; [INFO] [stderr] 883 | &color2 [INFO] [stderr] 884 | } else { [INFO] [stderr] 885 | control = true; [INFO] [stderr] 886 | &color1 [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `bmp_rs`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "ab2176103170c86b40e6f9abd2214c731768fed248709c92981c59abc63a5cdf"` [INFO] running `"docker" "rm" "-f" "ab2176103170c86b40e6f9abd2214c731768fed248709c92981c59abc63a5cdf"` [INFO] [stdout] ab2176103170c86b40e6f9abd2214c731768fed248709c92981c59abc63a5cdf