[INFO] crate repng 0.2.2 is already in cache [INFO] extracting crate repng 0.2.2 into work/ex/clippy-test-run/sources/stable/reg/repng/0.2.2 [INFO] extracting crate repng 0.2.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/repng/0.2.2 [INFO] validating manifest of repng-0.2.2 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 repng-0.2.2 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 repng-0.2.2 [INFO] finished frobbing repng-0.2.2 [INFO] frobbed toml for repng-0.2.2 written to work/ex/clippy-test-run/sources/stable/reg/repng/0.2.2/Cargo.toml [INFO] started frobbing repng-0.2.2 [INFO] finished frobbing repng-0.2.2 [INFO] frobbed toml for repng-0.2.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/repng/0.2.2/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 repng-0.2.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/repng/0.2.2:/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] 2da6793cf87ef76547c221c45e3620a66cf8270e410b1791f5326c095000194a [INFO] running `"docker" "start" "-a" "2da6793cf87ef76547c221c45e3620a66cf8270e410b1791f5326c095000194a"` [INFO] [stderr] Checking repng v0.2.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/filter.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | len: len, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/filter.rs:69:25 [INFO] [stderr] | [INFO] [stderr] 69 | let (x, y) = (j - k, i - k); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/filter.rs:90:21 [INFO] [stderr] | [INFO] [stderr] 90 | let v = funcs[j](a, b, c); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | stride: stride, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stride` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | sink: sink, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `sink` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/filter.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | len: len, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/filter.rs:69:25 [INFO] [stderr] | [INFO] [stderr] 69 | let (x, y) = (j - k, i - k); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/filter.rs:90:21 [INFO] [stderr] | [INFO] [stderr] 90 | let v = funcs[j](a, b, c); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | stride: stride, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stride` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | sink: sink, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `sink` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:66:25 [INFO] [stderr] | [INFO] [stderr] 66 | |a, b, _| ((a as u16 + b as u16) / 2) as u8, [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(a)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:66:36 [INFO] [stderr] | [INFO] [stderr] 66 | |a, b, _| ((a as u16 + b as u16) / 2) as u8, [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(b)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:68:34 [INFO] [stderr] | [INFO] [stderr] 68 | let (i, j, k) = (a as i16, b as i16, c as i16); [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(a)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:68:44 [INFO] [stderr] | [INFO] [stderr] 68 | let (i, j, k) = (a as i16, b as i16, c as i16); [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(b)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:68:54 [INFO] [stderr] | [INFO] [stderr] 68 | let (i, j, k) = (a as i16, b as i16, c as i16); [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(c)` [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 operation is ineffective. Consider reducing it to `4*i` [INFO] [stderr] --> src/meta.rs:39:30 [INFO] [stderr] | [INFO] [stderr] 39 | plte[3*i + 0] = rgba[4*i + 0]; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `3*i` [INFO] [stderr] --> src/meta.rs:39:14 [INFO] [stderr] | [INFO] [stderr] 39 | plte[3*i + 0] = rgba[4*i + 0]; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/meta.rs:133:17 [INFO] [stderr] | [INFO] [stderr] 133 | 1 <= s.len() && [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/compress.rs:61:15 [INFO] [stderr] | [INFO] [stderr] 61 | while buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/compress.rs:92:16 [INFO] [stderr] | [INFO] [stderr] 92 | if buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:80:35 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn chunk(&mut self, kind: &[u8; 4], data: &[u8]) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 4]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:89:42 [INFO] [stderr] | [INFO] [stderr] 89 | fn sinking_chunk(sink: &mut W, kind: &[u8; 4], data: &[u8]) [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: length comparison to zero [INFO] [stderr] --> src/lib.rs:162:15 [INFO] [stderr] | [INFO] [stderr] 162 | while rows.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!rows.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:66:25 [INFO] [stderr] | [INFO] [stderr] 66 | |a, b, _| ((a as u16 + b as u16) / 2) as u8, [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(a)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:66:36 [INFO] [stderr] | [INFO] [stderr] 66 | |a, b, _| ((a as u16 + b as u16) / 2) as u8, [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(b)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:68:34 [INFO] [stderr] | [INFO] [stderr] 68 | let (i, j, k) = (a as i16, b as i16, c as i16); [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(a)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:68:44 [INFO] [stderr] | [INFO] [stderr] 68 | let (i, j, k) = (a as i16, b as i16, c as i16); [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(b)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/filter.rs:68:54 [INFO] [stderr] | [INFO] [stderr] 68 | let (i, j, k) = (a as i16, b as i16, c as i16); [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(c)` [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 operation is ineffective. Consider reducing it to `4*i` [INFO] [stderr] --> src/meta.rs:39:30 [INFO] [stderr] | [INFO] [stderr] 39 | plte[3*i + 0] = rgba[4*i + 0]; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `3*i` [INFO] [stderr] --> src/meta.rs:39:14 [INFO] [stderr] | [INFO] [stderr] 39 | plte[3*i + 0] = rgba[4*i + 0]; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/meta.rs:133:17 [INFO] [stderr] | [INFO] [stderr] 133 | 1 <= s.len() && [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/compress.rs:61:15 [INFO] [stderr] | [INFO] [stderr] 61 | while buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/compress.rs:92:16 [INFO] [stderr] | [INFO] [stderr] 92 | if buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:80:35 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn chunk(&mut self, kind: &[u8; 4], data: &[u8]) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 4]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:89:42 [INFO] [stderr] | [INFO] [stderr] 89 | fn sinking_chunk(sink: &mut W, kind: &[u8; 4], data: &[u8]) [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: length comparison to zero [INFO] [stderr] --> src/lib.rs:162:15 [INFO] [stderr] | [INFO] [stderr] 162 | while rows.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!rows.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `off` [INFO] [stderr] --> examples/simple.rs:24:21 [INFO] [stderr] | [INFO] [stderr] 24 | rainbow[off + 0] = r as u8; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.43s [INFO] running `"docker" "inspect" "2da6793cf87ef76547c221c45e3620a66cf8270e410b1791f5326c095000194a"` [INFO] running `"docker" "rm" "-f" "2da6793cf87ef76547c221c45e3620a66cf8270e410b1791f5326c095000194a"` [INFO] [stdout] 2da6793cf87ef76547c221c45e3620a66cf8270e410b1791f5326c095000194a