[INFO] crate stperf 0.1.4 is already in cache [INFO] extracting crate stperf 0.1.4 into work/ex/clippy-test-run/sources/stable/reg/stperf/0.1.4 [INFO] extracting crate stperf 0.1.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stperf/0.1.4 [INFO] validating manifest of stperf-0.1.4 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 stperf-0.1.4 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 stperf-0.1.4 [INFO] finished frobbing stperf-0.1.4 [INFO] frobbed toml for stperf-0.1.4 written to work/ex/clippy-test-run/sources/stable/reg/stperf/0.1.4/Cargo.toml [INFO] started frobbing stperf-0.1.4 [INFO] finished frobbing stperf-0.1.4 [INFO] frobbed toml for stperf-0.1.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stperf/0.1.4/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 stperf-0.1.4 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-6/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/stperf/0.1.4:/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] 4f91c34c2342b92769cb63f58f780fd4fd037e17cbc5ead895b43364b15174e5 [INFO] running `"docker" "start" "-a" "4f91c34c2342b92769cb63f58f780fd4fd037e17cbc5ead895b43364b15174e5"` [INFO] [stderr] Checking stperf v0.1.4 (/opt/crater/workdir) [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/measurement.rs:146:16 [INFO] [stderr] | [INFO] [stderr] 146 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 147 | | if let Some(ref parent) = self.parent { [INFO] [stderr] 148 | | let parent = parent.get_mut(); [INFO] [stderr] 149 | | parent.get_ancestor(generation - 1) [INFO] [stderr] ... | [INFO] [stderr] 152 | | } [INFO] [stderr] 153 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 146 | } else if let Some(ref parent) = self.parent { [INFO] [stderr] 147 | let parent = parent.get_mut(); [INFO] [stderr] 148 | parent.get_ancestor(generation - 1) [INFO] [stderr] 149 | } else { [INFO] [stderr] 150 | None [INFO] [stderr] 151 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/measurement.rs:146:16 [INFO] [stderr] | [INFO] [stderr] 146 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 147 | | if let Some(ref parent) = self.parent { [INFO] [stderr] 148 | | let parent = parent.get_mut(); [INFO] [stderr] 149 | | parent.get_ancestor(generation - 1) [INFO] [stderr] ... | [INFO] [stderr] 152 | | } [INFO] [stderr] 153 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 146 | } else if let Some(ref parent) = self.parent { [INFO] [stderr] 147 | let parent = parent.get_mut(); [INFO] [stderr] 148 | parent.get_ancestor(generation - 1) [INFO] [stderr] 149 | } else { [INFO] [stderr] 150 | None [INFO] [stderr] 151 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/measurement.rs:24:14 [INFO] [stderr] | [INFO] [stderr] 24 | Some(MeasurementRef::from(parent.clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `MeasurementRef::from()`: `parent.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `children`. [INFO] [stderr] --> src/measurement.rs:67:14 [INFO] [stderr] | [INFO] [stderr] 67 | for i in 0..children.len() { [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] 67 | for in &children { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/measurement.rs:126:5 [INFO] [stderr] | [INFO] [stderr] 126 | / fn new(name: String, depth: usize, parent: Option) -> MeasurementRef { [INFO] [stderr] 127 | | MeasurementRef::from(Arc::new(Mutex::new(Measurement { [INFO] [stderr] 128 | | name, [INFO] [stderr] 129 | | depth, [INFO] [stderr] ... | [INFO] [stderr] 136 | | }))) [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/measurement.rs:132:21 [INFO] [stderr] | [INFO] [stderr] 132 | parent: parent.into(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider removing `.into()`: `parent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/measurement.rs:142:22 [INFO] [stderr] | [INFO] [stderr] 142 | Some(MeasurementRef::from(parent.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `MeasurementRef::from()`: `parent.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/measurement.rs:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | self.children.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.children.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/measurement.rs:170:20 [INFO] [stderr] | [INFO] [stderr] 170 | if leaf && self.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/measurement.rs:193:26 [INFO] [stderr] | [INFO] [stderr] 193 | total += duration.subsec_nanos() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(duration.subsec_nanos())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/measurement.rs:206:55 [INFO] [stderr] | [INFO] [stderr] 206 | self.overhead.as_secs() * 1_000_000_000 + self.overhead.subsec_nanos() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.overhead.subsec_nanos())` [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 `children` [INFO] [stderr] --> src/measurement.rs:239:18 [INFO] [stderr] | [INFO] [stderr] 239 | for i in 0..children.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 239 | for (i, ) in children.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/measurement.rs:240:20 [INFO] [stderr] | [INFO] [stderr] 240 | if let Err(_) = children[i].try_get_mut() { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 241 | | remove_index = Some(i); [INFO] [stderr] 242 | | break; [INFO] [stderr] 243 | | } [INFO] [stderr] | |_____________- help: try this: `if children[i].try_get_mut().is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/measurement.rs:24:14 [INFO] [stderr] | [INFO] [stderr] 24 | Some(MeasurementRef::from(parent.clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `MeasurementRef::from()`: `parent.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `children`. [INFO] [stderr] --> src/measurement.rs:67:14 [INFO] [stderr] | [INFO] [stderr] 67 | for i in 0..children.len() { [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] 67 | for in &children { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/measurement.rs:126:5 [INFO] [stderr] | [INFO] [stderr] 126 | / fn new(name: String, depth: usize, parent: Option) -> MeasurementRef { [INFO] [stderr] 127 | | MeasurementRef::from(Arc::new(Mutex::new(Measurement { [INFO] [stderr] 128 | | name, [INFO] [stderr] 129 | | depth, [INFO] [stderr] ... | [INFO] [stderr] 136 | | }))) [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/measurement.rs:132:21 [INFO] [stderr] | [INFO] [stderr] 132 | parent: parent.into(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider removing `.into()`: `parent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/measurement.rs:142:22 [INFO] [stderr] | [INFO] [stderr] 142 | Some(MeasurementRef::from(parent.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `MeasurementRef::from()`: `parent.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/measurement.rs:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | self.children.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.children.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/measurement.rs:170:20 [INFO] [stderr] | [INFO] [stderr] 170 | if leaf && self.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/measurement.rs:193:26 [INFO] [stderr] | [INFO] [stderr] 193 | total += duration.subsec_nanos() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(duration.subsec_nanos())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/measurement.rs:206:55 [INFO] [stderr] | [INFO] [stderr] 206 | self.overhead.as_secs() * 1_000_000_000 + self.overhead.subsec_nanos() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.overhead.subsec_nanos())` [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 `children` [INFO] [stderr] --> src/measurement.rs:239:18 [INFO] [stderr] | [INFO] [stderr] 239 | for i in 0..children.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 239 | for (i, ) in children.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/measurement.rs:240:20 [INFO] [stderr] | [INFO] [stderr] 240 | if let Err(_) = children[i].try_get_mut() { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 241 | | remove_index = Some(i); [INFO] [stderr] 242 | | break; [INFO] [stderr] 243 | | } [INFO] [stderr] | |_____________- help: try this: `if children[i].try_get_mut().is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.81s [INFO] running `"docker" "inspect" "4f91c34c2342b92769cb63f58f780fd4fd037e17cbc5ead895b43364b15174e5"` [INFO] running `"docker" "rm" "-f" "4f91c34c2342b92769cb63f58f780fd4fd037e17cbc5ead895b43364b15174e5"` [INFO] [stdout] 4f91c34c2342b92769cb63f58f780fd4fd037e17cbc5ead895b43364b15174e5