[INFO] updating cached repository EdeMeijer/aoc2018 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/EdeMeijer/aoc2018 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/EdeMeijer/aoc2018" "work/ex/clippy-test-run/sources/stable/gh/EdeMeijer/aoc2018"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/EdeMeijer/aoc2018'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/EdeMeijer/aoc2018" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/EdeMeijer/aoc2018"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/EdeMeijer/aoc2018'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] da50b4ffb728fc28f0c61cd3587783982833a4e9 [INFO] sha for GitHub repo EdeMeijer/aoc2018: da50b4ffb728fc28f0c61cd3587783982833a4e9 [INFO] validating manifest of EdeMeijer/aoc2018 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 EdeMeijer/aoc2018 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 EdeMeijer/aoc2018 [INFO] finished frobbing EdeMeijer/aoc2018 [INFO] frobbed toml for EdeMeijer/aoc2018 written to work/ex/clippy-test-run/sources/stable/gh/EdeMeijer/aoc2018/Cargo.toml [INFO] started frobbing EdeMeijer/aoc2018 [INFO] finished frobbing EdeMeijer/aoc2018 [INFO] frobbed toml for EdeMeijer/aoc2018 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/EdeMeijer/aoc2018/Cargo.toml [INFO] crate EdeMeijer/aoc2018 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 EdeMeijer/aoc2018 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/EdeMeijer/aoc2018:/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] 3a18e4f2752abcf15a7340cdf68f6af71bb474e48e61b01b3756c61c92d287d6 [INFO] running `"docker" "start" "-a" "3a18e4f2752abcf15a7340cdf68f6af71bb474e48e61b01b3756c61c92d287d6"` [INFO] [stderr] Checking aoc2018 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/days/day14.rs:5:32 [INFO] [stderr] | [INFO] [stderr] 5 | println!("{}", solve_part1(147061)); [INFO] [stderr] | ^^^^^^ help: consider: `147_061` [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/days/day9.rs:39:37 [INFO] [stderr] | [INFO] [stderr] 39 | assert_eq!(solve(13, 7999), 146373); [INFO] [stderr] | ^^^^^^ help: consider: `146_373` [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/days/day13.rs:262:9 [INFO] [stderr] | [INFO] [stderr] 262 | / return String::from(r" [INFO] [stderr] 263 | | /->-\ [INFO] [stderr] 264 | | | | /----\ [INFO] [stderr] 265 | | | /-+--+-\ | [INFO] [stderr] 266 | | | | | | v | [INFO] [stderr] 267 | | \-+-/ \-+--/ [INFO] [stderr] 268 | | \------/ "); [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] 262 | String::from(r" [INFO] [stderr] 263 | /->-\ [INFO] [stderr] 264 | | | /----\ [INFO] [stderr] 265 | | /-+--+-\ | [INFO] [stderr] 266 | | | | | v | [INFO] [stderr] 267 | \-+-/ \-+--/ [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/days/day13.rs:272:9 [INFO] [stderr] | [INFO] [stderr] 272 | / return String::from(r" [INFO] [stderr] 273 | | />-<\ [INFO] [stderr] 274 | | | | [INFO] [stderr] 275 | | | /<+-\ [INFO] [stderr] ... | [INFO] [stderr] 278 | | | ^ [INFO] [stderr] 279 | | \<->/"); [INFO] [stderr] | |__________^ [INFO] [stderr] | [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] 272 | String::from(r" [INFO] [stderr] 273 | />-<\ [INFO] [stderr] 274 | | | [INFO] [stderr] 275 | | /<+-\ [INFO] [stderr] 276 | | | | v [INFO] [stderr] 277 | \>+ src/days/day14.rs:5:32 [INFO] [stderr] | [INFO] [stderr] 5 | println!("{}", solve_part1(147061)); [INFO] [stderr] | ^^^^^^ help: consider: `147_061` [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: this is a decimal constant [INFO] [stderr] --> src/days/day14.rs:98:36 [INFO] [stderr] | [INFO] [stderr] 98 | assert_eq!(solve_part1(5), 0124515891); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 98 | assert_eq!(solve_part1(5), 124515891); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 98 | assert_eq!(solve_part1(5), 0o124515891); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/days/day14.rs:98:36 [INFO] [stderr] | [INFO] [stderr] 98 | assert_eq!(solve_part1(5), 0124515891); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0_124_515_891` [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/days/day14.rs:99:37 [INFO] [stderr] | [INFO] [stderr] 99 | assert_eq!(solve_part1(18), 9251071085); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `9_251_071_085` [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/days/day14.rs:100:39 [INFO] [stderr] | [INFO] [stderr] 100 | assert_eq!(solve_part1(2018), 5941429882); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `5_941_429_882` [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/days/day4.rs:77:31 [INFO] [stderr] | [INFO] [stderr] 77 | fn count_sleep_minutes(dates: &Vec) -> HashMap { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Date]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/days/day4.rs:101:18 [INFO] [stderr] | [INFO] [stderr] 101 | .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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day5.rs:35:23 [INFO] [stderr] | [INFO] [stderr] 35 | fn solve_part1(units: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Unit]` [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/days/day5.rs:39:23 [INFO] [stderr] | [INFO] [stderr] 39 | fn solve_part2(units: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Unit]` [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/days/day5.rs:49:18 [INFO] [stderr] | [INFO] [stderr] 49 | fn reduce(units: &Vec, ignore: Option) -> u32 { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Unit]` [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: identical conversion [INFO] [stderr] --> src/days/day5.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | input.trim().chars().into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `input.trim().chars()` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day6.rs:69:48 [INFO] [stderr] | [INFO] [stderr] 69 | fn get_coord_distances(x: i32, y: i32, coords: &Coords) -> Vec { [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/days/day6.rs:75:31 [INFO] [stderr] | [INFO] [stderr] 75 | fn get_initial_bounds(coords: &Coords) -> (i32, i32, i32, 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: identical conversion [INFO] [stderr] --> src/days/day6.rs:94:18 [INFO] [stderr] | [INFO] [stderr] 94 | .map(|l| l [INFO] [stderr] | __________________^ [INFO] [stderr] 95 | | .split(", ") [INFO] [stderr] 96 | | .into_iter() [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into_iter()` [INFO] [stderr] | [INFO] [stderr] 94 | .map(|l| l [INFO] [stderr] 95 | .split(", ") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/days/day7.rs:75:53 [INFO] [stderr] | [INFO] [stderr] 75 | let task_duration = base_duration + 1 + (*task as u8 - 'A' as u8) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(*task as u8 - 'A' as u8)` [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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/days/day7.rs:75:68 [INFO] [stderr] | [INFO] [stderr] 75 | let task_duration = base_duration + 1 + (*task as u8 - 'A' as u8) as u32; [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day7.rs:84:33 [INFO] [stderr] | [INFO] [stderr] 84 | fn get_sorted_ids(dependencies: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Dependency]` [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/days/day7.rs:97:10 [INFO] [stderr] | [INFO] [stderr] 97 | ids: &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/days/day7.rs:98:19 [INFO] [stderr] | [INFO] [stderr] 98 | dependencies: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Dependency]` [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/days/day7.rs:99:15 [INFO] [stderr] | [INFO] [stderr] 99 | resolved: &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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/days/day7.rs:102:5 [INFO] [stderr] | [INFO] [stderr] 102 | / ids.into_iter() [INFO] [stderr] 103 | | .filter(|id| !resolved.contains(id)) [INFO] [stderr] 104 | | .filter(|id| { [INFO] [stderr] 105 | | dependencies.iter() [INFO] [stderr] ... | [INFO] [stderr] 108 | | }) [INFO] [stderr] 109 | | .map(|c| *c) [INFO] [stderr] | |____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 102 | ids.into_iter() [INFO] [stderr] 103 | .filter(|id| !resolved.contains(id)) [INFO] [stderr] 104 | .filter(|id| { [INFO] [stderr] 105 | dependencies.iter() [INFO] [stderr] 106 | .filter(|d| d.id == **id) [INFO] [stderr] 107 | .all(|d| resolved.contains(&d.depends_on)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/days/day7.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | ids.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/days/day8.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | node.meta.iter().map(|m| *m).sum::() + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `node.meta.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/days/day8.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | input.trim().split(' ').into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `input.trim().split(' ')` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day10.rs:37:20 [INFO] [stderr] | [INFO] [stderr] 37 | fn project(points: &Vec, time: i32) -> Vec { [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/days/day10.rs:48:26 [INFO] [stderr] | [INFO] [stderr] 48 | fn format_points(points: &Vec) -> String { [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/days/day10.rs:72:21 [INFO] [stderr] | [INFO] [stderr] 72 | fn get_aabb(points: &Vec) -> ((i32, i32), (i32, i32)) { [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: the loop variable `x` is used to index `chunks` [INFO] [stderr] --> src/days/day11.rs:54:22 [INFO] [stderr] | [INFO] [stderr] 54 | for x in 0..grid_size - (bs - 1) { [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] 54 | for (x, ) in chunks.iter_mut().enumerate().take(grid_size - (bs - 1)) { [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/days/day12.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | fn gen_value(gen: &Vec, lower: i64, upper: i64) -> i64 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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 u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/days/day12.rs:70:43 [INFO] [stderr] | [INFO] [stderr] 70 | .map(|(has_plant, potno)| potno * *has_plant as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(*has_plant)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day12.rs:74:68 [INFO] [stderr] | [INFO] [stderr] 74 | fn apply_generation(source: Vec, mut target: Vec, kernels: &Vec>) -> (Vec, Vec) { [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 `i` is used to index `target` [INFO] [stderr] --> src/days/day12.rs:75:14 [INFO] [stderr] | [INFO] [stderr] 75 | for i in 0..source.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] 75 | for (i, ) in target.iter_mut().enumerate().take(source.len()) { [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/days/day12.rs:89:26 [INFO] [stderr] | [INFO] [stderr] 89 | fn kernel_matches(state: &Vec, offset: usize, kernel: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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/days/day12.rs:89:59 [INFO] [stderr] | [INFO] [stderr] 89 | fn kernel_matches(state: &Vec, offset: usize, kernel: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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 `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/days/day13.rs:108:17 [INFO] [stderr] | [INFO] [stderr] 108 | / match cart.intersection_count % 3 { [INFO] [stderr] 109 | | 0 => Some(-1), [INFO] [stderr] 110 | | 1 => None, [INFO] [stderr] 111 | | 2 => Some(1), [INFO] [stderr] ... | [INFO] [stderr] 115 | | cart.dir = (sign * cart.dir.1, sign * cart.dir.0); [INFO] [stderr] 116 | | }); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 108 | if let Some(sign) = match cart.intersection_count % 3 { [INFO] [stderr] 109 | 0 => Some(-1), [INFO] [stderr] 110 | 1 => None, [INFO] [stderr] 111 | 2 => Some(1), [INFO] [stderr] 112 | _ => panic!() [INFO] [stderr] 113 | } { ... } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/days/day13.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | / let mut crashed_with = None; [INFO] [stderr] 137 | | [INFO] [stderr] 138 | | if end_positions.contains_key(&cart.pos) { [INFO] [stderr] 139 | | // This cart ends at the same position as another one, so it crashed [INFO] [stderr] 140 | | crashed_with = Some(end_positions[&cart.pos]); [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let crashed_with = if end_positions.contains_key(&cart.pos) { Some(end_positions[&cart.pos]) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/days/day13.rs:157:26 [INFO] [stderr] | [INFO] [stderr] 157 | crashes.push(cart.pos.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `cart.pos` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/days/day14.rs:66:26 [INFO] [stderr] | [INFO] [stderr] 66 | (0..10).map(|offset| gen.seek_back(offset) as u64 * 10u64.pow(offset as u32)).sum() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(gen.seek_back(offset))` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day15.rs:241:33 [INFO] [stderr] | [INFO] [stderr] 241 | fn get_enemies_in_range(actors: &Vec, actor_i: usize, grid: &Grid) -> Vec<(usize)> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Actor]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/days/day16.rs:131:33 [INFO] [stderr] | [INFO] [stderr] 131 | mapping[input_opcode] = mapping[input_opcode] [INFO] [stderr] | _________________________________^ [INFO] [stderr] 132 | | .intersection(&matches) [INFO] [stderr] 133 | | .map(|c| *c) [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 131 | mapping[input_opcode] = mapping[input_opcode] [INFO] [stderr] 132 | .intersection(&matches).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/days/day16.rs:176:51 [INFO] [stderr] | [INFO] [stderr] 176 | let res = execute_instruction(&instr, sample.before.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sample.before` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/days/day16.rs:219:37 [INFO] [stderr] | [INFO] [stderr] 219 | let parts: Vec<_> = instr.split(" ").map(|p| p.parse::().unwrap()).collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/utils/data.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / input.split("\n") [INFO] [stderr] 20 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `input.split("\n")` [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: single-character string constant used as pattern [INFO] [stderr] --> src/utils/data.rs:19:17 [INFO] [stderr] | [INFO] [stderr] 19 | input.split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/utils/matrix.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn format( [INFO] [stderr] 48 | | &self, [INFO] [stderr] 49 | | pre: &str, [INFO] [stderr] 50 | | line_pre: &str, [INFO] [stderr] ... | [INFO] [stderr] 73 | | Ok(f) [INFO] [stderr] 74 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/utils/misc.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | (0..n).into_iter().map(|_| func()).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..n)` [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: you should consider deriving a `Default` implementation for `utils::circular_list::CircularList` [INFO] [stderr] --> src/utils/circular_list.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> CircularList { [INFO] [stderr] 18 | | CircularList { nodes: Vec::new(), cursor: None } [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Default)] [INFO] [stderr] | [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/utils/circular_list.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | / pub fn next(&mut self) -> &mut Self { [INFO] [stderr] 90 | | self.cursor = self.cursor.map(|i| self.nodes[i].next); [INFO] [stderr] 91 | | self [INFO] [stderr] 92 | | } [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day4.rs:77:31 [INFO] [stderr] | [INFO] [stderr] 77 | fn count_sleep_minutes(dates: &Vec) -> HashMap { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Date]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/days/day4.rs:101:18 [INFO] [stderr] | [INFO] [stderr] 101 | .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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day5.rs:35:23 [INFO] [stderr] | [INFO] [stderr] 35 | fn solve_part1(units: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Unit]` [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/days/day5.rs:39:23 [INFO] [stderr] | [INFO] [stderr] 39 | fn solve_part2(units: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Unit]` [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/days/day5.rs:49:18 [INFO] [stderr] | [INFO] [stderr] 49 | fn reduce(units: &Vec, ignore: Option) -> u32 { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Unit]` [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: identical conversion [INFO] [stderr] --> src/days/day5.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | input.trim().chars().into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `input.trim().chars()` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day6.rs:69:48 [INFO] [stderr] | [INFO] [stderr] 69 | fn get_coord_distances(x: i32, y: i32, coords: &Coords) -> Vec { [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/days/day6.rs:75:31 [INFO] [stderr] | [INFO] [stderr] 75 | fn get_initial_bounds(coords: &Coords) -> (i32, i32, i32, 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: identical conversion [INFO] [stderr] --> src/days/day6.rs:94:18 [INFO] [stderr] | [INFO] [stderr] 94 | .map(|l| l [INFO] [stderr] | __________________^ [INFO] [stderr] 95 | | .split(", ") [INFO] [stderr] 96 | | .into_iter() [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into_iter()` [INFO] [stderr] | [INFO] [stderr] 94 | .map(|l| l [INFO] [stderr] 95 | .split(", ") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/days/day7.rs:75:53 [INFO] [stderr] | [INFO] [stderr] 75 | let task_duration = base_duration + 1 + (*task as u8 - 'A' as u8) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(*task as u8 - 'A' as u8)` [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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/days/day7.rs:75:68 [INFO] [stderr] | [INFO] [stderr] 75 | let task_duration = base_duration + 1 + (*task as u8 - 'A' as u8) as u32; [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day7.rs:84:33 [INFO] [stderr] | [INFO] [stderr] 84 | fn get_sorted_ids(dependencies: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Dependency]` [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/days/day7.rs:97:10 [INFO] [stderr] | [INFO] [stderr] 97 | ids: &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/days/day7.rs:98:19 [INFO] [stderr] | [INFO] [stderr] 98 | dependencies: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Dependency]` [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/days/day7.rs:99:15 [INFO] [stderr] | [INFO] [stderr] 99 | resolved: &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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/days/day7.rs:102:5 [INFO] [stderr] | [INFO] [stderr] 102 | / ids.into_iter() [INFO] [stderr] 103 | | .filter(|id| !resolved.contains(id)) [INFO] [stderr] 104 | | .filter(|id| { [INFO] [stderr] 105 | | dependencies.iter() [INFO] [stderr] ... | [INFO] [stderr] 108 | | }) [INFO] [stderr] 109 | | .map(|c| *c) [INFO] [stderr] | |____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 102 | ids.into_iter() [INFO] [stderr] 103 | .filter(|id| !resolved.contains(id)) [INFO] [stderr] 104 | .filter(|id| { [INFO] [stderr] 105 | dependencies.iter() [INFO] [stderr] 106 | .filter(|d| d.id == **id) [INFO] [stderr] 107 | .all(|d| resolved.contains(&d.depends_on)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/days/day7.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | ids.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/days/day8.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | node.meta.iter().map(|m| *m).sum::() + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `node.meta.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/days/day8.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | input.trim().split(' ').into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `input.trim().split(' ')` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day10.rs:37:20 [INFO] [stderr] | [INFO] [stderr] 37 | fn project(points: &Vec, time: i32) -> Vec { [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/days/day10.rs:48:26 [INFO] [stderr] | [INFO] [stderr] 48 | fn format_points(points: &Vec) -> String { [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/days/day10.rs:72:21 [INFO] [stderr] | [INFO] [stderr] 72 | fn get_aabb(points: &Vec) -> ((i32, i32), (i32, i32)) { [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: the loop variable `x` is used to index `chunks` [INFO] [stderr] --> src/days/day11.rs:54:22 [INFO] [stderr] | [INFO] [stderr] 54 | for x in 0..grid_size - (bs - 1) { [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] 54 | for (x, ) in chunks.iter_mut().enumerate().take(grid_size - (bs - 1)) { [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/days/day12.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | fn gen_value(gen: &Vec, lower: i64, upper: i64) -> i64 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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 u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/days/day12.rs:70:43 [INFO] [stderr] | [INFO] [stderr] 70 | .map(|(has_plant, potno)| potno * *has_plant as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(*has_plant)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day12.rs:74:68 [INFO] [stderr] | [INFO] [stderr] 74 | fn apply_generation(source: Vec, mut target: Vec, kernels: &Vec>) -> (Vec, Vec) { [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 `i` is used to index `target` [INFO] [stderr] --> src/days/day12.rs:75:14 [INFO] [stderr] | [INFO] [stderr] 75 | for i in 0..source.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] 75 | for (i, ) in target.iter_mut().enumerate().take(source.len()) { [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/days/day12.rs:89:26 [INFO] [stderr] | [INFO] [stderr] 89 | fn kernel_matches(state: &Vec, offset: usize, kernel: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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/days/day12.rs:89:59 [INFO] [stderr] | [INFO] [stderr] 89 | fn kernel_matches(state: &Vec, offset: usize, kernel: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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 `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/days/day13.rs:108:17 [INFO] [stderr] | [INFO] [stderr] 108 | / match cart.intersection_count % 3 { [INFO] [stderr] 109 | | 0 => Some(-1), [INFO] [stderr] 110 | | 1 => None, [INFO] [stderr] 111 | | 2 => Some(1), [INFO] [stderr] ... | [INFO] [stderr] 115 | | cart.dir = (sign * cart.dir.1, sign * cart.dir.0); [INFO] [stderr] 116 | | }); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 108 | if let Some(sign) = match cart.intersection_count % 3 { [INFO] [stderr] 109 | 0 => Some(-1), [INFO] [stderr] 110 | 1 => None, [INFO] [stderr] 111 | 2 => Some(1), [INFO] [stderr] 112 | _ => panic!() [INFO] [stderr] 113 | } { ... } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/days/day13.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | / let mut crashed_with = None; [INFO] [stderr] 137 | | [INFO] [stderr] 138 | | if end_positions.contains_key(&cart.pos) { [INFO] [stderr] 139 | | // This cart ends at the same position as another one, so it crashed [INFO] [stderr] 140 | | crashed_with = Some(end_positions[&cart.pos]); [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let crashed_with = if end_positions.contains_key(&cart.pos) { Some(end_positions[&cart.pos]) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/days/day13.rs:157:26 [INFO] [stderr] | [INFO] [stderr] 157 | crashes.push(cart.pos.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `cart.pos` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/days/day14.rs:66:26 [INFO] [stderr] | [INFO] [stderr] 66 | (0..10).map(|offset| gen.seek_back(offset) as u64 * 10u64.pow(offset as u32)).sum() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(gen.seek_back(offset))` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/days/day15.rs:241:33 [INFO] [stderr] | [INFO] [stderr] 241 | fn get_enemies_in_range(actors: &Vec, actor_i: usize, grid: &Grid) -> Vec<(usize)> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Actor]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/days/day16.rs:131:33 [INFO] [stderr] | [INFO] [stderr] 131 | mapping[input_opcode] = mapping[input_opcode] [INFO] [stderr] | _________________________________^ [INFO] [stderr] 132 | | .intersection(&matches) [INFO] [stderr] 133 | | .map(|c| *c) [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 131 | mapping[input_opcode] = mapping[input_opcode] [INFO] [stderr] 132 | .intersection(&matches).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/days/day16.rs:176:51 [INFO] [stderr] | [INFO] [stderr] 176 | let res = execute_instruction(&instr, sample.before.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sample.before` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/days/day16.rs:219:37 [INFO] [stderr] | [INFO] [stderr] 219 | let parts: Vec<_> = instr.split(" ").map(|p| p.parse::().unwrap()).collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/utils/data.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / input.split("\n") [INFO] [stderr] 20 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `input.split("\n")` [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: single-character string constant used as pattern [INFO] [stderr] --> src/utils/data.rs:19:17 [INFO] [stderr] | [INFO] [stderr] 19 | input.split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/utils/matrix.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn format( [INFO] [stderr] 48 | | &self, [INFO] [stderr] 49 | | pre: &str, [INFO] [stderr] 50 | | line_pre: &str, [INFO] [stderr] ... | [INFO] [stderr] 73 | | Ok(f) [INFO] [stderr] 74 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/utils/matrix.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | assert_eq!(m[(0, 0)], 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/utils/matrix.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | assert_eq!(m[(0, 0)], 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/utils/matrix.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | assert_eq!(m[(0, 1)], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/utils/matrix.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | assert_eq!(m[(0, 1)], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/utils/matrix.rs:122:9 [INFO] [stderr] | [INFO] [stderr] 122 | assert_eq!(m[(1, 0)], 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/utils/matrix.rs:122:9 [INFO] [stderr] | [INFO] [stderr] 122 | assert_eq!(m[(1, 0)], 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/utils/matrix.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | assert_eq!(m[(2, 3)], 3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/utils/matrix.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | assert_eq!(m[(2, 3)], 3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/utils/misc.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | (0..n).into_iter().map(|_| func()).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..n)` [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: you should consider deriving a `Default` implementation for `utils::circular_list::CircularList` [INFO] [stderr] --> src/utils/circular_list.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> CircularList { [INFO] [stderr] 18 | | CircularList { nodes: Vec::new(), cursor: None } [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Default)] [INFO] [stderr] | [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/utils/circular_list.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | / pub fn next(&mut self) -> &mut Self { [INFO] [stderr] 90 | | self.cursor = self.cursor.map(|i| self.nodes[i].next); [INFO] [stderr] 91 | | self [INFO] [stderr] 92 | | } [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] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `aoc2018`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3a18e4f2752abcf15a7340cdf68f6af71bb474e48e61b01b3756c61c92d287d6"` [INFO] running `"docker" "rm" "-f" "3a18e4f2752abcf15a7340cdf68f6af71bb474e48e61b01b3756c61c92d287d6"` [INFO] [stdout] 3a18e4f2752abcf15a7340cdf68f6af71bb474e48e61b01b3756c61c92d287d6