[INFO] updating cached repository akatakritos/adventofcode-2018-rust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/akatakritos/adventofcode-2018-rust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/akatakritos/adventofcode-2018-rust" "work/ex/clippy-test-run/sources/stable/gh/akatakritos/adventofcode-2018-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/akatakritos/adventofcode-2018-rust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/akatakritos/adventofcode-2018-rust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/akatakritos/adventofcode-2018-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/akatakritos/adventofcode-2018-rust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 16f9f75ff9cbe2f7f3dea2fb9199332de21066e4 [INFO] sha for GitHub repo akatakritos/adventofcode-2018-rust: 16f9f75ff9cbe2f7f3dea2fb9199332de21066e4 [INFO] validating manifest of akatakritos/adventofcode-2018-rust 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 akatakritos/adventofcode-2018-rust 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 akatakritos/adventofcode-2018-rust [INFO] finished frobbing akatakritos/adventofcode-2018-rust [INFO] frobbed toml for akatakritos/adventofcode-2018-rust written to work/ex/clippy-test-run/sources/stable/gh/akatakritos/adventofcode-2018-rust/Cargo.toml [INFO] started frobbing akatakritos/adventofcode-2018-rust [INFO] finished frobbing akatakritos/adventofcode-2018-rust [INFO] frobbed toml for akatakritos/adventofcode-2018-rust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/akatakritos/adventofcode-2018-rust/Cargo.toml [INFO] crate akatakritos/adventofcode-2018-rust 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 akatakritos/adventofcode-2018-rust 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/gh/akatakritos/adventofcode-2018-rust:/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] e6b1ff3ae579cbcc8a5c7d82ecfb6132f6b86fbcbb711c472faa16b99a65449f [INFO] running `"docker" "start" "-a" "e6b1ff3ae579cbcc8a5c7d82ecfb6132f6b86fbcbb711c472faa16b99a65449f"` [INFO] [stderr] Checking num-bigint v0.1.44 [INFO] [stderr] Checking chrono v0.4.6 [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking adventofcode v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking num v0.1.42 [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/day03/mod.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | count [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/day03/mod.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | let count = fabric [INFO] [stderr] | _________________^ [INFO] [stderr] 53 | | .iter() [INFO] [stderr] 54 | | .flat_map(|row| row.iter()) [INFO] [stderr] 55 | | .filter(|cell| *cell > &1) [INFO] [stderr] 56 | | .count(); [INFO] [stderr] | |________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/day05/mod.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | return diff == 32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `diff == 32` [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: unneeded return statement [INFO] [stderr] --> src/day05/mod.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | return c == unit || (c as i8 - unit as i8).abs() == 32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `c == unit || (c as i8 - unit as i8).abs() == 32` [INFO] [stderr] | [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/day06/mod.rs:126:33 [INFO] [stderr] | [INFO] [stderr] 126 | let mut shortest_distance = 10000000; [INFO] [stderr] | ^^^^^^^^ help: consider: `10_000_000` [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: unneeded return statement [INFO] [stderr] --> src/day08/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | return fs::read_to_string(filename).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::read_to_string(filename).unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] Checking spectral v0.6.0 [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day01/mod.rs:16:12 [INFO] [stderr] | [INFO] [stderr] 16 | if line.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!line.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/day02/mod.rs:76:12 [INFO] [stderr] | [INFO] [stderr] 76 | if line.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!line.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day02/mod.rs:84:22 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn checksum(ids: &Vec) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[BoxId]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day02/mod.rs:101:33 [INFO] [stderr] | [INFO] [stderr] 101 | pub fn find_correct_pair(boxes: &Vec) -> Option<(&BoxId, &BoxId)> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[BoxId]` [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] error: this loop never actually loops [INFO] [stderr] --> src/day03/fabricclaim.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | / for capture in RE.captures_iter(s) { [INFO] [stderr] 36 | | let id: i32 = capture[1].parse()?; [INFO] [stderr] 37 | | let left: i32 = capture[2].parse()?; [INFO] [stderr] 38 | | let top: i32 = capture[3].parse()?; [INFO] [stderr] ... | [INFO] [stderr] 48 | | }); [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day03/mod.rs:17:12 [INFO] [stderr] | [INFO] [stderr] 17 | if line.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!line.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day03/mod.rs:26:29 [INFO] [stderr] | [INFO] [stderr] 26 | fn find_needed_size(claims: &Vec) -> (i32, i32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[FabricClaim]` [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/day03/mod.rs:43:39 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn calculate_overlap_area(claims: &Vec) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[FabricClaim]` [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: taken reference of right operand [INFO] [stderr] --> src/day03/mod.rs:55:24 [INFO] [stderr] | [INFO] [stderr] 55 | .filter(|cell| *cell > &1) [INFO] [stderr] | ^^^^^^^^-- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `1` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day03/mod.rs:71:43 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn find_non_overlapping_claim(claims: &Vec) -> Option<&FabricClaim> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[FabricClaim]` [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/day03/mod.rs:89:52 [INFO] [stderr] | [INFO] [stderr] 89 | fn is_non_overlapping(claim: &FabricClaim, fabric: &Vec>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [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] error: this loop never actually loops [INFO] [stderr] --> src/day04/guard_log.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / for capture in RE.captures_iter(s) { [INFO] [stderr] 47 | | let utc = Utc.datetime_from_str(&capture[1], "%Y-%m-%d %H:%M")?; [INFO] [stderr] 48 | | let log_type = parse_guard_type(&capture[2])?; [INFO] [stderr] 49 | | [INFO] [stderr] 50 | | return Ok(GuardLog { utc, log_type }); [INFO] [stderr] 51 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/day04/guard_log.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / for capture in RE.captures_iter(s) { [INFO] [stderr] 70 | | let id: u32 = capture[1].parse()?; [INFO] [stderr] 71 | | return Ok(GuardLogType::BeginShift(id)); [INFO] [stderr] 72 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day04/mod.rs:21:12 [INFO] [stderr] | [INFO] [stderr] 21 | if line.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!line.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day04/mod.rs:30:35 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn find_sleepiest_guard(logs: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[GuardLog]` [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/day04/mod.rs:51:36 [INFO] [stderr] | [INFO] [stderr] 51 | pub fn find_sleepiest_minute(logs: &Vec, guard_id: u32) -> (u32, u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[GuardLog]` [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/day04/mod.rs:80:42 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn find_sleepiest_guard_minute(logs: &Vec) -> (u32, u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[GuardLog]` [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/day04/mod.rs:103:26 [INFO] [stderr] | [INFO] [stderr] 103 | fn sleep_intervals(logs: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[GuardLog]` [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/day05/mod.rs:13:35 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn compress_polarities(chars: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [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: length comparison to zero [INFO] [stderr] --> src/day05/mod.rs:18:12 [INFO] [stderr] | [INFO] [stderr] 18 | if result.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `result.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day05/mod.rs:37:29 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn find_shortest(chars: &Vec) -> (char, usize) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/day05/mod.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | let a = 'a' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/day05/mod.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | let z = 'z' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'z' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/day05/mod.rs:51:57 [INFO] [stderr] | [INFO] [stderr] 51 | } else if result.len() < shortest_size.unwrap() { [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 52 | | shortest_size = Some(result.len()); [INFO] [stderr] 53 | | shortest_unit = Some(unit as char); [INFO] [stderr] 54 | | } [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/day05/mod.rs:48:36 [INFO] [stderr] | [INFO] [stderr] 48 | if shortest_size.is_none() { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 49 | | shortest_size = Some(result.len()); [INFO] [stderr] 50 | | shortest_unit = Some(unit as char); [INFO] [stderr] 51 | | } else if result.len() < shortest_size.unwrap() { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day05/mod.rs:60:25 [INFO] [stderr] | [INFO] [stderr] 60 | fn clone_without(chars: &Vec, unit: char) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [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: the loop variable `x` is used to index `grid` [INFO] [stderr] --> src/day06/mod.rs:18:14 [INFO] [stderr] | [INFO] [stderr] 18 | for x in 0..grid.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] 18 | for (x, ) in grid.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `grid`. [INFO] [stderr] --> src/day06/mod.rs:26:14 [INFO] [stderr] | [INFO] [stderr] 26 | for x in 0..maxx { [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] 26 | for in grid.iter().take(maxx) { [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/day06/mod.rs:79:40 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn find_area_of_min_region(points: &Vec, max_distance: usize) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Point]` [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/day06/mod.rs:100:42 [INFO] [stderr] | [INFO] [stderr] 100 | fn find_total_manhattan_distance(points: &Vec, point: &Point) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Point]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day06/mod.rs:100:62 [INFO] [stderr] | [INFO] [stderr] 100 | fn find_total_manhattan_distance(points: &Vec, point: &Point) -> usize { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day06/mod.rs:104:24 [INFO] [stderr] | [INFO] [stderr] 104 | fn count_indexes(grid: &Vec>>, index: usize) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec>]` [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: the loop variable `x` is only used to index `grid`. [INFO] [stderr] --> src/day06/mod.rs:107:14 [INFO] [stderr] | [INFO] [stderr] 107 | for x in 0..grid.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] 107 | for in &grid { [INFO] [stderr] | ^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day06/mod.rs:118:27 [INFO] [stderr] | [INFO] [stderr] 118 | fn manhattan_distance(p1: &Point, p2: &Point) -> usize { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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/day06/mod.rs:118:39 [INFO] [stderr] | [INFO] [stderr] 118 | fn manhattan_distance(p1: &Point, p2: &Point) -> usize { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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 loop variable `i` is used to index `points` [INFO] [stderr] --> src/day06/mod.rs:129:14 [INFO] [stderr] | [INFO] [stderr] 129 | for i in 0..points.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] 129 | for (i, ) in points.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/day07/job.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / for capture in RE.captures_iter(s) { [INFO] [stderr] 40 | | let prereq = capture[1].chars().nth(0).unwrap(); [INFO] [stderr] 41 | | let name = capture[2].chars().nth(0).unwrap(); [INFO] [stderr] 42 | | [INFO] [stderr] 43 | | return Ok(Job { name, prereq }); [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/day07/mod.rs:12:47 [INFO] [stderr] | [INFO] [stderr] 12 | let node = nodes.entry(edge.name).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [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 `or_insert` followed by a function call [INFO] [stderr] --> src/day07/mod.rs:15:34 [INFO] [stderr] | [INFO] [stderr] 15 | nodes.entry(edge.prereq).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [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: length comparison to zero [INFO] [stderr] --> src/day07/mod.rs:28:30 [INFO] [stderr] | [INFO] [stderr] 28 | .filter(|(_, edges)| edges.len() == 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `edges.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/day07/mod.rs:32:11 [INFO] [stderr] | [INFO] [stderr] 32 | while s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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/day07/mod.rs:52:16 [INFO] [stderr] | [INFO] [stderr] 52 | if m_edges.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `m_edges.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/day07/mod.rs:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | self.queue.len() == 0 && self.workers.iter().all(|w| w.is_idle()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.queue.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day07/mod.rs:196:16 [INFO] [stderr] | [INFO] [stderr] 196 | queue: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [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/day07/mod.rs:198:15 [INFO] [stderr] | [INFO] [stderr] 198 | done: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [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: length comparison to zero [INFO] [stderr] --> src/day07/mod.rs:200:12 [INFO] [stderr] | [INFO] [stderr] 200 | if queue.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `queue.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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/day07/mod.rs:217:39 [INFO] [stderr] | [INFO] [stderr] 217 | base_cost + 1 + ((job as u8 - 'A' as u8) as usize) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day08/mod.rs:77:8 [INFO] [stderr] | [INFO] [stderr] 77 | if node.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `node.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: an inclusive range would be more readable [INFO] [stderr] --> src/day09/mod.rs:9:14 [INFO] [stderr] | [INFO] [stderr] 9 | for i in 1..last_marble + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `1..=last_marble` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `adventofcode`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "e6b1ff3ae579cbcc8a5c7d82ecfb6132f6b86fbcbb711c472faa16b99a65449f"` [INFO] running `"docker" "rm" "-f" "e6b1ff3ae579cbcc8a5c7d82ecfb6132f6b86fbcbb711c472faa16b99a65449f"` [INFO] [stdout] e6b1ff3ae579cbcc8a5c7d82ecfb6132f6b86fbcbb711c472faa16b99a65449f