[INFO] updating cached repository trevorsm7/advent_of_code_2017 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/trevorsm7/advent_of_code_2017 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/trevorsm7/advent_of_code_2017" "work/ex/clippy-test-run/sources/stable/gh/trevorsm7/advent_of_code_2017"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/trevorsm7/advent_of_code_2017'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/trevorsm7/advent_of_code_2017" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/trevorsm7/advent_of_code_2017"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/trevorsm7/advent_of_code_2017'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] b9f64b8d92fed4ba47108443b57703762df925c1 [INFO] sha for GitHub repo trevorsm7/advent_of_code_2017: b9f64b8d92fed4ba47108443b57703762df925c1 [INFO] validating manifest of trevorsm7/advent_of_code_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 trevorsm7/advent_of_code_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 trevorsm7/advent_of_code_2017 [INFO] finished frobbing trevorsm7/advent_of_code_2017 [INFO] frobbed toml for trevorsm7/advent_of_code_2017 written to work/ex/clippy-test-run/sources/stable/gh/trevorsm7/advent_of_code_2017/Cargo.toml [INFO] started frobbing trevorsm7/advent_of_code_2017 [INFO] finished frobbing trevorsm7/advent_of_code_2017 [INFO] frobbed toml for trevorsm7/advent_of_code_2017 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/trevorsm7/advent_of_code_2017/Cargo.toml [INFO] crate trevorsm7/advent_of_code_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 trevorsm7/advent_of_code_2017 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/trevorsm7/advent_of_code_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" "-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] b7fc41abe693e2dd3b0a623d84aea2333c99e84f728f07688b534a5bab0721a3 [INFO] running `"docker" "start" "-a" "b7fc41abe693e2dd3b0a623d84aea2333c99e84f728f07688b534a5bab0721a3"` [INFO] [stderr] Compiling regex v1.0.2 [INFO] [stderr] Checking rand v0.4.2 [INFO] [stderr] Checking smallvec v0.6.4 [INFO] [stderr] Checking crossbeam-epoch v0.5.2 [INFO] [stderr] Checking crossbeam-deque v0.5.2 [INFO] [stderr] Checking parking_lot_core v0.2.14 [INFO] [stderr] Checking parking_lot v0.6.3 [INFO] [stderr] Checking crossbeam-channel v0.2.4 [INFO] [stderr] Checking crossbeam v0.4.1 [INFO] [stderr] Checking aoc v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/day7.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | weight: weight, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/day7.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | weight: weight, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/day3.rs:81:20 [INFO] [stderr] | [INFO] [stderr] 81 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 82 | | if edge_i == edge_n - 1 { [INFO] [stderr] 83 | | // This is a corner, so the corner of the inner ring is adjacent [INFO] [stderr] 84 | | val += inner[offset + inner_edge_n - 1]; [INFO] [stderr] ... | [INFO] [stderr] 99 | | }; [INFO] [stderr] 100 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 81 | } else if edge_i == edge_n - 1 { [INFO] [stderr] 82 | // This is a corner, so the corner of the inner ring is adjacent [INFO] [stderr] 83 | val += inner[offset + inner_edge_n - 1]; [INFO] [stderr] 84 | } else { [INFO] [stderr] 85 | // Get the adjacent square first [INFO] [stderr] 86 | let adjacent = offset + edge_i + inner_ring_n - 1; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day15.rs:7:23 [INFO] [stderr] | [INFO] [stderr] 7 | const REM : u64 = 2147483647; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_147_483_647` [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/day15.rs:30:23 [INFO] [stderr] | [INFO] [stderr] 30 | const REM : u64 = 2147483647; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_147_483_647` [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/day22.rs:19:42 [INFO] [stderr] | [INFO] [stderr] 19 | println!("Part 2: {}", part2(&input, 10000000)); [INFO] [stderr] | ^^^^^^^^ help: consider: `10_000_000` [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/day23.rs:44:24 [INFO] [stderr] | [INFO] [stderr] 44 | let b = 57 * 100 + 100000; [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [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 `else { if .. }` block can be collapsed [INFO] [stderr] --> src/day3.rs:81:20 [INFO] [stderr] | [INFO] [stderr] 81 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 82 | | if edge_i == edge_n - 1 { [INFO] [stderr] 83 | | // This is a corner, so the corner of the inner ring is adjacent [INFO] [stderr] 84 | | val += inner[offset + inner_edge_n - 1]; [INFO] [stderr] ... | [INFO] [stderr] 99 | | }; [INFO] [stderr] 100 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 81 | } else if edge_i == edge_n - 1 { [INFO] [stderr] 82 | // This is a corner, so the corner of the inner ring is adjacent [INFO] [stderr] 83 | val += inner[offset + inner_edge_n - 1]; [INFO] [stderr] 84 | } else { [INFO] [stderr] 85 | // Get the adjacent square first [INFO] [stderr] 86 | let adjacent = offset + edge_i + inner_ring_n - 1; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day15.rs:7:23 [INFO] [stderr] | [INFO] [stderr] 7 | const REM : u64 = 2147483647; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_147_483_647` [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/day15.rs:30:23 [INFO] [stderr] | [INFO] [stderr] 30 | const REM : u64 = 2147483647; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_147_483_647` [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/day22.rs:19:42 [INFO] [stderr] | [INFO] [stderr] 19 | println!("Part 2: {}", part2(&input, 10000000)); [INFO] [stderr] | ^^^^^^^^ help: consider: `10_000_000` [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/day22.rs:108:30 [INFO] [stderr] | [INFO] [stderr] 108 | assert_eq!(part2(&input, 10000000), 2511944); [INFO] [stderr] | ^^^^^^^^ help: consider: `10_000_000` [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/day22.rs:108:41 [INFO] [stderr] | [INFO] [stderr] 108 | assert_eq!(part2(&input, 10000000), 2511944); [INFO] [stderr] | ^^^^^^^ help: consider: `2_511_944` [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/day23.rs:44:24 [INFO] [stderr] | [INFO] [stderr] 44 | let b = 57 * 100 + 100000; [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [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 loop could be written as a `while let` loop [INFO] [stderr] --> src/day1.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | / loop { [INFO] [stderr] 23 | | match iter.next() { [INFO] [stderr] 24 | | Some(ch) => { [INFO] [stderr] 25 | | // Parse the current digit [INFO] [stderr] ... | [INFO] [stderr] 39 | | } [INFO] [stderr] 40 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(ch) = iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day1.rs:68:17 [INFO] [stderr] | [INFO] [stderr] 68 | }).take(len).fold(0, |sum, digit| sum + digit) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day1.rs:144:32 [INFO] [stderr] | [INFO] [stderr] 144 | let name = args.next().unwrap_or("input/day1.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day1.txt".to_string())` [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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/day2.rs:72:32 [INFO] [stderr] | [INFO] [stderr] 72 | let name = args.next().unwrap_or("input/day2.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day2.txt".to_string())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/day3.rs:11:20 [INFO] [stderr] | [INFO] [stderr] 11 | let radius = ((((input - 1) as f64).sqrt() - 1.) * 0.5).floor() as u32 + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(input - 1)` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day3.rs:131:10 [INFO] [stderr] | [INFO] [stderr] 131 | .unwrap_or("0".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "0".to_string())` [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] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/day3.rs:135:8 [INFO] [stderr] | [INFO] [stderr] 135 | if input <= 0 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using input == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `passphrases`. [INFO] [stderr] --> src/day4.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | for j in i+1..passphrases.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] 81 | for in passphrases.iter().skip(i+1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day4.rs:108:32 [INFO] [stderr] | [INFO] [stderr] 108 | let name = args.next().unwrap_or("input/day4.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day4.txt".to_string())` [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: manual implementation of an assign operation [INFO] [stderr] --> src/day5.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | count = count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `count += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/day5.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | count = count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `count += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day5.rs:69:32 [INFO] [stderr] | [INFO] [stderr] 69 | let name = args.next().unwrap_or("input/day5.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day5.txt".to_string())` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day6.rs:56:17 [INFO] [stderr] | [INFO] [stderr] 56 | fn part1(banks: &Vec) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 56 | fn part1(banks: &[usize]) -> usize { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `banks.clone()` to [INFO] [stderr] | [INFO] [stderr] 57 | let mut copy = banks.to_owned(); [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/day6.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | fn part2(banks: &Vec) -> 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] help: change this to [INFO] [stderr] | [INFO] [stderr] 66 | fn part2(banks: &[usize]) -> usize { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `banks.clone()` to [INFO] [stderr] | [INFO] [stderr] 68 | let mut copy = banks.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day6.rs:81:32 [INFO] [stderr] | [INFO] [stderr] 81 | let name = args.next().unwrap_or("input/day6.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day6.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day7.rs:156:32 [INFO] [stderr] | [INFO] [stderr] 156 | let name = args.next().unwrap_or("input/day7.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day7.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day8.rs:71:32 [INFO] [stderr] | [INFO] [stderr] 71 | let name = args.next().unwrap_or("input/day8.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day8.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day9.rs:58:32 [INFO] [stderr] | [INFO] [stderr] 58 | let name = args.next().unwrap_or("input/day9.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day9.txt".to_string())` [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: this looks like you are swapping elements of `list` manually [INFO] [stderr] --> src/day10.rs:21:17 [INFO] [stderr] | [INFO] [stderr] 21 | / let swap = list[i]; [INFO] [stderr] 22 | | list[i] = list[j]; [INFO] [stderr] 23 | | list[j] = swap; [INFO] [stderr] | |______________________________^ help: try: `list.swap(i, j)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day10.rs:135:32 [INFO] [stderr] | [INFO] [stderr] 135 | let name = args.next().unwrap_or("input/day10.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day10.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day11.rs:66:32 [INFO] [stderr] | [INFO] [stderr] 66 | let name = args.next().unwrap_or("input/day11.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day11.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day12.rs:90:32 [INFO] [stderr] | [INFO] [stderr] 90 | let name = args.next().unwrap_or("input/day12.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day12.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day13.rs:85:32 [INFO] [stderr] | [INFO] [stderr] 85 | let name = args.next().unwrap_or("input/day13.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day13.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day14.rs:92:29 [INFO] [stderr] | [INFO] [stderr] 92 | let input = args.next().unwrap_or("hxtvlmkl".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "hxtvlmkl".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day15.rs:67:30 [INFO] [stderr] | [INFO] [stderr] 67 | let input1 = args.next().unwrap_or("618".to_string()).parse().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "618".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day15.rs:68:30 [INFO] [stderr] | [INFO] [stderr] 68 | let input2 = args.next().unwrap_or("814".to_string()).parse().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "814".to_string())` [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: this looks like you are swapping elements of `order` manually [INFO] [stderr] --> src/day16.rs:32:17 [INFO] [stderr] | [INFO] [stderr] 32 | / let tmp = order[a]; [INFO] [stderr] 33 | | order[a] = order[b]; [INFO] [stderr] 34 | | order[b] = tmp; [INFO] [stderr] | |______________________________^ help: try: `order.swap(a, b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/day16.rs:67:12 [INFO] [stderr] | [INFO] [stderr] 67 | if &order == &init { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [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] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 67 | if order == init { [INFO] [stderr] | ^^^^^ ^^^^ [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/day16.rs:78:27 [INFO] [stderr] | [INFO] [stderr] 78 | order.iter().map(|i| ('a' as u8 + i) as char).collect() [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day16.rs:98:32 [INFO] [stderr] | [INFO] [stderr] 98 | let name = args.next().unwrap_or("input/day16.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day16.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day17.rs:52:29 [INFO] [stderr] | [INFO] [stderr] 52 | let input = args.next().unwrap_or("386".to_string()).parse().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "386".to_string())` [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/day18.rs:117:23 [INFO] [stderr] | [INFO] [stderr] 117 | const P: usize = ('p' as u8 - 'a' as u8) as usize; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'p' [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/day18.rs:117:35 [INFO] [stderr] | [INFO] [stderr] 117 | const P: usize = ('p' 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day18.rs:149:39 [INFO] [stderr] | [INFO] [stderr] 149 | fn is_running(&mut self, program: &Program) -> bool { [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: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/day18.rs:149:19 [INFO] [stderr] | [INFO] [stderr] 149 | fn is_running(&mut self, program: &Program) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [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/day18.rs:154:41 [INFO] [stderr] | [INFO] [stderr] 154 | fn run_yielding(&mut self, program: &Program) -> Option { [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/day18.rs:184:41 [INFO] [stderr] | [INFO] [stderr] 184 | fn run_threaded(&mut self, program: &Program, pid: Int) -> u32 { [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/day18.rs:233:19 [INFO] [stderr] | [INFO] [stderr] 233 | fn part1(program: &Program) -> Option { [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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/day18.rs:238:12 [INFO] [stderr] | [INFO] [stderr] 238 | if let None = machine.run_yielding(&program) { [INFO] [stderr] | _____- ^^^^ [INFO] [stderr] 239 | | return None; [INFO] [stderr] 240 | | } [INFO] [stderr] | |_____- help: try this: `if machine.run_yielding(&program).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day18.rs:267:19 [INFO] [stderr] | [INFO] [stderr] 267 | fn part2(program: &Program) -> u32 { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day18.rs:298:32 [INFO] [stderr] | [INFO] [stderr] 298 | let name = args.next().unwrap_or("input/day18.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day18.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day19.rs:105:32 [INFO] [stderr] | [INFO] [stderr] 105 | let name = args.next().unwrap_or("input/day19.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day19.txt".to_string())` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/day20.rs:183:25 [INFO] [stderr] | [INFO] [stderr] 183 | let two_d = (two_d_2 as f64).sqrt().round() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f64::from(two_d_2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `index` is used as a loop counter. Consider using `for (index, item) in input.trim().lines().enumerate()` or similar iterators [INFO] [stderr] --> src/day20.rs:233:17 [INFO] [stderr] | [INFO] [stderr] 233 | for line in input.trim().lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day20.rs:329:32 [INFO] [stderr] | [INFO] [stderr] 329 | let name = args.next().unwrap_or("input/day20.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day20.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day21.rs:12:32 [INFO] [stderr] | [INFO] [stderr] 12 | let name = args.next().unwrap_or("input/day21.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day21.txt".to_string())` [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: use of `expect` followed by a function call [INFO] [stderr] --> src/day21.rs:141:30 [INFO] [stderr] | [INFO] [stderr] 141 | .expect(&format!("Unable to match pattern {:?}", &lr[..])) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Unable to match pattern {:?}", &lr[..]))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/day21.rs:145:30 [INFO] [stderr] | [INFO] [stderr] 145 | .expect(&format!("Unable to match pattern {:?}", &lr[..])) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Unable to match pattern {:?}", &lr[..]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day22.rs:14:32 [INFO] [stderr] | [INFO] [stderr] 14 | let name = args.next().unwrap_or("input/day22.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day22.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day23.rs:25:32 [INFO] [stderr] | [INFO] [stderr] 25 | let name = args.next().unwrap_or("input/day23.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day23.txt".to_string())` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day23.rs:144:32 [INFO] [stderr] | [INFO] [stderr] 144 | fn run(&mut self, program: &Program) { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day24.rs:35:32 [INFO] [stderr] | [INFO] [stderr] 35 | let name = args.next().unwrap_or("input/day24.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day24.txt".to_string())` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day24.rs:158:29 [INFO] [stderr] | [INFO] [stderr] 158 | fn build_lookup(components: &Vec) -> PortLookup { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Component]` [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 `components` [INFO] [stderr] --> src/day24.rs:162:14 [INFO] [stderr] | [INFO] [stderr] 162 | for i in 0..components.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] 162 | for (i, ) in components.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/day24.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | / if !lookup.contains_key(&e) { [INFO] [stderr] 166 | | lookup.insert(e, Vec::new()); [INFO] [stderr] 167 | | } [INFO] [stderr] | |_____________^ help: consider using: `lookup.entry(e).or_insert(Vec::new())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/day24.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | let ref mut indices = lookup.get_mut(&e).unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^------------------------------- help: try: `let indices = &mut lookup.get_mut(&e).unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day25.rs:23:32 [INFO] [stderr] | [INFO] [stderr] 23 | let name = args.next().unwrap_or("input/day25.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day25.txt".to_string())` [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: the loop variable `i` is used to index `e` [INFO] [stderr] --> src/day25.rs:105:18 [INFO] [stderr] | [INFO] [stderr] 105 | for i in 0..2 { [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] 105 | for (i, ) in e.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:39:10 [INFO] [stderr] | [INFO] [stderr] 39 | .unwrap_or("0".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "0".to_string())` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `aoc`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/day1.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | / loop { [INFO] [stderr] 23 | | match iter.next() { [INFO] [stderr] 24 | | Some(ch) => { [INFO] [stderr] 25 | | // Parse the current digit [INFO] [stderr] ... | [INFO] [stderr] 39 | | } [INFO] [stderr] 40 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(ch) = iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day1.rs:68:17 [INFO] [stderr] | [INFO] [stderr] 68 | }).take(len).fold(0, |sum, digit| sum + digit) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day1.rs:144:32 [INFO] [stderr] | [INFO] [stderr] 144 | let name = args.next().unwrap_or("input/day1.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day1.txt".to_string())` [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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/day2.rs:72:32 [INFO] [stderr] | [INFO] [stderr] 72 | let name = args.next().unwrap_or("input/day2.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day2.txt".to_string())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/day3.rs:11:20 [INFO] [stderr] | [INFO] [stderr] 11 | let radius = ((((input - 1) as f64).sqrt() - 1.) * 0.5).floor() as u32 + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(input - 1)` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day3.rs:131:10 [INFO] [stderr] | [INFO] [stderr] 131 | .unwrap_or("0".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "0".to_string())` [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] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/day3.rs:135:8 [INFO] [stderr] | [INFO] [stderr] 135 | if input <= 0 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using input == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `passphrases`. [INFO] [stderr] --> src/day4.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | for j in i+1..passphrases.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] 81 | for in passphrases.iter().skip(i+1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day4.rs:108:32 [INFO] [stderr] | [INFO] [stderr] 108 | let name = args.next().unwrap_or("input/day4.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day4.txt".to_string())` [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: manual implementation of an assign operation [INFO] [stderr] --> src/day5.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | count = count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `count += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/day5.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | count = count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `count += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day5.rs:69:32 [INFO] [stderr] | [INFO] [stderr] 69 | let name = args.next().unwrap_or("input/day5.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day5.txt".to_string())` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day6.rs:56:17 [INFO] [stderr] | [INFO] [stderr] 56 | fn part1(banks: &Vec) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 56 | fn part1(banks: &[usize]) -> usize { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `banks.clone()` to [INFO] [stderr] | [INFO] [stderr] 57 | let mut copy = banks.to_owned(); [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/day6.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | fn part2(banks: &Vec) -> 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] help: change this to [INFO] [stderr] | [INFO] [stderr] 66 | fn part2(banks: &[usize]) -> usize { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `banks.clone()` to [INFO] [stderr] | [INFO] [stderr] 68 | let mut copy = banks.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day6.rs:81:32 [INFO] [stderr] | [INFO] [stderr] 81 | let name = args.next().unwrap_or("input/day6.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day6.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day7.rs:156:32 [INFO] [stderr] | [INFO] [stderr] 156 | let name = args.next().unwrap_or("input/day7.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day7.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day8.rs:71:32 [INFO] [stderr] | [INFO] [stderr] 71 | let name = args.next().unwrap_or("input/day8.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day8.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day9.rs:58:32 [INFO] [stderr] | [INFO] [stderr] 58 | let name = args.next().unwrap_or("input/day9.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day9.txt".to_string())` [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: this looks like you are swapping elements of `list` manually [INFO] [stderr] --> src/day10.rs:21:17 [INFO] [stderr] | [INFO] [stderr] 21 | / let swap = list[i]; [INFO] [stderr] 22 | | list[i] = list[j]; [INFO] [stderr] 23 | | list[j] = swap; [INFO] [stderr] | |______________________________^ help: try: `list.swap(i, j)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day10.rs:135:32 [INFO] [stderr] | [INFO] [stderr] 135 | let name = args.next().unwrap_or("input/day10.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day10.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day11.rs:66:32 [INFO] [stderr] | [INFO] [stderr] 66 | let name = args.next().unwrap_or("input/day11.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day11.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day12.rs:90:32 [INFO] [stderr] | [INFO] [stderr] 90 | let name = args.next().unwrap_or("input/day12.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day12.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day13.rs:85:32 [INFO] [stderr] | [INFO] [stderr] 85 | let name = args.next().unwrap_or("input/day13.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day13.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day14.rs:92:29 [INFO] [stderr] | [INFO] [stderr] 92 | let input = args.next().unwrap_or("hxtvlmkl".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "hxtvlmkl".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day15.rs:67:30 [INFO] [stderr] | [INFO] [stderr] 67 | let input1 = args.next().unwrap_or("618".to_string()).parse().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "618".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day15.rs:68:30 [INFO] [stderr] | [INFO] [stderr] 68 | let input2 = args.next().unwrap_or("814".to_string()).parse().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "814".to_string())` [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: this looks like you are swapping elements of `order` manually [INFO] [stderr] --> src/day16.rs:32:17 [INFO] [stderr] | [INFO] [stderr] 32 | / let tmp = order[a]; [INFO] [stderr] 33 | | order[a] = order[b]; [INFO] [stderr] 34 | | order[b] = tmp; [INFO] [stderr] | |______________________________^ help: try: `order.swap(a, b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/day16.rs:67:12 [INFO] [stderr] | [INFO] [stderr] 67 | if &order == &init { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [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] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 67 | if order == init { [INFO] [stderr] | ^^^^^ ^^^^ [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/day16.rs:78:27 [INFO] [stderr] | [INFO] [stderr] 78 | order.iter().map(|i| ('a' as u8 + i) as char).collect() [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day16.rs:98:32 [INFO] [stderr] | [INFO] [stderr] 98 | let name = args.next().unwrap_or("input/day16.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day16.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day17.rs:52:29 [INFO] [stderr] | [INFO] [stderr] 52 | let input = args.next().unwrap_or("386".to_string()).parse().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "386".to_string())` [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/day18.rs:117:23 [INFO] [stderr] | [INFO] [stderr] 117 | const P: usize = ('p' as u8 - 'a' as u8) as usize; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'p' [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/day18.rs:117:35 [INFO] [stderr] | [INFO] [stderr] 117 | const P: usize = ('p' 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day18.rs:149:39 [INFO] [stderr] | [INFO] [stderr] 149 | fn is_running(&mut self, program: &Program) -> bool { [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: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/day18.rs:149:19 [INFO] [stderr] | [INFO] [stderr] 149 | fn is_running(&mut self, program: &Program) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [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/day18.rs:154:41 [INFO] [stderr] | [INFO] [stderr] 154 | fn run_yielding(&mut self, program: &Program) -> Option { [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/day18.rs:184:41 [INFO] [stderr] | [INFO] [stderr] 184 | fn run_threaded(&mut self, program: &Program, pid: Int) -> u32 { [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/day18.rs:233:19 [INFO] [stderr] | [INFO] [stderr] 233 | fn part1(program: &Program) -> Option { [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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/day18.rs:238:12 [INFO] [stderr] | [INFO] [stderr] 238 | if let None = machine.run_yielding(&program) { [INFO] [stderr] | _____- ^^^^ [INFO] [stderr] 239 | | return None; [INFO] [stderr] 240 | | } [INFO] [stderr] | |_____- help: try this: `if machine.run_yielding(&program).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day18.rs:267:19 [INFO] [stderr] | [INFO] [stderr] 267 | fn part2(program: &Program) -> u32 { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day18.rs:298:32 [INFO] [stderr] | [INFO] [stderr] 298 | let name = args.next().unwrap_or("input/day18.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day18.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day19.rs:105:32 [INFO] [stderr] | [INFO] [stderr] 105 | let name = args.next().unwrap_or("input/day19.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day19.txt".to_string())` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/day20.rs:183:25 [INFO] [stderr] | [INFO] [stderr] 183 | let two_d = (two_d_2 as f64).sqrt().round() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f64::from(two_d_2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `index` is used as a loop counter. Consider using `for (index, item) in input.trim().lines().enumerate()` or similar iterators [INFO] [stderr] --> src/day20.rs:233:17 [INFO] [stderr] | [INFO] [stderr] 233 | for line in input.trim().lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day20.rs:329:32 [INFO] [stderr] | [INFO] [stderr] 329 | let name = args.next().unwrap_or("input/day20.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day20.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day21.rs:12:32 [INFO] [stderr] | [INFO] [stderr] 12 | let name = args.next().unwrap_or("input/day21.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day21.txt".to_string())` [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: use of `expect` followed by a function call [INFO] [stderr] --> src/day21.rs:141:30 [INFO] [stderr] | [INFO] [stderr] 141 | .expect(&format!("Unable to match pattern {:?}", &lr[..])) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Unable to match pattern {:?}", &lr[..]))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/day21.rs:145:30 [INFO] [stderr] | [INFO] [stderr] 145 | .expect(&format!("Unable to match pattern {:?}", &lr[..])) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Unable to match pattern {:?}", &lr[..]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day22.rs:14:32 [INFO] [stderr] | [INFO] [stderr] 14 | let name = args.next().unwrap_or("input/day22.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day22.txt".to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day23.rs:25:32 [INFO] [stderr] | [INFO] [stderr] 25 | let name = args.next().unwrap_or("input/day23.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day23.txt".to_string())` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day23.rs:144:32 [INFO] [stderr] | [INFO] [stderr] 144 | fn run(&mut self, program: &Program) { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day24.rs:35:32 [INFO] [stderr] | [INFO] [stderr] 35 | let name = args.next().unwrap_or("input/day24.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day24.txt".to_string())` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day24.rs:158:29 [INFO] [stderr] | [INFO] [stderr] 158 | fn build_lookup(components: &Vec) -> PortLookup { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Component]` [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 `components` [INFO] [stderr] --> src/day24.rs:162:14 [INFO] [stderr] | [INFO] [stderr] 162 | for i in 0..components.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] 162 | for (i, ) in components.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/day24.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | / if !lookup.contains_key(&e) { [INFO] [stderr] 166 | | lookup.insert(e, Vec::new()); [INFO] [stderr] 167 | | } [INFO] [stderr] | |_____________^ help: consider using: `lookup.entry(e).or_insert(Vec::new())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/day24.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | let ref mut indices = lookup.get_mut(&e).unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^------------------------------- help: try: `let indices = &mut lookup.get_mut(&e).unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/day25.rs:23:32 [INFO] [stderr] | [INFO] [stderr] 23 | let name = args.next().unwrap_or("input/day25.txt".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "input/day25.txt".to_string())` [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: the loop variable `i` is used to index `e` [INFO] [stderr] --> src/day25.rs:105:18 [INFO] [stderr] | [INFO] [stderr] 105 | for i in 0..2 { [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] 105 | for (i, ) in e.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:39:10 [INFO] [stderr] | [INFO] [stderr] 39 | .unwrap_or("0".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "0".to_string())` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `aoc`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b7fc41abe693e2dd3b0a623d84aea2333c99e84f728f07688b534a5bab0721a3"` [INFO] running `"docker" "rm" "-f" "b7fc41abe693e2dd3b0a623d84aea2333c99e84f728f07688b534a5bab0721a3"` [INFO] [stdout] b7fc41abe693e2dd3b0a623d84aea2333c99e84f728f07688b534a5bab0721a3