[INFO] updating cached repository codinguncut/adventofcode_2017 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/codinguncut/adventofcode_2017 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/codinguncut/adventofcode_2017" "work/ex/clippy-test-run/sources/stable/gh/codinguncut/adventofcode_2017"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/codinguncut/adventofcode_2017'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/codinguncut/adventofcode_2017" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/codinguncut/adventofcode_2017"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/codinguncut/adventofcode_2017'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c0128d2ad8d8979490f025ed6ba78b6a0641d032 [INFO] sha for GitHub repo codinguncut/adventofcode_2017: c0128d2ad8d8979490f025ed6ba78b6a0641d032 [INFO] validating manifest of codinguncut/adventofcode_2017 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 codinguncut/adventofcode_2017 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 codinguncut/adventofcode_2017 [INFO] finished frobbing codinguncut/adventofcode_2017 [INFO] frobbed toml for codinguncut/adventofcode_2017 written to work/ex/clippy-test-run/sources/stable/gh/codinguncut/adventofcode_2017/Cargo.toml [INFO] started frobbing codinguncut/adventofcode_2017 [INFO] finished frobbing codinguncut/adventofcode_2017 [INFO] frobbed toml for codinguncut/adventofcode_2017 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/codinguncut/adventofcode_2017/Cargo.toml [INFO] crate codinguncut/adventofcode_2017 has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting codinguncut/adventofcode_2017 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-1/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/gh/codinguncut/adventofcode_2017:/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] 513606fd897dc9998650b1a79534d6a488780083a3fc619a7854daf08242664d [INFO] running `"docker" "start" "-a" "513606fd897dc9998650b1a79534d6a488780083a3fc619a7854daf08242664d"` [INFO] [stderr] Checking regex v0.2.3 [INFO] [stderr] Checking rust_first v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/common.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | return contents.trim().to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `contents.trim().to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day3.rs:110:23 [INFO] [stderr] | [INFO] [stderr] 110 | let input : u32 = 361527; [INFO] [stderr] | ^^^^^^ help: consider: `361_527` [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] --> src/common.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | return contents.trim().to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `contents.trim().to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day3.rs:110:23 [INFO] [stderr] | [INFO] [stderr] 110 | let input : u32 = 361527; [INFO] [stderr] | ^^^^^^ help: consider: `361_527` [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: long literal lacking separators [INFO] [stderr] --> src/day3.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | let input : u32 = 361527; [INFO] [stderr] | ^^^^^^ help: consider: `361_527` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day3.rs:146:27 [INFO] [stderr] | [INFO] [stderr] 146 | let input : u32 = 361527; [INFO] [stderr] | ^^^^^^ help: consider: `361_527` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day3.rs:147:34 [INFO] [stderr] | [INFO] [stderr] 147 | assert_eq!(part2(input), 363010); [INFO] [stderr] | ^^^^^^ help: consider: `363_010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day5.rs:127:43 [INFO] [stderr] | [INFO] [stderr] 127 | assert_eq!(run(&mut state, true), 387096); [INFO] [stderr] | ^^^^^^ help: consider: `387_096` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day5.rs:134:44 [INFO] [stderr] | [INFO] [stderr] 134 | assert_eq!(run(&mut state, false), 28040648); [INFO] [stderr] | ^^^^^^^^ help: consider: `28_040_648` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day1.rs:15:14 [INFO] [stderr] | [INFO] [stderr] 15 | fn to_num(a: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/day1.rs:32:18 [INFO] [stderr] | [INFO] [stderr] 32 | let offset = &input.chars().count() / 2 as usize; [INFO] [stderr] | ----------------------^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `input.chars().count()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day3.rs:20:11 [INFO] [stderr] | [INFO] [stderr] 20 | fn odd(n: &u32) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/day3.rs:43:22 [INFO] [stderr] | [INFO] [stderr] 43 | let leg_length = (last_corner as f64).sqrt() as u32 + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(last_corner)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day3.rs:97:22 [INFO] [stderr] | [INFO] [stderr] 97 | .map(|n| cell_values.get(n).unwrap()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&cell_values[n]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day6.rs:8:24 [INFO] [stderr] | [INFO] [stderr] 8 | fn find_largest(banks: &Banks) -> usize { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day6.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | let blocks = *banks.get(which).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `banks[which]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day7.rs:83:12 [INFO] [stderr] | [INFO] [stderr] 83 | if program.children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!program.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/day7.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 101 | if program.children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!program.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: needlessly taken reference of both operands [INFO] [stderr] --> src/day7.rs:105:52 [INFO] [stderr] | [INFO] [stderr] 105 | if !child_weights.iter().all(|&(_, n)| &child_weights[0].1 == &n) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 105 | if !child_weights.iter().all(|&(_, n)| child_weights[0].1 == n) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day8.rs:10:22 [INFO] [stderr] | [INFO] [stderr] 10 | fn find_largest(vec: &StateVec) -> i32 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day1.rs:15:14 [INFO] [stderr] | [INFO] [stderr] 15 | fn to_num(a: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/day1.rs:32:18 [INFO] [stderr] | [INFO] [stderr] 32 | let offset = &input.chars().count() / 2 as usize; [INFO] [stderr] | ----------------------^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `input.chars().count()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/day1.rs:77:22 [INFO] [stderr] | [INFO] [stderr] 77 | let offset = &input.chars().count() / 2 as usize; [INFO] [stderr] | ----------------------^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `input.chars().count()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day3.rs:20:11 [INFO] [stderr] | [INFO] [stderr] 20 | fn odd(n: &u32) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/day3.rs:43:22 [INFO] [stderr] | [INFO] [stderr] 43 | let leg_length = (last_corner as f64).sqrt() as u32 + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(last_corner)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day3.rs:97:22 [INFO] [stderr] | [INFO] [stderr] 97 | .map(|n| cell_values.get(n).unwrap()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&cell_values[n]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day6.rs:8:24 [INFO] [stderr] | [INFO] [stderr] 8 | fn find_largest(banks: &Banks) -> usize { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day6.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | let blocks = *banks.get(which).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `banks[which]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day7.rs:83:12 [INFO] [stderr] | [INFO] [stderr] 83 | if program.children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!program.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/day7.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 101 | if program.children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!program.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: needlessly taken reference of both operands [INFO] [stderr] --> src/day7.rs:105:52 [INFO] [stderr] | [INFO] [stderr] 105 | if !child_weights.iter().all(|&(_, n)| &child_weights[0].1 == &n) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 105 | if !child_weights.iter().all(|&(_, n)| child_weights[0].1 == n) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day8.rs:10:22 [INFO] [stderr] | [INFO] [stderr] 10 | fn find_largest(vec: &StateVec) -> i32 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.32s [INFO] running `"docker" "inspect" "513606fd897dc9998650b1a79534d6a488780083a3fc619a7854daf08242664d"` [INFO] running `"docker" "rm" "-f" "513606fd897dc9998650b1a79534d6a488780083a3fc619a7854daf08242664d"` [INFO] [stdout] 513606fd897dc9998650b1a79534d6a488780083a3fc619a7854daf08242664d