[INFO] cloning repository https://github.com/galenelias/AdventOfCode_2024 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/galenelias/AdventOfCode_2024" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgalenelias%2FAdventOfCode_2024", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgalenelias%2FAdventOfCode_2024'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 02b0fd7c003ecc145bcadf1d57867d80e288449b [INFO] linting galenelias/AdventOfCode_2024 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgalenelias%2FAdventOfCode_2024" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/galenelias/AdventOfCode_2024 [INFO] finished tweaking git repo https://github.com/galenelias/AdventOfCode_2024 [INFO] tweaked toml for git repo https://github.com/galenelias/AdventOfCode_2024 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/galenelias/AdventOfCode_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/galenelias/AdventOfCode_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] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded emergence v2.0.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 3aa95476a09099d0a91677bf6b14c5432505afe300c14323057b0ca071b3bcde [INFO] running `Command { std: "docker" "start" "-a" "3aa95476a09099d0a91677bf6b14c5432505afe300c14323057b0ca071b3bcde", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3aa95476a09099d0a91677bf6b14c5432505afe300c14323057b0ca071b3bcde", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3aa95476a09099d0a91677bf6b14c5432505afe300c14323057b0ca071b3bcde", kill_on_drop: false }` [INFO] [stdout] 3aa95476a09099d0a91677bf6b14c5432505afe300c14323057b0ca071b3bcde [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] e957f41a1567ece6a6bd38e33179dcc1560818153e342f9c1a3fad426b634942 [INFO] running `Command { std: "docker" "start" "-a" "e957f41a1567ece6a6bd38e33179dcc1560818153e342f9c1a3fad426b634942", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.89 [INFO] [stderr] Compiling unicode-ident v1.0.13 [INFO] [stderr] Compiling libc v0.2.162 [INFO] [stderr] Checking litemap v0.7.3 [INFO] [stderr] Compiling cc v1.1.37 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling serde v1.0.214 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling num-bigint v0.3.3 [INFO] [stderr] Compiling num-rational v0.3.2 [INFO] [stderr] Checking option-ext v0.2.0 [INFO] [stderr] Checking clap_lex v0.7.2 [INFO] [stderr] Checking webpki-roots v0.25.4 [INFO] [stderr] Checking regex-automata v0.4.8 [INFO] [stderr] Checking clap_builder v4.5.20 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Checking dirs-sys v0.4.1 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Compiling syn v2.0.87 [INFO] [stderr] Checking dirs v5.0.1 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking num-complex v0.3.1 [INFO] [stderr] Checking chrono v0.4.38 [INFO] [stderr] Checking tokio v1.41.1 [INFO] [stderr] Compiling ring v0.17.8 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking num v0.3.1 [INFO] [stderr] Checking tokio-util v0.7.12 [INFO] [stderr] Compiling synstructure v0.13.1 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Compiling zerofrom-derive v0.1.4 [INFO] [stderr] Compiling yoke-derive v0.7.4 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling clap_derive v4.5.18 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking zerofrom v0.1.4 [INFO] [stderr] Checking yoke v0.7.4 [INFO] [stderr] Checking zerovec v0.10.4 [INFO] [stderr] Checking clap v4.5.20 [INFO] [stderr] Checking tinystr v0.7.6 [INFO] [stderr] Checking icu_collections v1.5.0 [INFO] [stderr] Checking icu_locid v1.5.0 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking hyper v0.14.31 [INFO] [stderr] Checking icu_provider v1.5.0 [INFO] [stderr] Checking icu_locid_transform v1.5.0 [INFO] [stderr] Checking icu_properties v1.5.1 [INFO] [stderr] Checking hyper-rustls v0.24.2 [INFO] [stderr] Checking icu_normalizer v1.5.0 [INFO] [stderr] Checking idna_adapter v1.2.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking url v2.5.3 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking emergence v2.0.0 [INFO] [stderr] Checking advent_of_code_2023 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:10:2 [INFO] [stdout] | [INFO] [stdout] 10 | return is_decreasing || is_increasing; [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] 10 - return is_decreasing || is_increasing; [INFO] [stdout] 10 + is_decreasing || is_increasing [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/day02.rs:8:45 [INFO] [stdout] | [INFO] [stdout] 8 | let is_decreasing = deltas.iter().all(|&x| x >= -3 && x <= -1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `(-3..=-1).contains(&x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/day02.rs:9:45 [INFO] [stdout] | [INFO] [stdout] 9 | let is_increasing = deltas.iter().all(|&x| x >= 1 && x <= 3); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use: `(1..=3).contains(&x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day03.rs:11:20 [INFO] [stdout] | [INFO] [stdout] 11 | .captures_iter(&input) [INFO] [stdout] | ^^^^^^ help: change this to: `input` [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: unneeded `return` statement [INFO] [stdout] --> src/day04.rs:19:2 [INFO] [stdout] | [INFO] [stdout] 19 | return false; [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] 19 - return false; [INFO] [stdout] 19 + false [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/day04.rs:3:18 [INFO] [stdout] | [INFO] [stdout] 3 | fn is_xmas(grid: &Vec>, r: usize, c: usize, dr: isize, dc: isize) -> 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] 3 - fn is_xmas(grid: &Vec>, r: usize, c: usize, dr: isize, dc: isize) -> bool { [INFO] [stdout] 3 + fn is_xmas(grid: &[Vec], r: usize, c: usize, dr: isize, dc: isize) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day04.rs:41:2 [INFO] [stdout] | [INFO] [stdout] 41 | return grid[r - 1][c - 1] != grid[r + 1][c + 1]; [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] 41 - return grid[r - 1][c - 1] != grid[r + 1][c + 1]; [INFO] [stdout] 41 + grid[r - 1][c - 1] != grid[r + 1][c + 1] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:10:2 [INFO] [stdout] | [INFO] [stdout] 10 | return is_decreasing || is_increasing; [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] 10 - return is_decreasing || is_increasing; [INFO] [stdout] 10 + is_decreasing || is_increasing [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/day02.rs:8:45 [INFO] [stdout] | [INFO] [stdout] 8 | let is_decreasing = deltas.iter().all(|&x| x >= -3 && x <= -1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `(-3..=-1).contains(&x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` 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/day04.rs:22:19 [INFO] [stdout] | [INFO] [stdout] 22 | fn is_x_mas(grid: &Vec>, r: usize, c: usize) -> 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] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn is_x_mas(grid: &Vec>, r: usize, c: usize) -> bool { [INFO] [stdout] 22 + fn is_x_mas(grid: &[Vec], r: usize, c: usize) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/day02.rs:9:45 [INFO] [stdout] | [INFO] [stdout] 9 | let is_increasing = deltas.iter().all(|&x| x >= 1 && x <= 3); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use: `(1..=3).contains(&x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day03.rs:11:20 [INFO] [stdout] | [INFO] [stdout] 11 | .captures_iter(&input) [INFO] [stdout] | ^^^^^^ help: change this to: `input` [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: unneeded `return` statement [INFO] [stdout] --> src/day04.rs:19:2 [INFO] [stdout] | [INFO] [stdout] 19 | return false; [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] 19 - return false; [INFO] [stdout] 19 + false [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/day04.rs:3:18 [INFO] [stdout] | [INFO] [stdout] 3 | fn is_xmas(grid: &Vec>, r: usize, c: usize, dr: isize, dc: isize) -> 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] 3 - fn is_xmas(grid: &Vec>, r: usize, c: usize, dr: isize, dc: isize) -> bool { [INFO] [stdout] 3 + fn is_xmas(grid: &[Vec], r: usize, c: usize, dr: isize, dc: isize) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day04.rs:41:2 [INFO] [stdout] | [INFO] [stdout] 41 | return grid[r - 1][c - 1] != grid[r + 1][c + 1]; [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] 41 - return grid[r - 1][c - 1] != grid[r + 1][c + 1]; [INFO] [stdout] 41 + grid[r - 1][c - 1] != grid[r + 1][c + 1] [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/day04.rs:22:19 [INFO] [stdout] | [INFO] [stdout] 22 | fn is_x_mas(grid: &Vec>, r: usize, c: usize) -> 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] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn is_x_mas(grid: &Vec>, r: usize, c: usize) -> bool { [INFO] [stdout] 22 + fn is_x_mas(grid: &[Vec], r: usize, c: usize) -> 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/day06.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | grid: &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] 13 - grid: &Vec>, [INFO] [stdout] 13 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day06.rs:63:2 [INFO] [stdout] | [INFO] [stdout] 63 | return visited; [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] 63 - return visited; [INFO] [stdout] 63 + visited [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day06.rs:54:48 [INFO] [stdout] | [INFO] [stdout] 54 | if let Some((new_pos, new_dir)) = move_guard(&grid, guard_pos, dir) { [INFO] [stdout] | ^^^^^ help: change this to: `grid` [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/day06.rs:77:48 [INFO] [stdout] | [INFO] [stdout] 77 | if let Some((new_pos, new_dir)) = move_guard(&grid, guard_pos, dir) { [INFO] [stdout] | ^^^^^ help: change this to: `grid` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/day07.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 5 | num1 * 10i64.pow(num2_digits as u32) + num2 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `num2_digits` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day06.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | grid: &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] 13 - grid: &Vec>, [INFO] [stdout] 13 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day06.rs:63:2 [INFO] [stdout] | [INFO] [stdout] 63 | return visited; [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] 63 - return visited; [INFO] [stdout] 63 + visited [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day06.rs:54:48 [INFO] [stdout] | [INFO] [stdout] 54 | if let Some((new_pos, new_dir)) = move_guard(&grid, guard_pos, dir) { [INFO] [stdout] | ^^^^^ help: change this to: `grid` [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/day06.rs:77:48 [INFO] [stdout] | [INFO] [stdout] 77 | if let Some((new_pos, new_dir)) = move_guard(&grid, guard_pos, dir) { [INFO] [stdout] | ^^^^^ help: change this to: `grid` [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: the loop variable `r` is used to index `grid` [INFO] [stdout] --> src/day08.rs:47:11 [INFO] [stdout] | [INFO] [stdout] 47 | for r in 0..grid.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 47 - for r in 0..grid.len() { [INFO] [stdout] 47 + for (r, ) in grid.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is used to index `grid` [INFO] [stdout] --> src/day08.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | for c in 0..grid[r].len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 48 - for c in 0..grid[r].len() { [INFO] [stdout] 48 + for (c, ) in grid.iter().enumerate().take(grid[r].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/day07.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 5 | num1 * 10i64.pow(num2_digits as u32) + num2 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `num2_digits` [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: the loop variable `r` is used to index `grid` [INFO] [stdout] --> src/day08.rs:47:11 [INFO] [stdout] | [INFO] [stdout] 47 | for r in 0..grid.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 47 - for r in 0..grid.len() { [INFO] [stdout] 47 + for (r, ) in grid.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is used to index `grid` [INFO] [stdout] --> src/day08.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | for c in 0..grid[r].len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 48 - for c in 0..grid[r].len() { [INFO] [stdout] 48 + for (c, ) in grid.iter().enumerate().take(grid[r].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day09.rs:73:4 [INFO] [stdout] | [INFO] [stdout] 73 | / if i < files.len() - 1 { [INFO] [stdout] 74 | | if files[i + 1].start - files[i].end() >= cur_file.size { [INFO] [stdout] 75 | | let mut popped_file = files.remove(cur_file_pos); [INFO] [stdout] 76 | | popped_file.start = files[i].end(); [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 73 ~ if i < files.len() - 1 [INFO] [stdout] 74 ~ && files[i + 1].start - files[i].end() >= cur_file.size { [INFO] [stdout] 75 | let mut popped_file = files.remove(cur_file_pos); [INFO] [stdout] ... [INFO] [stdout] 78 | break; [INFO] [stdout] 79 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day10.rs:29:2 [INFO] [stdout] | [INFO] [stdout] 29 | return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 29 - return result; [INFO] [stdout] 29 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day10.rs:51:2 [INFO] [stdout] | [INFO] [stdout] 51 | return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 51 - return result; [INFO] [stdout] 51 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day09.rs:73:4 [INFO] [stdout] | [INFO] [stdout] 73 | / if i < files.len() - 1 { [INFO] [stdout] 74 | | if files[i + 1].start - files[i].end() >= cur_file.size { [INFO] [stdout] 75 | | let mut popped_file = files.remove(cur_file_pos); [INFO] [stdout] 76 | | popped_file.start = files[i].end(); [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 73 ~ if i < files.len() - 1 [INFO] [stdout] 74 ~ && files[i + 1].start - files[i].end() >= cur_file.size { [INFO] [stdout] 75 | let mut popped_file = files.remove(cur_file_pos); [INFO] [stdout] ... [INFO] [stdout] 78 | break; [INFO] [stdout] 79 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:75:8 [INFO] [stdout] | [INFO] [stdout] 75 | if !seen.contains(&(r + 1, c)) [INFO] [stdout] | ____________________^ [INFO] [stdout] 76 | | && !(seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] | |_______________________________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 75 - if !seen.contains(&(r + 1, c)) [INFO] [stdout] 76 - && !(seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] 75 + if !(seen.contains(&(r + 1, c)) || seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] | [INFO] [stdout] 75 - if !seen.contains(&(r + 1, c)) [INFO] [stdout] 76 - && !(seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] 75 + if (seen.contains(&(r + 1, c - 1)) || !seen.contains(&(r, c - 1))) && !seen.contains(&(r + 1, c)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | && !(seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!seen.contains(&(r, c - 1)) || seen.contains(&(r + 1, c - 1))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:81:8 [INFO] [stdout] | [INFO] [stdout] 81 | if !seen.contains(&(r, c - 1)) [INFO] [stdout] | ____________________^ [INFO] [stdout] 82 | | && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] | |_______________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 81 - if !seen.contains(&(r, c - 1)) [INFO] [stdout] 82 - && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] 81 + if !(seen.contains(&(r, c - 1)) || seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] | [INFO] [stdout] 81 - if !seen.contains(&(r, c - 1)) [INFO] [stdout] 82 - && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] 81 + if (seen.contains(&(r - 1, c - 1)) || !seen.contains(&(r - 1, c))) && !seen.contains(&(r, c - 1)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!seen.contains(&(r - 1, c)) || seen.contains(&(r - 1, c - 1))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:87:8 [INFO] [stdout] | [INFO] [stdout] 87 | if !seen.contains(&(r, c + 1)) [INFO] [stdout] | ____________________^ [INFO] [stdout] 88 | | && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] | |_______________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 87 - if !seen.contains(&(r, c + 1)) [INFO] [stdout] 88 - && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] 87 + if !(seen.contains(&(r, c + 1)) || seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] | [INFO] [stdout] 87 - if !seen.contains(&(r, c + 1)) [INFO] [stdout] 88 - && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] 87 + if (seen.contains(&(r - 1, c + 1)) || !seen.contains(&(r - 1, c))) && !seen.contains(&(r, c + 1)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!seen.contains(&(r - 1, c)) || seen.contains(&(r - 1, c + 1))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day15.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | fn print_grid(grid: &Vec>, robot_pos: (isize, isize)) { [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] 4 - fn print_grid(grid: &Vec>, robot_pos: (isize, isize)) { [INFO] [stdout] 4 + fn print_grid(grid: &[Vec], robot_pos: (isize, isize)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `r` is used to index `grid` [INFO] [stdout] --> src/day15.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | for r in 0..grid.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 5 - for r in 0..grid.len() { [INFO] [stdout] 5 + for (r, ) in grid.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day10.rs:29:2 [INFO] [stdout] | [INFO] [stdout] 29 | return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 29 - return result; [INFO] [stdout] 29 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day10.rs:51:2 [INFO] [stdout] | [INFO] [stdout] 51 | return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 51 - return result; [INFO] [stdout] 51 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:75:8 [INFO] [stdout] | [INFO] [stdout] 75 | if !seen.contains(&(r + 1, c)) [INFO] [stdout] | ____________________^ [INFO] [stdout] 76 | | && !(seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] | |_______________________________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 75 - if !seen.contains(&(r + 1, c)) [INFO] [stdout] 76 - && !(seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] 75 + if !(seen.contains(&(r + 1, c)) || seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] | [INFO] [stdout] 75 - if !seen.contains(&(r + 1, c)) [INFO] [stdout] 76 - && !(seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] 75 + if (seen.contains(&(r + 1, c - 1)) || !seen.contains(&(r, c - 1))) && !seen.contains(&(r + 1, c)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is used to index `grid` [INFO] [stdout] --> src/day15.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | for c in 0..grid[r].len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 6 - for c in 0..grid[r].len() { [INFO] [stdout] 6 + for (c, ) in grid.iter().enumerate().take(grid[r].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | && !(seen.contains(&(r, c - 1)) && !seen.contains(&(r + 1, c - 1))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!seen.contains(&(r, c - 1)) || seen.contains(&(r + 1, c - 1))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:81:8 [INFO] [stdout] | [INFO] [stdout] 81 | if !seen.contains(&(r, c - 1)) [INFO] [stdout] | ____________________^ [INFO] [stdout] 82 | | && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] | |_______________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 81 - if !seen.contains(&(r, c - 1)) [INFO] [stdout] 82 - && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] 81 + if !(seen.contains(&(r, c - 1)) || seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] | [INFO] [stdout] 81 - if !seen.contains(&(r, c - 1)) [INFO] [stdout] 82 - && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] 81 + if (seen.contains(&(r - 1, c - 1)) || !seen.contains(&(r - 1, c))) && !seen.contains(&(r, c - 1)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c - 1))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!seen.contains(&(r - 1, c)) || seen.contains(&(r - 1, c - 1))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:87:8 [INFO] [stdout] | [INFO] [stdout] 87 | if !seen.contains(&(r, c + 1)) [INFO] [stdout] | ____________________^ [INFO] [stdout] 88 | | && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] | |_______________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 87 - if !seen.contains(&(r, c + 1)) [INFO] [stdout] 88 - && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] 87 + if !(seen.contains(&(r, c + 1)) || seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] | [INFO] [stdout] 87 - if !seen.contains(&(r, c + 1)) [INFO] [stdout] 88 - && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] 87 + if (seen.contains(&(r - 1, c + 1)) || !seen.contains(&(r - 1, c))) && !seen.contains(&(r, c + 1)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day12.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | && !(seen.contains(&(r - 1, c)) && !seen.contains(&(r - 1, c + 1))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!seen.contains(&(r - 1, c)) || seen.contains(&(r - 1, c + 1))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day15.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | fn print_grid(grid: &Vec>, robot_pos: (isize, isize)) { [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] 4 - fn print_grid(grid: &Vec>, robot_pos: (isize, isize)) { [INFO] [stdout] 4 + fn print_grid(grid: &[Vec], robot_pos: (isize, isize)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `r` is used to index `grid` [INFO] [stdout] --> src/day15.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | for r in 0..grid.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 5 - for r in 0..grid.len() { [INFO] [stdout] 5 + for (r, ) in grid.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is used to index `grid` [INFO] [stdout] --> src/day15.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | for c in 0..grid[r].len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 6 - for c in 0..grid[r].len() { [INFO] [stdout] 6 + for (c, ) in grid.iter().enumerate().take(grid[r].len()) { [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/day15.rs:18:18 [INFO] [stdout] | [INFO] [stdout] 18 | fn gps_sum(grid: &Vec>) -> usize { [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] 18 - fn gps_sum(grid: &Vec>) -> usize { [INFO] [stdout] 18 + fn gps_sum(grid: &[Vec]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/day15.rs:36:19 [INFO] [stdout] | [INFO] [stdout] 36 | fn try_move(grid: &mut Vec>, robot_pos: &mut (isize, isize), dr: isize, dc: isize) { [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] 36 - fn try_move(grid: &mut Vec>, robot_pos: &mut (isize, isize), dr: isize, dc: isize) { [INFO] [stdout] 36 + fn try_move(grid: &mut [Vec], robot_pos: &mut (isize, isize), dr: isize, dc: isize) { [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/day15.rs:18:18 [INFO] [stdout] | [INFO] [stdout] 18 | fn gps_sum(grid: &Vec>) -> usize { [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] 18 - fn gps_sum(grid: &Vec>) -> usize { [INFO] [stdout] 18 + fn gps_sum(grid: &[Vec]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/day15.rs:36:19 [INFO] [stdout] | [INFO] [stdout] 36 | fn try_move(grid: &mut Vec>, robot_pos: &mut (isize, isize), dr: isize, dc: isize) { [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] 36 - fn try_move(grid: &mut Vec>, robot_pos: &mut (isize, isize), dr: isize, dc: isize) { [INFO] [stdout] 36 + fn try_move(grid: &mut [Vec], robot_pos: &mut (isize, isize), dr: isize, dc: isize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day15.rs:102:3 [INFO] [stdout] | [INFO] [stdout] 102 | return can_move; [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] 102 - return can_move; [INFO] [stdout] 102 + can_move [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day15.rs:116:3 [INFO] [stdout] | [INFO] [stdout] 116 | return can_move; [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] 116 - return can_move; [INFO] [stdout] 116 + can_move [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day15.rs:141:3 [INFO] [stdout] | [INFO] [stdout] 141 | return can_move_1 && can_move_2; [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 can_move_1 && can_move_2; [INFO] [stdout] 141 + can_move_1 && can_move_2 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day15.rs:102:3 [INFO] [stdout] | [INFO] [stdout] 102 | return can_move; [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] 102 - return can_move; [INFO] [stdout] 102 + can_move [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day15.rs:116:3 [INFO] [stdout] | [INFO] [stdout] 116 | return can_move; [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] 116 - return can_move; [INFO] [stdout] 116 + can_move [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day15.rs:141:3 [INFO] [stdout] | [INFO] [stdout] 141 | return can_move_1 && can_move_2; [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 can_move_1 && can_move_2; [INFO] [stdout] 141 + can_move_1 && can_move_2 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day15.rs:158:10 [INFO] [stdout] | [INFO] [stdout] 158 | '#' => return, [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: replace `return` with a unit value [INFO] [stdout] | [INFO] [stdout] 158 - '#' => return, [INFO] [stdout] 158 + '#' => (), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day15.rs:180:6 [INFO] [stdout] | [INFO] [stdout] 180 | .map(|ch| match ch { [INFO] [stdout] | __________________^ [INFO] [stdout] 181 | | 'O' => ['[', ']'], [INFO] [stdout] 182 | | '#' => ['#', '#'], [INFO] [stdout] 183 | | '.' => ['.', '.'], [INFO] [stdout] 184 | | _ => unreachable!(), [INFO] [stdout] 185 | | }) [INFO] [stdout] 186 | | .flatten() [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 180 ~ .flat_map(|ch| match ch { [INFO] [stdout] 181 ~ 'O' => ['[', ']'], [INFO] [stdout] 182 ~ '#' => ['#', '#'], [INFO] [stdout] 183 ~ '.' => ['.', '.'], [INFO] [stdout] 184 ~ _ => unreachable!(), [INFO] [stdout] 185 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day15.rs:233:4 [INFO] [stdout] | [INFO] [stdout] 233 | .map(|line| line.chars().collect_vec()) [INFO] [stdout] | __________^ [INFO] [stdout] 234 | | .flatten() [INFO] [stdout] | |__________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|line| line.chars().collect_vec())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day17.rs:39:2 [INFO] [stdout] | [INFO] [stdout] 39 | return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 39 - return result; [INFO] [stdout] 39 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day17.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | 0 => regs[0] = regs[0] / (1i64 << get_combo_operand(®s, operand)), // adv [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `regs[0] /= (1i64 << get_combo_operand(®s, operand))` [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: unneeded `return` statement [INFO] [stdout] --> src/day17.rs:67:2 [INFO] [stdout] | [INFO] [stdout] 67 | 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] 67 - return None; [INFO] [stdout] 67 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `[i64; 3]` which implements the `Copy` trait [INFO] [stdout] --> src/day17.rs:94:36 [INFO] [stdout] | [INFO] [stdout] 94 | let part1 = run_program(&program, regs.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `regs` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day18.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | fn has_path(grid: &Vec>) -> Option { [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] 6 - fn has_path(grid: &Vec>) -> Option { [INFO] [stdout] 6 + fn has_path(grid: &[Vec]) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `isize` is unnecessary [INFO] [stdout] --> src/day18.rs:9:19 [INFO] [stdout] | [INFO] [stdout] 9 | queue.push_back((0 as isize, 0 as isize, 0)); [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_isize` [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: unneeded `return` statement [INFO] [stdout] --> src/day15.rs:158:10 [INFO] [stdout] | [INFO] [stdout] 158 | '#' => return, [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: replace `return` with a unit value [INFO] [stdout] | [INFO] [stdout] 158 - '#' => return, [INFO] [stdout] 158 + '#' => (), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `isize` is unnecessary [INFO] [stdout] --> src/day18.rs:9:31 [INFO] [stdout] | [INFO] [stdout] 9 | queue.push_back((0 as isize, 0 as isize, 0)); [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_isize` [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: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day15.rs:180:6 [INFO] [stdout] | [INFO] [stdout] 180 | .map(|ch| match ch { [INFO] [stdout] | __________________^ [INFO] [stdout] 181 | | 'O' => ['[', ']'], [INFO] [stdout] 182 | | '#' => ['#', '#'], [INFO] [stdout] 183 | | '.' => ['.', '.'], [INFO] [stdout] 184 | | _ => unreachable!(), [INFO] [stdout] 185 | | }) [INFO] [stdout] 186 | | .flatten() [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 180 ~ .flat_map(|ch| match ch { [INFO] [stdout] 181 ~ 'O' => ['[', ']'], [INFO] [stdout] 182 ~ '#' => ['#', '#'], [INFO] [stdout] 183 ~ '.' => ['.', '.'], [INFO] [stdout] 184 ~ _ => unreachable!(), [INFO] [stdout] 185 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day15.rs:233:4 [INFO] [stdout] | [INFO] [stdout] 233 | .map(|line| line.chars().collect_vec()) [INFO] [stdout] | __________^ [INFO] [stdout] 234 | | .flatten() [INFO] [stdout] | |__________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|line| line.chars().collect_vec())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day20.rs:14:28 [INFO] [stdout] | [INFO] [stdout] 14 | fn compute_distances(grid: &Vec>, start: (usize, usize)) -> 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] 14 - fn compute_distances(grid: &Vec>, start: (usize, usize)) -> Vec> { [INFO] [stdout] 14 + fn compute_distances(grid: &[Vec], start: (usize, usize)) -> Vec> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day17.rs:39:2 [INFO] [stdout] | [INFO] [stdout] 39 | return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 39 - return result; [INFO] [stdout] 39 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day20.rs:111:9 [INFO] [stdout] | [INFO] [stdout] 111 | / ... if time < base_time { [INFO] [stdout] 112 | | ... if base_time - time >= 100 { [INFO] [stdout] 113 | | ... cheats += 1; [INFO] [stdout] 114 | | ... } [INFO] [stdout] 115 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 111 ~ if time < base_time [INFO] [stdout] 112 ~ && base_time - time >= 100 { [INFO] [stdout] 113 | cheats += 1; [INFO] [stdout] 114 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day17.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | 0 => regs[0] = regs[0] / (1i64 << get_combo_operand(®s, operand)), // adv [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `regs[0] /= (1i64 << get_combo_operand(®s, operand))` [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: unneeded `return` statement [INFO] [stdout] --> src/day17.rs:67:2 [INFO] [stdout] | [INFO] [stdout] 67 | 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] 67 - return None; [INFO] [stdout] 67 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:46:2 [INFO] [stdout] | [INFO] [stdout] 46 | return true; [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] 46 - return true; [INFO] [stdout] 46 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `[i64; 3]` which implements the `Copy` trait [INFO] [stdout] --> src/day17.rs:94:36 [INFO] [stdout] | [INFO] [stdout] 94 | let part1 = run_program(&program, regs.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `regs` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day18.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | fn has_path(grid: &Vec>) -> Option { [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] 6 - fn has_path(grid: &Vec>) -> Option { [INFO] [stdout] 6 + fn has_path(grid: &[Vec]) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `isize` is unnecessary [INFO] [stdout] --> src/day18.rs:9:19 [INFO] [stdout] | [INFO] [stdout] 9 | queue.push_back((0 as isize, 0 as isize, 0)); [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_isize` [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: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:122:3 [INFO] [stdout] | [INFO] [stdout] 122 | return std::cmp::min(path1_cost, path2_cost); [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] 122 - return std::cmp::min(path1_cost, path2_cost); [INFO] [stdout] 122 + std::cmp::min(path1_cost, path2_cost) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `isize` is unnecessary [INFO] [stdout] --> src/day18.rs:9:31 [INFO] [stdout] | [INFO] [stdout] 9 | queue.push_back((0 as isize, 0 as isize, 0)); [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_isize` [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: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:125:3 [INFO] [stdout] | [INFO] [stdout] 125 | return get_seq_cost(&path1, &DIR_KEYPAD, level - 1, memo); [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 get_seq_cost(&path1, &DIR_KEYPAD, level - 1, memo); [INFO] [stdout] 125 + get_seq_cost(&path1, &DIR_KEYPAD, level - 1, memo) [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/day20.rs:14:28 [INFO] [stdout] | [INFO] [stdout] 14 | fn compute_distances(grid: &Vec>, start: (usize, usize)) -> 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] 14 - fn compute_distances(grid: &Vec>, start: (usize, usize)) -> Vec> { [INFO] [stdout] 14 + fn compute_distances(grid: &[Vec], start: (usize, usize)) -> Vec> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day20.rs:111:9 [INFO] [stdout] | [INFO] [stdout] 111 | / ... if time < base_time { [INFO] [stdout] 112 | | ... if base_time - time >= 100 { [INFO] [stdout] 113 | | ... cheats += 1; [INFO] [stdout] 114 | | ... } [INFO] [stdout] 115 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 111 ~ if time < base_time [INFO] [stdout] 112 ~ && base_time - time >= 100 { [INFO] [stdout] 113 | cheats += 1; [INFO] [stdout] 114 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day23.rs:79:6 [INFO] [stdout] | [INFO] [stdout] 79 | / if adjacent[i][k] && adjacent[j][k] { [INFO] [stdout] 80 | | if computers[i].starts_with('t') [INFO] [stdout] 81 | | || computers[j].starts_with('t') [INFO] [stdout] 82 | | || computers[k].starts_with('t') [INFO] [stdout] ... | [INFO] [stdout] 86 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ if adjacent[i][k] && adjacent[j][k] [INFO] [stdout] 80 ~ && (computers[i].starts_with('t') [INFO] [stdout] 81 | || computers[j].starts_with('t') [INFO] [stdout] 82 ~ || computers[k].starts_with('t')) [INFO] [stdout] 83 | { [INFO] [stdout] 84 | part1 += 1; [INFO] [stdout] 85 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:46:2 [INFO] [stdout] | [INFO] [stdout] 46 | return true; [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] 46 - return true; [INFO] [stdout] 46 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:122:3 [INFO] [stdout] | [INFO] [stdout] 122 | return std::cmp::min(path1_cost, path2_cost); [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] 122 - return std::cmp::min(path1_cost, path2_cost); [INFO] [stdout] 122 + std::cmp::min(path1_cost, path2_cost) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:125:3 [INFO] [stdout] | [INFO] [stdout] 125 | return get_seq_cost(&path1, &DIR_KEYPAD, level - 1, memo); [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 get_seq_cost(&path1, &DIR_KEYPAD, level - 1, memo); [INFO] [stdout] 125 + get_seq_cost(&path1, &DIR_KEYPAD, level - 1, memo) [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/day24.rs:64:51 [INFO] [stdout] | [INFO] [stdout] 64 | fn validate_adder(operands: &[(u64, u64)], gates: &Vec) -> u64 { [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] 64 ~ fn validate_adder(operands: &[(u64, u64)], gates: &[Gate]) -> u64 { [INFO] [stdout] 65 | let mut good_bits = MASK; [INFO] [stdout] ... [INFO] [stdout] 68 | [INFO] [stdout] 69 ~ if let Some(actual) = try_add(gates.to_owned(), op1, op2) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day24.rs:155:3 [INFO] [stdout] | [INFO] [stdout] 155 | / if gate.operation == Operation::And { [INFO] [stdout] 156 | | if consuming_gates.len() != 1 || consuming_gates[0].operation != Operation::Or { [INFO] [stdout] 157 | | println!("Found bad gate (3): {:?}", gate); // We should always be ORing the result of our AND gates [INFO] [stdout] 158 | | bad_gates.push(gate.output.clone()); [INFO] [stdout] ... | [INFO] [stdout] 161 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 155 ~ if gate.operation == Operation::And [INFO] [stdout] 156 ~ && (consuming_gates.len() != 1 || consuming_gates[0].operation != Operation::Or) { [INFO] [stdout] 157 | println!("Found bad gate (3): {:?}", gate); // We should always be ORing the result of our AND gates [INFO] [stdout] 158 | bad_gates.push(gate.output.clone()); [INFO] [stdout] 159 | continue; [INFO] [stdout] 160 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day23.rs:79:6 [INFO] [stdout] | [INFO] [stdout] 79 | / if adjacent[i][k] && adjacent[j][k] { [INFO] [stdout] 80 | | if computers[i].starts_with('t') [INFO] [stdout] 81 | | || computers[j].starts_with('t') [INFO] [stdout] 82 | | || computers[k].starts_with('t') [INFO] [stdout] ... | [INFO] [stdout] 86 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ if adjacent[i][k] && adjacent[j][k] [INFO] [stdout] 80 ~ && (computers[i].starts_with('t') [INFO] [stdout] 81 | || computers[j].starts_with('t') [INFO] [stdout] 82 ~ || computers[k].starts_with('t')) [INFO] [stdout] 83 | { [INFO] [stdout] 84 | part1 += 1; [INFO] [stdout] 85 ~ } [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/day24.rs:64:51 [INFO] [stdout] | [INFO] [stdout] 64 | fn validate_adder(operands: &[(u64, u64)], gates: &Vec) -> u64 { [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] 64 ~ fn validate_adder(operands: &[(u64, u64)], gates: &[Gate]) -> u64 { [INFO] [stdout] 65 | let mut good_bits = MASK; [INFO] [stdout] ... [INFO] [stdout] 68 | [INFO] [stdout] 69 ~ if let Some(actual) = try_add(gates.to_owned(), op1, op2) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day24.rs:155:3 [INFO] [stdout] | [INFO] [stdout] 155 | / if gate.operation == Operation::And { [INFO] [stdout] 156 | | if consuming_gates.len() != 1 || consuming_gates[0].operation != Operation::Or { [INFO] [stdout] 157 | | println!("Found bad gate (3): {:?}", gate); // We should always be ORing the result of our AND gates [INFO] [stdout] 158 | | bad_gates.push(gate.output.clone()); [INFO] [stdout] ... | [INFO] [stdout] 161 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 155 ~ if gate.operation == Operation::And [INFO] [stdout] 156 ~ && (consuming_gates.len() != 1 || consuming_gates[0].operation != Operation::Or) { [INFO] [stdout] 157 | println!("Found bad gate (3): {:?}", gate); // We should always be ORing the result of our AND gates [INFO] [stdout] 158 | bad_gates.push(gate.output.clone()); [INFO] [stdout] 159 | continue; [INFO] [stdout] 160 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `filter_map()` will run forever if the iterator repeatedly produces an `Err` [INFO] [stdout] --> src/main.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | .filter_map(|l| l.ok()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `map_while(Result::ok)` [INFO] [stdout] | [INFO] [stdout] note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error [INFO] [stdout] --> src/main.rs:61:11 [INFO] [stdout] | [INFO] [stdout] 61 | input = stdin [INFO] [stdout] | _________________^ [INFO] [stdout] 62 | | .lock() [INFO] [stdout] 63 | | .lines() [INFO] [stdout] | |____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok [INFO] [stdout] = note: `#[warn(clippy::lines_filter_map_ok)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `filter_map()` will run forever if the iterator repeatedly produces an `Err` [INFO] [stdout] --> src/main.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | .filter_map(|l| l.ok()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `map_while(Result::ok)` [INFO] [stdout] | [INFO] [stdout] note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error [INFO] [stdout] --> src/main.rs:61:11 [INFO] [stdout] | [INFO] [stdout] 61 | input = stdin [INFO] [stdout] | _________________^ [INFO] [stdout] 62 | | .lock() [INFO] [stdout] 63 | | .lines() [INFO] [stdout] | |____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok [INFO] [stdout] = note: `#[warn(clippy::lines_filter_map_ok)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.62s [INFO] running `Command { std: "docker" "inspect" "e957f41a1567ece6a6bd38e33179dcc1560818153e342f9c1a3fad426b634942", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e957f41a1567ece6a6bd38e33179dcc1560818153e342f9c1a3fad426b634942", kill_on_drop: false }` [INFO] [stdout] e957f41a1567ece6a6bd38e33179dcc1560818153e342f9c1a3fad426b634942