[INFO] crate cdg 0.1.0 is already in cache [INFO] extracting crate cdg 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/cdg/0.1.0 [INFO] extracting crate cdg 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cdg/0.1.0 [INFO] validating manifest of cdg-0.1.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of cdg-0.1.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing cdg-0.1.0 [INFO] finished frobbing cdg-0.1.0 [INFO] frobbed toml for cdg-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/cdg/0.1.0/Cargo.toml [INFO] started frobbing cdg-0.1.0 [INFO] finished frobbing cdg-0.1.0 [INFO] frobbed toml for cdg-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cdg/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting cdg-0.1.0 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cdg/0.1.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-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] a6d11bccd4dd2290c52d0f14d79dffd58ffaf9d1bf65a720228e4173eebd9afb [INFO] running `"docker" "start" "-a" "a6d11bccd4dd2290c52d0f14d79dffd58ffaf9d1bf65a720228e4173eebd9afb"` [INFO] [stderr] Checking cdg v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | content: content, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `content` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [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:288:13 [INFO] [stderr] | [INFO] [stderr] 288 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [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:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | content: content, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `content` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [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:288:13 [INFO] [stderr] | [INFO] [stderr] 288 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [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: unneeded return statement [INFO] [stderr] --> src/lib.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / return Tile{ [INFO] [stderr] 48 | | pos: (data[3] & 0x3F, data[2] & 0x1F), [INFO] [stderr] 49 | | color: (data[0] & 0x0F, data[1] & 0x0F), [INFO] [stderr] 50 | | content: content, [INFO] [stderr] 51 | | }; [INFO] [stderr] | |__________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 47 | Tile{ [INFO] [stderr] 48 | pos: (data[3] & 0x3F, data[2] & 0x1F), [INFO] [stderr] 49 | color: (data[0] & 0x0F, data[1] & 0x0F), [INFO] [stderr] 50 | content: content, [INFO] [stderr] 51 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:121:19 [INFO] [stderr] | [INFO] [stderr] 121 | RgbColor((data0 as u16 & 0x3F) << 6 | (data1 as u16 & 0x3F)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(data0)` [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/lib.rs:121:48 [INFO] [stderr] | [INFO] [stderr] 121 | RgbColor((data0 as u16 & 0x3F) << 6 | (data1 as u16 & 0x3F)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(data1)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | let r = r as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(r)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:128:17 [INFO] [stderr] | [INFO] [stderr] 128 | let g = g as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(g)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:129:17 [INFO] [stderr] | [INFO] [stderr] 129 | let b = b as u16; [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:136:14 [INFO] [stderr] | [INFO] [stderr] 136 | pub fn r(&self) -> u8 {expand4to8((self.0 >> 8) & 0xF)} [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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:138:14 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn g(&self) -> u8 {expand4to8((self.0 >> 4) & 0xF)} [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:140:14 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn b(&self) -> u8 {expand4to8((self.0 >> 0) & 0xF)} [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: the operation is ineffective. Consider reducing it to `self.0` [INFO] [stderr] --> src/lib.rs:140:39 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn b(&self) -> u8 {expand4to8((self.0 >> 0) & 0xF)} [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: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib.rs:293:5 [INFO] [stderr] | [INFO] [stderr] 293 | / pub fn next(&mut self) -> Option { [INFO] [stderr] 294 | | match self.reader.read_exact(&mut self.sector_buf) { [INFO] [stderr] 295 | | Ok(_) => Some(SectorIter::new(&self.sector_buf)), [INFO] [stderr] 296 | | Err(_) => None, [INFO] [stderr] 297 | | } [INFO] [stderr] 298 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / return Tile{ [INFO] [stderr] 48 | | pos: (data[3] & 0x3F, data[2] & 0x1F), [INFO] [stderr] 49 | | color: (data[0] & 0x0F, data[1] & 0x0F), [INFO] [stderr] 50 | | content: content, [INFO] [stderr] 51 | | }; [INFO] [stderr] | |__________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 47 | Tile{ [INFO] [stderr] 48 | pos: (data[3] & 0x3F, data[2] & 0x1F), [INFO] [stderr] 49 | color: (data[0] & 0x0F, data[1] & 0x0F), [INFO] [stderr] 50 | content: content, [INFO] [stderr] 51 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:121:19 [INFO] [stderr] | [INFO] [stderr] 121 | RgbColor((data0 as u16 & 0x3F) << 6 | (data1 as u16 & 0x3F)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(data0)` [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/lib.rs:121:48 [INFO] [stderr] | [INFO] [stderr] 121 | RgbColor((data0 as u16 & 0x3F) << 6 | (data1 as u16 & 0x3F)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(data1)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | let r = r as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(r)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:128:17 [INFO] [stderr] | [INFO] [stderr] 128 | let g = g as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(g)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:129:17 [INFO] [stderr] | [INFO] [stderr] 129 | let b = b as u16; [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:136:14 [INFO] [stderr] | [INFO] [stderr] 136 | pub fn r(&self) -> u8 {expand4to8((self.0 >> 8) & 0xF)} [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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:138:14 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn g(&self) -> u8 {expand4to8((self.0 >> 4) & 0xF)} [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:140:14 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn b(&self) -> u8 {expand4to8((self.0 >> 0) & 0xF)} [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: the operation is ineffective. Consider reducing it to `self.0` [INFO] [stderr] --> src/lib.rs:140:39 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn b(&self) -> u8 {expand4to8((self.0 >> 0) & 0xF)} [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: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib.rs:293:5 [INFO] [stderr] | [INFO] [stderr] 293 | / pub fn next(&mut self) -> Option { [INFO] [stderr] 294 | | match self.reader.read_exact(&mut self.sector_buf) { [INFO] [stderr] 295 | | Ok(_) => Some(SectorIter::new(&self.sector_buf)), [INFO] [stderr] 296 | | Err(_) => None, [INFO] [stderr] 297 | | } [INFO] [stderr] 298 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> examples/dump_cdg.rs:6:20 [INFO] [stderr] | [INFO] [stderr] 6 | let filename = std::env::args().skip(1).next().expect("Usage: $0 filename"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.40s [INFO] running `"docker" "inspect" "a6d11bccd4dd2290c52d0f14d79dffd58ffaf9d1bf65a720228e4173eebd9afb"` [INFO] running `"docker" "rm" "-f" "a6d11bccd4dd2290c52d0f14d79dffd58ffaf9d1bf65a720228e4173eebd9afb"` [INFO] [stdout] a6d11bccd4dd2290c52d0f14d79dffd58ffaf9d1bf65a720228e4173eebd9afb