[INFO] cloning repository https://github.com/bakenzua/aoc_rust_2024 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bakenzua/aoc_rust_2024" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbakenzua%2Faoc_rust_2024", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbakenzua%2Faoc_rust_2024'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4753e411239a9e08b90e6af7241248e321ac37f3 [INFO] linting bakenzua/aoc_rust_2024 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbakenzua%2Faoc_rust_2024" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/bakenzua/aoc_rust_2024 [INFO] finished tweaking git repo https://github.com/bakenzua/aoc_rust_2024 [INFO] tweaked toml for git repo https://github.com/bakenzua/aoc_rust_2024 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/bakenzua/aoc_rust_2024 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/bakenzua/aoc_rust_2024 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f528f99a7abb44b2bda2186e865dc8c2af78fc2802bacffdfc4b340d45c61918 [INFO] running `Command { std: "docker" "start" "-a" "f528f99a7abb44b2bda2186e865dc8c2af78fc2802bacffdfc4b340d45c61918", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f528f99a7abb44b2bda2186e865dc8c2af78fc2802bacffdfc4b340d45c61918", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f528f99a7abb44b2bda2186e865dc8c2af78fc2802bacffdfc4b340d45c61918", kill_on_drop: false }` [INFO] [stdout] f528f99a7abb44b2bda2186e865dc8c2af78fc2802bacffdfc4b340d45c61918 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2a214634d994860da6538c833cff99d4d7d3ad9c5ce6c0779f42f5a5f56d3c9d [INFO] running `Command { std: "docker" "start" "-a" "2a214634d994860da6538c833cff99d4d7d3ad9c5ce6c0779f42f5a5f56d3c9d", kill_on_drop: false }` [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking aoc_rust_2024 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:186:46 [INFO] [stdout] | [INFO] [stdout] 186 | let coord = GridCoordinate { x: x, y: y }; [INFO] [stdout] | ^^^^ help: replace it with: `x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:186:52 [INFO] [stdout] | [INFO] [stdout] 186 | let coord = GridCoordinate { x: x, y: y }; [INFO] [stdout] | ^^^^ help: replace it with: `y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 241 | obstacles: obstacles, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `obstacles` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:244:9 [INFO] [stdout] | [INFO] [stdout] 244 | xmax: xmax, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `xmax` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | ymax: ymax, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `ymax` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:246:9 [INFO] [stdout] | [INFO] [stdout] 246 | guardpos: guardpos, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `guardpos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_8.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | antennas: antennas, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `antennas` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_8.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | antenna_types: antenna_types, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `antenna_types` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_8.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | max_x: max_x, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `max_x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_8.rs:197:9 [INFO] [stdout] | [INFO] [stdout] 197 | max_y: max_y, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `max_y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Debug` [INFO] [stdout] --> src/day_17.rs:1:23 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{fmt::{self, Debug}, fs::read_to_string}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:186:46 [INFO] [stdout] | [INFO] [stdout] 186 | let coord = GridCoordinate { x: x, y: y }; [INFO] [stdout] | ^^^^ help: replace it with: `x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:186:52 [INFO] [stdout] | [INFO] [stdout] 186 | let coord = GridCoordinate { x: x, y: y }; [INFO] [stdout] | ^^^^ help: replace it with: `y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 241 | obstacles: obstacles, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `obstacles` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:244:9 [INFO] [stdout] | [INFO] [stdout] 244 | xmax: xmax, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `xmax` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | ymax: ymax, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `ymax` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_6.rs:246:9 [INFO] [stdout] | [INFO] [stdout] 246 | guardpos: guardpos, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `guardpos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_8.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | antennas: antennas, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `antennas` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_8.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | antenna_types: antenna_types, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `antenna_types` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_8.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | max_x: max_x, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `max_x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day_8.rs:197:9 [INFO] [stdout] | [INFO] [stdout] 197 | max_y: max_y, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `max_y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Debug` [INFO] [stdout] --> src/day_17.rs:1:23 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{fmt::{self, Debug}, fs::read_to_string}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `registers` [INFO] [stdout] --> src/day_17.rs:49:19 [INFO] [stdout] | [INFO] [stdout] 49 | let (_inout, (registers, instructions)) = parse(&file_str) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_registers` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instructions` [INFO] [stdout] --> src/day_17.rs:49:30 [INFO] [stdout] | [INFO] [stdout] 49 | let (_inout, (registers, instructions)) = parse(&file_str) [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instructions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_aoc_char_map` is never used [INFO] [stdout] --> src/aoc_utils.rs:70:8 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn parse_aoc_char_map(file_path: &str) -> HashMap<(i32, i32), char> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Instructions` is never used [INFO] [stdout] --> src/day_17.rs:67:6 [INFO] [stdout] | [INFO] [stdout] 67 | enum Instructions { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `y` is used as a loop counter [INFO] [stdout] --> src/aoc_utils.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 60 | for line in file_lines { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (y, line) in (0_i32..).zip(file_lines)` [INFO] [stdout] | [INFO] [stdout] = note: `y` is of type `i32`, making it ineligible for `Iterator::enumerate` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `y` is used as a loop counter [INFO] [stdout] --> src/aoc_utils.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | for line in file_lines { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (y, line) in (0_i32..).zip(file_lines)` [INFO] [stdout] | [INFO] [stdout] = note: `y` is of type `i32`, making it ineligible for `Iterator::enumerate` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/aoc_utils.rs:146:5 [INFO] [stdout] | [INFO] [stdout] 146 | !(*x < 10) && n_digits(x) % 2 == 0 [INFO] [stdout] | ^^^^^^^^^^ help: try: `(*x >= 10)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/aoc_utils.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | return Some(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 157 - return Some(result); [INFO] [stdout] 157 + Some(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/aoc_utils.rs:159:9 [INFO] [stdout] | [INFO] [stdout] 159 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 159 - return None; [INFO] [stdout] 159 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_10.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | / match nines_reachable_from(coord.0, &trail_map) { [INFO] [stdout] 40 | | Some(mut nines) => { [INFO] [stdout] 41 | | nines.sort_unstable(); [INFO] [stdout] 42 | | nines.dedup(); [INFO] [stdout] ... | [INFO] [stdout] 45 | | None => (), [INFO] [stdout] 46 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 39 ~ if let Some(mut nines) = nines_reachable_from(coord.0, &trail_map) { [INFO] [stdout] 40 + nines.sort_unstable(); [INFO] [stdout] 41 + nines.dedup(); [INFO] [stdout] 42 + acc += nines.len() as i32; [INFO] [stdout] 43 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_10.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | / match nines_reachable_from(coord.0, &trail_map) { [INFO] [stdout] 58 | | Some(nines) => { [INFO] [stdout] 59 | | acc += nines.len() as i32; [INFO] [stdout] ... | [INFO] [stdout] 62 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 57 ~ if let Some(nines) = nines_reachable_from(coord.0, &trail_map) { [INFO] [stdout] 58 + acc += nines.len() as i32; [INFO] [stdout] 59 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_10.rs:127:9 [INFO] [stdout] | [INFO] [stdout] 127 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 127 - return None; [INFO] [stdout] 127 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_10.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | return Some(reachable_nines); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 129 - return Some(reachable_nines); [INFO] [stdout] 129 + Some(reachable_nines) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_10.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | return reachable_nines; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 92 - return reachable_nines; [INFO] [stdout] 92 + reachable_nines [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/day_10.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | / if *e == current_elevation + 1 { [INFO] [stdout] 81 | | let nines = nines_reachable_from(&coord, trail_map); [INFO] [stdout] 82 | | match nines { [INFO] [stdout] 83 | | Some(mut nines) => { [INFO] [stdout] ... | [INFO] [stdout] 88 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ Some(e) [INFO] [stdout] 80 ~ if *e == current_elevation + 1 => { [INFO] [stdout] 81 | let nines = nines_reachable_from(&coord, trail_map); [INFO] [stdout] ... [INFO] [stdout] 87 | } [INFO] [stdout] 88 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_10.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | / match trail_map.get(&coord) { [INFO] [stdout] 79 | | Some(e) => { [INFO] [stdout] 80 | | if *e == current_elevation + 1 { [INFO] [stdout] 81 | | let nines = nines_reachable_from(&coord, trail_map); [INFO] [stdout] ... | [INFO] [stdout] 90 | | None => (), [INFO] [stdout] 91 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 78 ~ if let Some(e) = trail_map.get(&coord) { [INFO] [stdout] 79 + if *e == current_elevation + 1 { [INFO] [stdout] 80 + let nines = nines_reachable_from(&coord, trail_map); [INFO] [stdout] 81 + match nines { [INFO] [stdout] 82 + Some(mut nines) => { [INFO] [stdout] 83 + _ = reachable_nines.append(&mut nines); [INFO] [stdout] 84 + } [INFO] [stdout] 85 + None => (), [INFO] [stdout] 86 + } [INFO] [stdout] 87 + } [INFO] [stdout] 88 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_10.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | / match nines { [INFO] [stdout] 83 | | Some(mut nines) => { [INFO] [stdout] 84 | | _ = reachable_nines.append(&mut nines); [INFO] [stdout] ... | [INFO] [stdout] 87 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 82 ~ if let Some(mut nines) = nines { [INFO] [stdout] 83 + _ = reachable_nines.append(&mut nines); [INFO] [stdout] 84 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/day_10.rs:84:29 [INFO] [stdout] | [INFO] [stdout] 84 | ... _ = reachable_nines.append(&mut nines); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 84 - _ = reachable_nines.append(&mut nines); [INFO] [stdout] 84 + reachable_nines.append(&mut nines); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i32, i32)` which implements the `Copy` trait [INFO] [stdout] --> src/day_10.rs:95:25 [INFO] [stdout] | [INFO] [stdout] 95 | let mut tmp_coord = coord.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/day_10.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | _ = reachable_nines.push(*coord); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 100 - _ = reachable_nines.push(*coord); [INFO] [stdout] 100 + reachable_nines.push(*coord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i32, i32)` which implements the `Copy` trait [INFO] [stdout] --> src/day_10.rs:109:21 [INFO] [stdout] | [INFO] [stdout] 109 | tmp_coord = coord.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i32, i32)` which implements the `Copy` trait [INFO] [stdout] --> src/day_10.rs:115:21 [INFO] [stdout] | [INFO] [stdout] 115 | tmp_coord = coord.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i32, i32)` which implements the `Copy` trait [INFO] [stdout] --> src/day_10.rs:121:21 [INFO] [stdout] | [INFO] [stdout] 121 | tmp_coord = coord.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> src/day_11.rs:37:10 [INFO] [stdout] | [INFO] [stdout] 37 | .trim() [INFO] [stdout] | __________^ [INFO] [stdout] 38 | | .split_whitespace() [INFO] [stdout] | |_________^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] = note: `#[warn(clippy::trim_split_whitespace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day_11.rs:49:22 [INFO] [stdout] | [INFO] [stdout] 49 | match stones.get(&stone) { [INFO] [stdout] | ^^^^^^ help: change this to: `stone` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day_2.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | .map(|v| is_safe(v)) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the function itself: `is_safe` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day_2.rs:31:61 [INFO] [stdout] | [INFO] [stdout] 31 | .map(|v| is_safe(v) | get_sub_reports(v).iter().any(|v| is_safe(v))) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the function itself: `is_safe` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day_2.rs:64:20 [INFO] [stdout] | [INFO] [stdout] 64 | fn is_safe(report: &Vec) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 64 - fn is_safe(report: &Vec) -> bool { [INFO] [stdout] 64 + fn is_safe(report: &[i32]) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day_2.rs:74:28 [INFO] [stdout] | [INFO] [stdout] 74 | fn get_sub_reports(report: &Vec) -> Vec> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 74 ~ fn get_sub_reports(report: &[i32]) -> Vec> { [INFO] [stdout] 75 | let mut sub_reports: Vec> = Vec::new(); [INFO] [stdout] 76 | [INFO] [stdout] 77 | for i in 0..report.len() { [INFO] [stdout] 78 ~ let mut sub_report = report.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/day_3.rs:72:74 [INFO] [stdout] | [INFO] [stdout] 72 | while let Some(d) = corrupt_code_iter.next_if(|&chr| chr.is_digit(10)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `chr.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/day_3.rs:78:78 [INFO] [stdout] | [INFO] [stdout] 78 | while let Some(d) = corrupt_code_iter.next_if(|&chr| chr.is_digit(10)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `chr.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `GridCoordinate` which implements the `Copy` trait [INFO] [stdout] --> src/day_4.rs:54:44 [INFO] [stdout] | [INFO] [stdout] 54 | let mut current_location = pos.clone(); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_4.rs:62:21 [INFO] [stdout] | [INFO] [stdout] 62 | score = score + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `score += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `GridCoordinate` which implements the `Copy` trait [INFO] [stdout] --> src/day_4.rs:79:40 [INFO] [stdout] | [INFO] [stdout] 79 | let mut current_location = pos.clone(); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day_4.rs:94:33 [INFO] [stdout] | [INFO] [stdout] 94 | if targets.contains(&&diag1.as_str()) && targets.contains(&&diag2.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `(&diag1.as_str())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day_4.rs:94:71 [INFO] [stdout] | [INFO] [stdout] 94 | if targets.contains(&&diag1.as_str()) && targets.contains(&&diag2.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `(&diag2.as_str())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_4.rs:95:17 [INFO] [stdout] | [INFO] [stdout] 95 | score = score + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `score += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/day_5.rs:142:12 [INFO] [stdout] | [INFO] [stdout] 142 | if line == "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_5.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | return RuleCheckResult::Fail; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 193 - return RuleCheckResult::Fail; [INFO] [stdout] 193 + RuleCheckResult::Fail [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_5.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | return RuleCheckResult::Pass; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 195 - return RuleCheckResult::Pass; [INFO] [stdout] 195 + RuleCheckResult::Pass [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day_5.rs:179:34 [INFO] [stdout] | [INFO] [stdout] 179 | fn update_rule_check(man_update: &Vec, rule: &(i32, i32)) -> RuleCheckResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 179 - fn update_rule_check(man_update: &Vec, rule: &(i32, i32)) -> RuleCheckResult { [INFO] [stdout] 179 + fn update_rule_check(man_update: &[i32], rule: &(i32, i32)) -> RuleCheckResult { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `map` over `inspect` [INFO] [stdout] --> src/day_5_sort.rs:50:10 [INFO] [stdout] | [INFO] [stdout] 50 | .map(|u| { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] = note: `#[warn(clippy::manual_inspect)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 50 ~ .inspect(|u| { [INFO] [stdout] 51 | u.sort_by(|&a, &b| { [INFO] [stdout] ... [INFO] [stdout] 58 | } [INFO] [stdout] 59 ~ }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `registers` [INFO] [stdout] --> src/day_17.rs:49:19 [INFO] [stdout] | [INFO] [stdout] 49 | let (_inout, (registers, instructions)) = parse(&file_str) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_registers` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instructions` [INFO] [stdout] --> src/day_17.rs:49:30 [INFO] [stdout] | [INFO] [stdout] 49 | let (_inout, (registers, instructions)) = parse(&file_str) [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instructions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/day_5_sort.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | if line == "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | return SuitLabDirection::Right; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 - return SuitLabDirection::Right; [INFO] [stdout] 123 + SuitLabDirection::Right [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:125:21 [INFO] [stdout] | [INFO] [stdout] 125 | return SuitLabDirection::OffMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 125 - return SuitLabDirection::OffMap; [INFO] [stdout] 125 + SuitLabDirection::OffMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:128:21 [INFO] [stdout] | [INFO] [stdout] 128 | return direction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 - return direction; [INFO] [stdout] 128 + direction [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:136:21 [INFO] [stdout] | [INFO] [stdout] 136 | return SuitLabDirection::Up; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 136 - return SuitLabDirection::Up; [INFO] [stdout] 136 + SuitLabDirection::Up [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:138:21 [INFO] [stdout] | [INFO] [stdout] 138 | return SuitLabDirection::OffMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 138 - return SuitLabDirection::OffMap; [INFO] [stdout] 138 + SuitLabDirection::OffMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:141:21 [INFO] [stdout] | [INFO] [stdout] 141 | return direction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 141 - return direction; [INFO] [stdout] 141 + direction [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:149:21 [INFO] [stdout] | [INFO] [stdout] 149 | return SuitLabDirection::Down; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 149 - return SuitLabDirection::Down; [INFO] [stdout] 149 + SuitLabDirection::Down [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:151:21 [INFO] [stdout] | [INFO] [stdout] 151 | return SuitLabDirection::OffMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 151 - return SuitLabDirection::OffMap; [INFO] [stdout] 151 + SuitLabDirection::OffMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:154:21 [INFO] [stdout] | [INFO] [stdout] 154 | return direction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 154 - return direction; [INFO] [stdout] 154 + direction [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:162:21 [INFO] [stdout] | [INFO] [stdout] 162 | return SuitLabDirection::Left; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 162 - return SuitLabDirection::Left; [INFO] [stdout] 162 + SuitLabDirection::Left [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:164:21 [INFO] [stdout] | [INFO] [stdout] 164 | return SuitLabDirection::OffMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 164 - return SuitLabDirection::OffMap; [INFO] [stdout] 164 + SuitLabDirection::OffMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:167:21 [INFO] [stdout] | [INFO] [stdout] 167 | return direction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return direction; [INFO] [stdout] 167 + direction [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:170:18 [INFO] [stdout] | [INFO] [stdout] 170 | _ => return SuitLabDirection::OffMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 170 - _ => return SuitLabDirection::OffMap, [INFO] [stdout] 170 + _ => SuitLabDirection::OffMap, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_aoc_char_map` is never used [INFO] [stdout] --> src/aoc_utils.rs:70:8 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn parse_aoc_char_map(file_path: &str) -> HashMap<(i32, i32), char> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Instructions` is never used [INFO] [stdout] --> src/day_17.rs:67:6 [INFO] [stdout] | [INFO] [stdout] 67 | enum Instructions { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/day_7.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 35 | / let result = calibrations [INFO] [stdout] 36 | | .into_iter() [INFO] [stdout] 37 | | .filter(|x| eq_has_solutions(x.0, 0, &x.1)) [INFO] [stdout] 38 | | .map(|x| x.0) [INFO] [stdout] 39 | | .sum(); [INFO] [stdout] | |_______________- unnecessary `let` binding [INFO] [stdout] 40 | [INFO] [stdout] 41 | result [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 35 ~ [INFO] [stdout] 36 | [INFO] [stdout] 37 ~ calibrations [INFO] [stdout] 38 + .into_iter() [INFO] [stdout] 39 + .filter(|x| eq_has_solutions(x.0, 0, &x.1)) [INFO] [stdout] 40 + .map(|x| x.0) [INFO] [stdout] 41 + .sum() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `y` is used as a loop counter [INFO] [stdout] --> src/aoc_utils.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 60 | for line in file_lines { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (y, line) in (0_i32..).zip(file_lines)` [INFO] [stdout] | [INFO] [stdout] = note: `y` is of type `i32`, making it ineligible for `Iterator::enumerate` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/day_7.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 60 | / let result = calibrations [INFO] [stdout] 61 | | .into_iter() [INFO] [stdout] 62 | | .filter(|x| eq_has_solutions_part2(x.0, 0, &x.1)) [INFO] [stdout] 63 | | .map(|x| x.0) [INFO] [stdout] 64 | | .sum(); [INFO] [stdout] | |_______________- unnecessary `let` binding [INFO] [stdout] 65 | [INFO] [stdout] 66 | result [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 60 ~ [INFO] [stdout] 61 | [INFO] [stdout] 62 ~ calibrations [INFO] [stdout] 63 + .into_iter() [INFO] [stdout] 64 + .filter(|x| eq_has_solutions_part2(x.0, 0, &x.1)) [INFO] [stdout] 65 + .map(|x| x.0) [INFO] [stdout] 66 + .sum() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `y` is used as a loop counter [INFO] [stdout] --> src/aoc_utils.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | for line in file_lines { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (y, line) in (0_i32..).zip(file_lines)` [INFO] [stdout] | [INFO] [stdout] = note: `y` is of type `i32`, making it ineligible for `Iterator::enumerate` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/aoc_utils.rs:146:5 [INFO] [stdout] | [INFO] [stdout] 146 | !(*x < 10) && n_digits(x) % 2 == 0 [INFO] [stdout] | ^^^^^^^^^^ help: try: `(*x >= 10)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/aoc_utils.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | return Some(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 157 - return Some(result); [INFO] [stdout] 157 + Some(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/aoc_utils.rs:159:9 [INFO] [stdout] | [INFO] [stdout] 159 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 159 - return None; [INFO] [stdout] 159 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i64, i64)` which implements the `Copy` trait [INFO] [stdout] --> src/day_8.rs:99:41 [INFO] [stdout] | [INFO] [stdout] 99 | let mut tmp_coord = ant1.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*ant1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i64, i64)` which implements the `Copy` trait [INFO] [stdout] --> src/day_8.rs:106:41 [INFO] [stdout] | [INFO] [stdout] 106 | let mut tmp_coord = ant2.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*ant2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_8.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | / match self.antennas.get(&coord) { [INFO] [stdout] 141 | | Some(c) => insert_char = *c, [INFO] [stdout] 142 | | _ => (), [INFO] [stdout] 143 | | } [INFO] [stdout] | |_________________^ help: try: `if let Some(c) = self.antennas.get(&coord) { insert_char = *c }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_8.rs:144:17 [INFO] [stdout] | [INFO] [stdout] 144 | / match self.anti_nodes.get(&coord) { [INFO] [stdout] 145 | | Some(c) => insert_char = '#', [INFO] [stdout] 146 | | _ => (), [INFO] [stdout] 147 | | } [INFO] [stdout] | |_________________^ help: try: `if let Some(c) = self.anti_nodes.get(&coord) { insert_char = '#' }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_10.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | / match nines_reachable_from(coord.0, &trail_map) { [INFO] [stdout] 40 | | Some(mut nines) => { [INFO] [stdout] 41 | | nines.sort_unstable(); [INFO] [stdout] 42 | | nines.dedup(); [INFO] [stdout] ... | [INFO] [stdout] 45 | | None => (), [INFO] [stdout] 46 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 39 ~ if let Some(mut nines) = nines_reachable_from(coord.0, &trail_map) { [INFO] [stdout] 40 + nines.sort_unstable(); [INFO] [stdout] 41 + nines.dedup(); [INFO] [stdout] 42 + acc += nines.len() as i32; [INFO] [stdout] 43 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_10.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | / match nines_reachable_from(coord.0, &trail_map) { [INFO] [stdout] 58 | | Some(nines) => { [INFO] [stdout] 59 | | acc += nines.len() as i32; [INFO] [stdout] ... | [INFO] [stdout] 62 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 57 ~ if let Some(nines) = nines_reachable_from(coord.0, &trail_map) { [INFO] [stdout] 58 + acc += nines.len() as i32; [INFO] [stdout] 59 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_10.rs:127:9 [INFO] [stdout] | [INFO] [stdout] 127 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 127 - return None; [INFO] [stdout] 127 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_10.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | return Some(reachable_nines); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 129 - return Some(reachable_nines); [INFO] [stdout] 129 + Some(reachable_nines) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_10.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | return reachable_nines; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 92 - return reachable_nines; [INFO] [stdout] 92 + reachable_nines [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/day_10.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | / if *e == current_elevation + 1 { [INFO] [stdout] 81 | | let nines = nines_reachable_from(&coord, trail_map); [INFO] [stdout] 82 | | match nines { [INFO] [stdout] 83 | | Some(mut nines) => { [INFO] [stdout] ... | [INFO] [stdout] 88 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ Some(e) [INFO] [stdout] 80 ~ if *e == current_elevation + 1 => { [INFO] [stdout] 81 | let nines = nines_reachable_from(&coord, trail_map); [INFO] [stdout] ... [INFO] [stdout] 87 | } [INFO] [stdout] 88 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_10.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | / match trail_map.get(&coord) { [INFO] [stdout] 79 | | Some(e) => { [INFO] [stdout] 80 | | if *e == current_elevation + 1 { [INFO] [stdout] 81 | | let nines = nines_reachable_from(&coord, trail_map); [INFO] [stdout] ... | [INFO] [stdout] 90 | | None => (), [INFO] [stdout] 91 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 78 ~ if let Some(e) = trail_map.get(&coord) { [INFO] [stdout] 79 + if *e == current_elevation + 1 { [INFO] [stdout] 80 + let nines = nines_reachable_from(&coord, trail_map); [INFO] [stdout] 81 + match nines { [INFO] [stdout] 82 + Some(mut nines) => { [INFO] [stdout] 83 + _ = reachable_nines.append(&mut nines); [INFO] [stdout] 84 + } [INFO] [stdout] 85 + None => (), [INFO] [stdout] 86 + } [INFO] [stdout] 87 + } [INFO] [stdout] 88 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_10.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | / match nines { [INFO] [stdout] 83 | | Some(mut nines) => { [INFO] [stdout] 84 | | _ = reachable_nines.append(&mut nines); [INFO] [stdout] ... | [INFO] [stdout] 87 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 82 ~ if let Some(mut nines) = nines { [INFO] [stdout] 83 + _ = reachable_nines.append(&mut nines); [INFO] [stdout] 84 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/day_10.rs:84:29 [INFO] [stdout] | [INFO] [stdout] 84 | ... _ = reachable_nines.append(&mut nines); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 84 - _ = reachable_nines.append(&mut nines); [INFO] [stdout] 84 + reachable_nines.append(&mut nines); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i32, i32)` which implements the `Copy` trait [INFO] [stdout] --> src/day_10.rs:95:25 [INFO] [stdout] | [INFO] [stdout] 95 | let mut tmp_coord = coord.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/day_10.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | _ = reachable_nines.push(*coord); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 100 - _ = reachable_nines.push(*coord); [INFO] [stdout] 100 + reachable_nines.push(*coord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i32, i32)` which implements the `Copy` trait [INFO] [stdout] --> src/day_10.rs:109:21 [INFO] [stdout] | [INFO] [stdout] 109 | tmp_coord = coord.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i32, i32)` which implements the `Copy` trait [INFO] [stdout] --> src/day_10.rs:115:21 [INFO] [stdout] | [INFO] [stdout] 115 | tmp_coord = coord.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i32, i32)` which implements the `Copy` trait [INFO] [stdout] --> src/day_10.rs:121:21 [INFO] [stdout] | [INFO] [stdout] 121 | tmp_coord = coord.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day_9.rs:88:19 [INFO] [stdout] | [INFO] [stdout] 88 | fn checksum(data: &Vec>) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 88 - fn checksum(data: &Vec>) -> i64 { [INFO] [stdout] 88 + fn checksum(data: &[Option]) -> i64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/day_9.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 89 | / data.iter() [INFO] [stdout] 90 | | .enumerate() [INFO] [stdout] 91 | | .map(|(i, v)| match v { [INFO] [stdout] 92 | | Some(n) => (i as i64) * n, [INFO] [stdout] ... | [INFO] [stdout] 95 | | .sum::() [INFO] [stdout] 96 | | .clone() [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] help: try removing the `clone` call [INFO] [stdout] | [INFO] [stdout] 89 ~ data.iter() [INFO] [stdout] 90 + .enumerate() [INFO] [stdout] 91 + .map(|(i, v)| match v { [INFO] [stdout] 92 + Some(n) => (i as i64) * n, [INFO] [stdout] 93 + None => 0, [INFO] [stdout] 94 + }) [INFO] [stdout] 95 + .sum::() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/day_13.rs:41:21 [INFO] [stdout] | [INFO] [stdout] 41 | None => acc + 0, [INFO] [stdout] | ^^^^^^^ help: consider reducing it to: `acc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/day_13.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | result as i64 [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `result` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/day_13.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 50 | / let result = machines [INFO] [stdout] 51 | | .into_iter() [INFO] [stdout] 52 | | .map(|cm| ClawMachine { [INFO] [stdout] 53 | | button_a: cm.button_a, [INFO] [stdout] ... | [INFO] [stdout] 59 | | None => acc + 0, [INFO] [stdout] 60 | | }); [INFO] [stdout] | |___________- unnecessary `let` binding [INFO] [stdout] 61 | result [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 50 ~ [INFO] [stdout] 51 ~ machines [INFO] [stdout] 52 + .into_iter() [INFO] [stdout] 53 + .map(|cm| ClawMachine { [INFO] [stdout] 54 + button_a: cm.button_a, [INFO] [stdout] 55 + button_b: cm.button_b, [INFO] [stdout] 56 + prize: (cm.prize.0 + increment, cm.prize.1 + increment), [INFO] [stdout] 57 + }) [INFO] [stdout] 58 + .fold(0, |acc, m| match m.solve_claw_prize() { [INFO] [stdout] 59 + Some(p) => acc + p, [INFO] [stdout] 60 + None => acc + 0, [INFO] [stdout] 61 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/day_13.rs:59:21 [INFO] [stdout] | [INFO] [stdout] 59 | None => acc + 0, [INFO] [stdout] | ^^^^^^^ help: consider reducing it to: `acc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:68:13 [INFO] [stdout] | [INFO] [stdout] 68 | / return ( [INFO] [stdout] 69 | | digits[1].parse::().unwrap(), [INFO] [stdout] 70 | | digits[2].parse::().unwrap(), [INFO] [stdout] 71 | | ) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 68 ~ ( [INFO] [stdout] 69 + digits[1].parse::().unwrap(), [INFO] [stdout] 70 + digits[2].parse::().unwrap(), [INFO] [stdout] 71 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | / return ( [INFO] [stdout] 81 | | digits[1].parse::().unwrap(), [INFO] [stdout] 82 | | digits[2].parse::().unwrap(), [INFO] [stdout] 83 | | ) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 80 ~ ( [INFO] [stdout] 81 + digits[1].parse::().unwrap(), [INFO] [stdout] 82 + digits[2].parse::().unwrap(), [INFO] [stdout] 83 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> src/day_11.rs:37:10 [INFO] [stdout] | [INFO] [stdout] 37 | .trim() [INFO] [stdout] | __________^ [INFO] [stdout] 38 | | .split_whitespace() [INFO] [stdout] | |_________^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] = note: `#[warn(clippy::trim_split_whitespace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | return machines; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 132 - return machines; [INFO] [stdout] 132 + machines [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day_11.rs:49:22 [INFO] [stdout] | [INFO] [stdout] 49 | match stones.get(&stone) { [INFO] [stdout] | ^^^^^^ help: change this to: `stone` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `ClawMachine` which implements the `Copy` trait [INFO] [stdout] --> src/day_13.rs:119:31 [INFO] [stdout] | [INFO] [stdout] 119 | machines.push(temp_machine.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `temp_machine` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:151:13 [INFO] [stdout] | [INFO] [stdout] 151 | return Some((3 * dx / d) + (dy / d)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 151 - return Some((3 * dx / d) + (dy / d)); [INFO] [stdout] 151 + Some((3 * dx / d) + (dy / d)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:153:13 [INFO] [stdout] | [INFO] [stdout] 153 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 153 - return None; [INFO] [stdout] 153 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_14.rs:50:17 [INFO] [stdout] | [INFO] [stdout] 50 | rb.0 = rb.0 + map_size.0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rb.0 += map_size.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_14.rs:53:17 [INFO] [stdout] | [INFO] [stdout] 53 | rb.1 = rb.1 + map_size.1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rb.1 += map_size.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_14.rs:81:21 [INFO] [stdout] | [INFO] [stdout] 81 | rb.0 = rb.0 + map_size.0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rb.0 += map_size.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day_2.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | .map(|v| is_safe(v)) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the function itself: `is_safe` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_14.rs:84:21 [INFO] [stdout] | [INFO] [stdout] 84 | rb.1 = rb.1 + map_size.1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rb.1 += map_size.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day_2.rs:31:61 [INFO] [stdout] | [INFO] [stdout] 31 | .map(|v| is_safe(v) | get_sub_reports(v).iter().any(|v| is_safe(v))) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the function itself: `is_safe` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/day_14.rs:105:21 [INFO] [stdout] | [INFO] [stdout] 105 | -1_f64 * (p * p.log2()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `-(p * p.log2())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day_2.rs:64:20 [INFO] [stdout] | [INFO] [stdout] 64 | fn is_safe(report: &Vec) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 64 - fn is_safe(report: &Vec) -> bool { [INFO] [stdout] 64 + fn is_safe(report: &[i32]) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 151 | return Some(Quadrant::One); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 151 - return Some(Quadrant::One); [INFO] [stdout] 151 + Some(Quadrant::One) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | return Some(Quadrant::Two); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 153 - return Some(Quadrant::Two); [INFO] [stdout] 153 + Some(Quadrant::Two) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 155 | return Some(Quadrant::Three); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 155 - return Some(Quadrant::Three); [INFO] [stdout] 155 + Some(Quadrant::Three) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | return Some(Quadrant::Four); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 157 - return Some(Quadrant::Four); [INFO] [stdout] 157 + Some(Quadrant::Four) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:159:9 [INFO] [stdout] | [INFO] [stdout] 159 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 159 - return None; [INFO] [stdout] 159 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day_2.rs:74:28 [INFO] [stdout] | [INFO] [stdout] 74 | fn get_sub_reports(report: &Vec) -> Vec> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 74 ~ fn get_sub_reports(report: &[i32]) -> Vec> { [INFO] [stdout] 75 | let mut sub_reports: Vec> = Vec::new(); [INFO] [stdout] 76 | [INFO] [stdout] 77 | for i in 0..report.len() { [INFO] [stdout] 78 ~ let mut sub_report = report.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/day_3.rs:72:74 [INFO] [stdout] | [INFO] [stdout] 72 | while let Some(d) = corrupt_code_iter.next_if(|&chr| chr.is_digit(10)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `chr.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/day_3.rs:78:78 [INFO] [stdout] | [INFO] [stdout] 78 | while let Some(d) = corrupt_code_iter.next_if(|&chr| chr.is_digit(10)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `chr.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_3.rs:157:17 [INFO] [stdout] | [INFO] [stdout] 157 | / return read_to_string(EXAMPLE_1_FILEPATH) [INFO] [stdout] 158 | | .expect("Error reading file: {file_path}"); [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 157 ~ read_to_string(EXAMPLE_1_FILEPATH) [INFO] [stdout] 158 ~ .expect("Error reading file: {file_path}") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_3.rs:161:17 [INFO] [stdout] | [INFO] [stdout] 161 | / return read_to_string(EXAMPLE_2_FILEPATH) [INFO] [stdout] 162 | | .expect("Error reading file: {file_path}"); [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 161 ~ read_to_string(EXAMPLE_2_FILEPATH) [INFO] [stdout] 162 ~ .expect("Error reading file: {file_path}") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `GridCoordinate` which implements the `Copy` trait [INFO] [stdout] --> src/day_4.rs:54:44 [INFO] [stdout] | [INFO] [stdout] 54 | let mut current_location = pos.clone(); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_4.rs:62:21 [INFO] [stdout] | [INFO] [stdout] 62 | score = score + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `score += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `GridCoordinate` which implements the `Copy` trait [INFO] [stdout] --> src/day_4.rs:79:40 [INFO] [stdout] | [INFO] [stdout] 79 | let mut current_location = pos.clone(); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day_4.rs:94:33 [INFO] [stdout] | [INFO] [stdout] 94 | if targets.contains(&&diag1.as_str()) && targets.contains(&&diag2.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `(&diag1.as_str())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day_4.rs:94:71 [INFO] [stdout] | [INFO] [stdout] 94 | if targets.contains(&&diag1.as_str()) && targets.contains(&&diag2.as_str()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `(&diag2.as_str())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_4.rs:95:17 [INFO] [stdout] | [INFO] [stdout] 95 | score = score + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `score += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/day_5.rs:142:12 [INFO] [stdout] | [INFO] [stdout] 142 | if line == "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_5.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | return RuleCheckResult::Fail; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 193 - return RuleCheckResult::Fail; [INFO] [stdout] 193 + RuleCheckResult::Fail [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_5.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | return RuleCheckResult::Pass; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 195 - return RuleCheckResult::Pass; [INFO] [stdout] 195 + RuleCheckResult::Pass [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day_5.rs:179:34 [INFO] [stdout] | [INFO] [stdout] 179 | fn update_rule_check(man_update: &Vec, rule: &(i32, i32)) -> RuleCheckResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 179 - fn update_rule_check(man_update: &Vec, rule: &(i32, i32)) -> RuleCheckResult { [INFO] [stdout] 179 + fn update_rule_check(man_update: &[i32], rule: &(i32, i32)) -> RuleCheckResult { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `map` over `inspect` [INFO] [stdout] --> src/day_5_sort.rs:50:10 [INFO] [stdout] | [INFO] [stdout] 50 | .map(|u| { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] = note: `#[warn(clippy::manual_inspect)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 50 ~ .inspect(|u| { [INFO] [stdout] 51 | u.sort_by(|&a, &b| { [INFO] [stdout] ... [INFO] [stdout] 58 | } [INFO] [stdout] 59 ~ }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/day_5_sort.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | if line == "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | return SuitLabDirection::Right; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 - return SuitLabDirection::Right; [INFO] [stdout] 123 + SuitLabDirection::Right [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:125:21 [INFO] [stdout] | [INFO] [stdout] 125 | return SuitLabDirection::OffMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 125 - return SuitLabDirection::OffMap; [INFO] [stdout] 125 + SuitLabDirection::OffMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:128:21 [INFO] [stdout] | [INFO] [stdout] 128 | return direction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 - return direction; [INFO] [stdout] 128 + direction [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:136:21 [INFO] [stdout] | [INFO] [stdout] 136 | return SuitLabDirection::Up; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 136 - return SuitLabDirection::Up; [INFO] [stdout] 136 + SuitLabDirection::Up [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:138:21 [INFO] [stdout] | [INFO] [stdout] 138 | return SuitLabDirection::OffMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 138 - return SuitLabDirection::OffMap; [INFO] [stdout] 138 + SuitLabDirection::OffMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:141:21 [INFO] [stdout] | [INFO] [stdout] 141 | return direction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 141 - return direction; [INFO] [stdout] 141 + direction [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:149:21 [INFO] [stdout] | [INFO] [stdout] 149 | return SuitLabDirection::Down; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 149 - return SuitLabDirection::Down; [INFO] [stdout] 149 + SuitLabDirection::Down [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:151:21 [INFO] [stdout] | [INFO] [stdout] 151 | return SuitLabDirection::OffMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 151 - return SuitLabDirection::OffMap; [INFO] [stdout] 151 + SuitLabDirection::OffMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:154:21 [INFO] [stdout] | [INFO] [stdout] 154 | return direction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 154 - return direction; [INFO] [stdout] 154 + direction [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:162:21 [INFO] [stdout] | [INFO] [stdout] 162 | return SuitLabDirection::Left; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 162 - return SuitLabDirection::Left; [INFO] [stdout] 162 + SuitLabDirection::Left [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:164:21 [INFO] [stdout] | [INFO] [stdout] 164 | return SuitLabDirection::OffMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 164 - return SuitLabDirection::OffMap; [INFO] [stdout] 164 + SuitLabDirection::OffMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:167:21 [INFO] [stdout] | [INFO] [stdout] 167 | return direction; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return direction; [INFO] [stdout] 167 + direction [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_6.rs:170:18 [INFO] [stdout] | [INFO] [stdout] 170 | _ => return SuitLabDirection::OffMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 170 - _ => return SuitLabDirection::OffMap, [INFO] [stdout] 170 + _ => SuitLabDirection::OffMap, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/day_7.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 35 | / let result = calibrations [INFO] [stdout] 36 | | .into_iter() [INFO] [stdout] 37 | | .filter(|x| eq_has_solutions(x.0, 0, &x.1)) [INFO] [stdout] 38 | | .map(|x| x.0) [INFO] [stdout] 39 | | .sum(); [INFO] [stdout] | |_______________- unnecessary `let` binding [INFO] [stdout] 40 | [INFO] [stdout] 41 | result [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 35 ~ [INFO] [stdout] 36 | [INFO] [stdout] 37 ~ calibrations [INFO] [stdout] 38 + .into_iter() [INFO] [stdout] 39 + .filter(|x| eq_has_solutions(x.0, 0, &x.1)) [INFO] [stdout] 40 + .map(|x| x.0) [INFO] [stdout] 41 + .sum() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/day_7.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 60 | / let result = calibrations [INFO] [stdout] 61 | | .into_iter() [INFO] [stdout] 62 | | .filter(|x| eq_has_solutions_part2(x.0, 0, &x.1)) [INFO] [stdout] 63 | | .map(|x| x.0) [INFO] [stdout] 64 | | .sum(); [INFO] [stdout] | |_______________- unnecessary `let` binding [INFO] [stdout] 65 | [INFO] [stdout] 66 | result [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 60 ~ [INFO] [stdout] 61 | [INFO] [stdout] 62 ~ calibrations [INFO] [stdout] 63 + .into_iter() [INFO] [stdout] 64 + .filter(|x| eq_has_solutions_part2(x.0, 0, &x.1)) [INFO] [stdout] 65 + .map(|x| x.0) [INFO] [stdout] 66 + .sum() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `i64` is unnecessary [INFO] [stdout] --> src/day_7.rs:160:55 [INFO] [stdout] | [INFO] [stdout] 160 | assert!(eq_has_solutions_part2(156, 15, &vec![6 as i64])); [INFO] [stdout] | ^^^^^^^^ help: try: `6_i64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `i64` is unnecessary [INFO] [stdout] --> src/day_7.rs:164:19 [INFO] [stdout] | [INFO] [stdout] 164 | &vec![8 as i64, 6 as i64, 15 as i64] [INFO] [stdout] | ^^^^^^^^ help: try: `8_i64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `i64` is unnecessary [INFO] [stdout] --> src/day_7.rs:164:29 [INFO] [stdout] | [INFO] [stdout] 164 | &vec![8 as i64, 6 as i64, 15 as i64] [INFO] [stdout] | ^^^^^^^^ help: try: `6_i64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `i64` is unnecessary [INFO] [stdout] --> src/day_7.rs:164:39 [INFO] [stdout] | [INFO] [stdout] 164 | &vec![8 as i64, 6 as i64, 15 as i64] [INFO] [stdout] | ^^^^^^^^^ help: try: `15_i64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i64, i64)` which implements the `Copy` trait [INFO] [stdout] --> src/day_8.rs:99:41 [INFO] [stdout] | [INFO] [stdout] 99 | let mut tmp_coord = ant1.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*ant1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(i64, i64)` which implements the `Copy` trait [INFO] [stdout] --> src/day_8.rs:106:41 [INFO] [stdout] | [INFO] [stdout] 106 | let mut tmp_coord = ant2.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*ant2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_8.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | / match self.antennas.get(&coord) { [INFO] [stdout] 141 | | Some(c) => insert_char = *c, [INFO] [stdout] 142 | | _ => (), [INFO] [stdout] 143 | | } [INFO] [stdout] | |_________________^ help: try: `if let Some(c) = self.antennas.get(&coord) { insert_char = *c }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/day_8.rs:144:17 [INFO] [stdout] | [INFO] [stdout] 144 | / match self.anti_nodes.get(&coord) { [INFO] [stdout] 145 | | Some(c) => insert_char = '#', [INFO] [stdout] 146 | | _ => (), [INFO] [stdout] 147 | | } [INFO] [stdout] | |_________________^ help: try: `if let Some(c) = self.anti_nodes.get(&coord) { insert_char = '#' }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::collections::hash_map::Values<'_, (i64, i64), char>` [INFO] [stdout] --> src/day_8.rs:247:13 [INFO] [stdout] | [INFO] [stdout] 247 | / antenna_map [INFO] [stdout] 248 | | .antennas [INFO] [stdout] 249 | | .values() [INFO] [stdout] 250 | | .into_iter() [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 247 ~ antenna_map [INFO] [stdout] 248 + .antennas [INFO] [stdout] 249 + .values() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::collections::hash_map::Values<'_, (i64, i64), char>` [INFO] [stdout] --> src/day_8.rs:256:13 [INFO] [stdout] | [INFO] [stdout] 256 | / antenna_map [INFO] [stdout] 257 | | .antennas [INFO] [stdout] 258 | | .values() [INFO] [stdout] 259 | | .into_iter() [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 256 ~ antenna_map [INFO] [stdout] 257 + .antennas [INFO] [stdout] 258 + .values() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day_9.rs:88:19 [INFO] [stdout] | [INFO] [stdout] 88 | fn checksum(data: &Vec>) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 88 - fn checksum(data: &Vec>) -> i64 { [INFO] [stdout] 88 + fn checksum(data: &[Option]) -> i64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/day_9.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 89 | / data.iter() [INFO] [stdout] 90 | | .enumerate() [INFO] [stdout] 91 | | .map(|(i, v)| match v { [INFO] [stdout] 92 | | Some(n) => (i as i64) * n, [INFO] [stdout] ... | [INFO] [stdout] 95 | | .sum::() [INFO] [stdout] 96 | | .clone() [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] help: try removing the `clone` call [INFO] [stdout] | [INFO] [stdout] 89 ~ data.iter() [INFO] [stdout] 90 + .enumerate() [INFO] [stdout] 91 + .map(|(i, v)| match v { [INFO] [stdout] 92 + Some(n) => (i as i64) * n, [INFO] [stdout] 93 + None => 0, [INFO] [stdout] 94 + }) [INFO] [stdout] 95 + .sum::() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/day_13.rs:41:21 [INFO] [stdout] | [INFO] [stdout] 41 | None => acc + 0, [INFO] [stdout] | ^^^^^^^ help: consider reducing it to: `acc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/day_13.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | result as i64 [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `result` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/day_13.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 50 | / let result = machines [INFO] [stdout] 51 | | .into_iter() [INFO] [stdout] 52 | | .map(|cm| ClawMachine { [INFO] [stdout] 53 | | button_a: cm.button_a, [INFO] [stdout] ... | [INFO] [stdout] 59 | | None => acc + 0, [INFO] [stdout] 60 | | }); [INFO] [stdout] | |___________- unnecessary `let` binding [INFO] [stdout] 61 | result [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 50 ~ [INFO] [stdout] 51 ~ machines [INFO] [stdout] 52 + .into_iter() [INFO] [stdout] 53 + .map(|cm| ClawMachine { [INFO] [stdout] 54 + button_a: cm.button_a, [INFO] [stdout] 55 + button_b: cm.button_b, [INFO] [stdout] 56 + prize: (cm.prize.0 + increment, cm.prize.1 + increment), [INFO] [stdout] 57 + }) [INFO] [stdout] 58 + .fold(0, |acc, m| match m.solve_claw_prize() { [INFO] [stdout] 59 + Some(p) => acc + p, [INFO] [stdout] 60 + None => acc + 0, [INFO] [stdout] 61 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/day_13.rs:59:21 [INFO] [stdout] | [INFO] [stdout] 59 | None => acc + 0, [INFO] [stdout] | ^^^^^^^ help: consider reducing it to: `acc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:68:13 [INFO] [stdout] | [INFO] [stdout] 68 | / return ( [INFO] [stdout] 69 | | digits[1].parse::().unwrap(), [INFO] [stdout] 70 | | digits[2].parse::().unwrap(), [INFO] [stdout] 71 | | ) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 68 ~ ( [INFO] [stdout] 69 + digits[1].parse::().unwrap(), [INFO] [stdout] 70 + digits[2].parse::().unwrap(), [INFO] [stdout] 71 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | / return ( [INFO] [stdout] 81 | | digits[1].parse::().unwrap(), [INFO] [stdout] 82 | | digits[2].parse::().unwrap(), [INFO] [stdout] 83 | | ) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 80 ~ ( [INFO] [stdout] 81 + digits[1].parse::().unwrap(), [INFO] [stdout] 82 + digits[2].parse::().unwrap(), [INFO] [stdout] 83 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | return machines; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 132 - return machines; [INFO] [stdout] 132 + machines [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `ClawMachine` which implements the `Copy` trait [INFO] [stdout] --> src/day_13.rs:119:31 [INFO] [stdout] | [INFO] [stdout] 119 | machines.push(temp_machine.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `temp_machine` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:151:13 [INFO] [stdout] | [INFO] [stdout] 151 | return Some((3 * dx / d) + (dy / d)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 151 - return Some((3 * dx / d) + (dy / d)); [INFO] [stdout] 151 + Some((3 * dx / d) + (dy / d)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_13.rs:153:13 [INFO] [stdout] | [INFO] [stdout] 153 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 153 - return None; [INFO] [stdout] 153 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day_13.rs:208:37 [INFO] [stdout] | [INFO] [stdout] 208 | let res = parse_button_line(&but_str); [INFO] [stdout] | ^^^^^^^^ help: change this to: `but_str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day_13.rs:216:36 [INFO] [stdout] | [INFO] [stdout] 216 | let res = parse_prize_line(&but_str); [INFO] [stdout] | ^^^^^^^^ help: change this to: `but_str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_14.rs:50:17 [INFO] [stdout] | [INFO] [stdout] 50 | rb.0 = rb.0 + map_size.0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rb.0 += map_size.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_14.rs:53:17 [INFO] [stdout] | [INFO] [stdout] 53 | rb.1 = rb.1 + map_size.1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rb.1 += map_size.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_14.rs:81:21 [INFO] [stdout] | [INFO] [stdout] 81 | rb.0 = rb.0 + map_size.0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rb.0 += map_size.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day_14.rs:84:21 [INFO] [stdout] | [INFO] [stdout] 84 | rb.1 = rb.1 + map_size.1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rb.1 += map_size.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/day_14.rs:105:21 [INFO] [stdout] | [INFO] [stdout] 105 | -1_f64 * (p * p.log2()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `-(p * p.log2())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 151 | return Some(Quadrant::One); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 151 - return Some(Quadrant::One); [INFO] [stdout] 151 + Some(Quadrant::One) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | return Some(Quadrant::Two); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 153 - return Some(Quadrant::Two); [INFO] [stdout] 153 + Some(Quadrant::Two) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 155 | return Some(Quadrant::Three); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 155 - return Some(Quadrant::Three); [INFO] [stdout] 155 + Some(Quadrant::Three) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | return Some(Quadrant::Four); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 157 - return Some(Quadrant::Four); [INFO] [stdout] 157 + Some(Quadrant::Four) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day_14.rs:159:9 [INFO] [stdout] | [INFO] [stdout] 159 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 159 - return None; [INFO] [stdout] 159 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/day_7.rs:160:49 [INFO] [stdout] | [INFO] [stdout] 160 | assert!(eq_has_solutions_part2(156, 15, &vec![6 as i64])); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[6 as i64]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/day_7.rs:164:13 [INFO] [stdout] | [INFO] [stdout] 164 | &vec![8 as i64, 6 as i64, 15 as i64] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[8 as i64, 6 as i64, 15 as i64]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.70s [INFO] running `Command { std: "docker" "inspect" "2a214634d994860da6538c833cff99d4d7d3ad9c5ce6c0779f42f5a5f56d3c9d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2a214634d994860da6538c833cff99d4d7d3ad9c5ce6c0779f42f5a5f56d3c9d", kill_on_drop: false }` [INFO] [stdout] 2a214634d994860da6538c833cff99d4d7d3ad9c5ce6c0779f42f5a5f56d3c9d