[INFO] cloning repository https://github.com/galenelias/AdventOfCode_2023 [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_2023" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgalenelias%2FAdventOfCode_2023", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgalenelias%2FAdventOfCode_2023'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 48d90bc4333fa8e2cd38a0a2e59c7a669dfb2f94 [INFO] linting galenelias/AdventOfCode_2023 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgalenelias%2FAdventOfCode_2023" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/galenelias/AdventOfCode_2023 [INFO] finished tweaking git repo https://github.com/galenelias/AdventOfCode_2023 [INFO] tweaked toml for git repo https://github.com/galenelias/AdventOfCode_2023 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/galenelias/AdventOfCode_2023 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_2023 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] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded proc-macro2 v1.0.70 [INFO] [stderr] Downloaded emergence v2.0.0 [INFO] [stderr] Downloaded num v0.3.1 [INFO] [stderr] Downloaded anstyle-wincon v3.0.1 [INFO] [stderr] Downloaded redox_users v0.4.4 [INFO] [stderr] Downloaded clap_lex v0.6.0 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.89 [INFO] [stderr] Downloaded anstyle v1.0.4 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.89 [INFO] [stderr] Downloaded num-complex v0.3.1 [INFO] [stderr] Downloaded libredox v0.0.1 [INFO] [stderr] Downloaded num-bigint v0.3.3 [INFO] [stderr] Downloaded anstyle-parse v0.2.2 [INFO] [stderr] Downloaded serde_derive v1.0.193 [INFO] [stderr] Downloaded serde v1.0.193 [INFO] [stderr] Downloaded mio v0.8.9 [INFO] [stderr] Downloaded js-sys v0.3.66 [INFO] [stderr] Downloaded itertools v0.12.0 [INFO] [stderr] Downloaded reqwest v0.11.22 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.89 [INFO] [stderr] Downloaded h2 v0.3.22 [INFO] [stderr] Downloaded clap_builder v4.4.9 [INFO] [stderr] Downloaded anstream v0.6.4 [INFO] [stderr] Downloaded wasm-bindgen v0.2.89 [INFO] [stderr] Downloaded webpki-roots v0.25.3 [INFO] [stderr] Downloaded rustls v0.21.9 [INFO] [stderr] Downloaded clap_derive v4.4.7 [INFO] [stderr] Downloaded clap v4.4.10 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.89 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.39 [INFO] [stderr] Downloaded web-sys v0.3.66 [INFO] [stderr] Downloaded tokio v1.34.0 [INFO] [stderr] Downloaded ring v0.17.6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 107d954375efc889d36cd922fdb20e81a520d1474f506415d12698d8a25b1ed8 [INFO] running `Command { std: "docker" "start" "-a" "107d954375efc889d36cd922fdb20e81a520d1474f506415d12698d8a25b1ed8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "107d954375efc889d36cd922fdb20e81a520d1474f506415d12698d8a25b1ed8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "107d954375efc889d36cd922fdb20e81a520d1474f506415d12698d8a25b1ed8", kill_on_drop: false }` [INFO] [stdout] 107d954375efc889d36cd922fdb20e81a520d1474f506415d12698d8a25b1ed8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] c13136483af7a1e036cfced3c87ba87129fd8b064c03715cc07cb5fea93b77b4 [INFO] running `Command { std: "docker" "start" "-a" "c13136483af7a1e036cfced3c87ba87129fd8b064c03715cc07cb5fea93b77b4", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.150 [INFO] [stderr] Compiling num-traits v0.2.17 [INFO] [stderr] Compiling futures-core v0.3.29 [INFO] [stderr] Checking memchr v2.6.4 [INFO] [stderr] Compiling proc-macro2 v1.0.70 [INFO] [stderr] Checking itoa v1.0.9 [INFO] [stderr] Checking once_cell v1.18.0 [INFO] [stderr] Compiling futures-task v0.3.29 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Compiling futures-util v0.3.29 [INFO] [stderr] Checking http v0.2.11 [INFO] [stderr] Compiling num-integer v0.1.45 [INFO] [stderr] Checking futures-io v0.3.29 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Compiling rustls v0.21.9 [INFO] [stderr] Checking tinyvec_macros v0.1.1 [INFO] [stderr] Checking futures-sink v0.3.29 [INFO] [stderr] Compiling futures-channel v0.3.29 [INFO] [stderr] Checking indexmap v2.1.0 [INFO] [stderr] Checking tinyvec v1.6.0 [INFO] [stderr] Checking getrandom v0.2.11 [INFO] [stderr] Compiling cc v1.0.83 [INFO] [stderr] Checking mio v0.8.9 [INFO] [stderr] Checking socket2 v0.5.5 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Compiling quote v1.0.33 [INFO] [stderr] Checking try-lock v0.2.4 [INFO] [stderr] Compiling serde v1.0.193 [INFO] [stderr] Checking log v0.4.20 [INFO] [stderr] Checking tokio v1.34.0 [INFO] [stderr] Compiling syn v2.0.39 [INFO] [stderr] Checking unicode-normalization v0.1.22 [INFO] [stderr] Checking want v0.3.1 [INFO] [stderr] Checking http-body v0.4.5 [INFO] [stderr] Checking socket2 v0.4.10 [INFO] [stderr] Compiling num-bigint v0.3.3 [INFO] [stderr] Checking unicode-bidi v0.3.13 [INFO] [stderr] Checking anstyle-parse v0.2.2 [INFO] [stderr] Compiling num-rational v0.3.2 [INFO] [stderr] Compiling num-iter v0.1.43 [INFO] [stderr] Checking base64 v0.21.5 [INFO] [stderr] Compiling ring v0.17.6 [INFO] [stderr] Checking ryu v1.0.15 [INFO] [stderr] Compiling thiserror v1.0.50 [INFO] [stderr] Checking idna v0.5.0 [INFO] [stderr] Checking anstyle-query v1.0.0 [INFO] [stderr] Checking anstyle v1.0.4 [INFO] [stderr] Checking rustls-pemfile v1.0.4 [INFO] [stderr] Checking dirs-sys v0.4.1 [INFO] [stderr] Checking anstream v0.6.4 [INFO] [stderr] Checking url v2.5.0 [INFO] [stderr] Checking aho-corasick v1.1.2 [INFO] [stderr] Checking encoding_rs v0.8.33 [INFO] [stderr] Checking ipnet v2.9.0 [INFO] [stderr] Checking iana-time-zone v0.1.58 [INFO] [stderr] Checking regex-syntax v0.8.2 [INFO] [stderr] Checking strsim v0.10.0 [INFO] [stderr] Checking webpki-roots v0.25.3 [INFO] [stderr] Compiling heck v0.4.1 [INFO] [stderr] Checking clap_lex v0.6.0 [INFO] [stderr] Checking clap_builder v4.4.9 [INFO] [stderr] Checking chrono v0.4.31 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking dirs v5.0.1 [INFO] [stderr] Checking num-complex v0.3.1 [INFO] [stderr] Checking tokio-util v0.7.10 [INFO] [stderr] Checking either v1.9.0 [INFO] [stderr] Checking itertools v0.12.0 [INFO] [stderr] Checking num v0.3.1 [INFO] [stderr] Checking h2 v0.3.22 [INFO] [stderr] Compiling thiserror-impl v1.0.50 [INFO] [stderr] Compiling clap_derive v4.4.7 [INFO] [stderr] Checking regex-automata v0.4.3 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking clap v4.4.10 [INFO] [stderr] Checking hyper v0.14.27 [INFO] [stderr] Checking regex v1.10.2 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking hyper-rustls v0.24.2 [INFO] [stderr] Checking reqwest v0.11.22 [INFO] [stderr] Checking emergence v2.0.0 [INFO] [stderr] Checking advent_of_code_2023 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: operator precedence might not be obvious [INFO] [stdout] --> src/day04.rs:26:48 [INFO] [stdout] | [INFO] [stdout] 26 | .map(|matches| if matches == &0 { 0 } else { 1 << matches - 1 }) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (matches - 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stdout] = note: `#[warn(clippy::precedence)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `else` branch is empty [INFO] [stdout] --> src/day24.rs:70:6 [INFO] [stdout] | [INFO] [stdout] 70 | } else { [INFO] [stdout] | _______________^ [INFO] [stdout] 71 | | } [INFO] [stdout] | |_____________^ help: you can remove it [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_else [INFO] [stdout] = note: `#[warn(clippy::needless_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: operator precedence might not be obvious [INFO] [stdout] --> src/day04.rs:26:48 [INFO] [stdout] | [INFO] [stdout] 26 | .map(|matches| if matches == &0 { 0 } else { 1 << matches - 1 }) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (matches - 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stdout] = note: `#[warn(clippy::precedence)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `else` branch is empty [INFO] [stdout] --> src/day24.rs:70:6 [INFO] [stdout] | [INFO] [stdout] 70 | } else { [INFO] [stdout] | _______________^ [INFO] [stdout] 71 | | } [INFO] [stdout] | |_____________^ help: you can remove it [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_else [INFO] [stdout] = note: `#[warn(clippy::needless_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Value` is never constructed [INFO] [stdout] --> src/day05.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | struct Value { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `number_strings` [INFO] [stdout] --> src/day01.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | for i in 0..number_strings.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] 11 - for i in 0..number_strings.len() { [INFO] [stdout] 11 + for (i, ) in number_strings.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/day03.rs:20:3 [INFO] [stdout] | [INFO] [stdout] 20 | / match (&self.node_type, &other.node_type) { [INFO] [stdout] 21 | | (NodeType::Number(_), NodeType::Symbol(_)) => true, [INFO] [stdout] 22 | | (NodeType::Symbol(_), NodeType::Number(_)) => true, [INFO] [stdout] 23 | | _ => false, [INFO] [stdout] 24 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 20 - match (&self.node_type, &other.node_type) { [INFO] [stdout] 21 - (NodeType::Number(_), NodeType::Symbol(_)) => true, [INFO] [stdout] 22 - (NodeType::Symbol(_), NodeType::Number(_)) => true, [INFO] [stdout] 23 - _ => false, [INFO] [stdout] 24 - } [INFO] [stdout] 20 + matches!((&self.node_type, &other.node_type), (NodeType::Number(_), NodeType::Symbol(_)) | (NodeType::Symbol(_), NodeType::Number(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day03.rs:42:3 [INFO] [stdout] | [INFO] [stdout] 42 | return dr <= 1 && dc <= 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] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 42 - return dr <= 1 && dc <= 1; [INFO] [stdout] 42 + dr <= 1 && dc <= 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual absolute difference pattern without using `abs_diff` [INFO] [stdout] --> src/day03.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | let dr = if self.r >= other.r { [INFO] [stdout] | __________________^ [INFO] [stdout] 29 | | self.r - other.r [INFO] [stdout] 30 | | } else { [INFO] [stdout] 31 | | other.r - self.r [INFO] [stdout] 32 | | }; [INFO] [stdout] | |_________^ help: replace with `abs_diff`: `self.r.abs_diff(other.r)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_abs_diff [INFO] [stdout] = note: `#[warn(clippy::manual_abs_diff)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/day03.rs:36:10 [INFO] [stdout] | [INFO] [stdout] 36 | } else if self.c >= other.c + other.width - 1 { [INFO] [stdout] | ________________^ [INFO] [stdout] 37 | | self.c - (other.c + other.width - 1) [INFO] [stdout] 38 | | } else { [INFO] [stdout] 39 | | 0 [INFO] [stdout] 40 | | }; [INFO] [stdout] | |_________^ help: replace it with: `{ self.c.saturating_sub(other.c + other.width - 1) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] = note: `#[warn(clippy::implicit_saturating_sub)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `r` is used to index `grid` [INFO] [stdout] --> src/day03.rs:54:11 [INFO] [stdout] | [INFO] [stdout] 54 | 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] 54 - for r in 0..grid.len() { [INFO] [stdout] 54 + for (r, ) in grid.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day04.rs:20:4 [INFO] [stdout] | [INFO] [stdout] 20 | return winning_numbers.intersection(&my_numbers).count(); [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] 20 - return winning_numbers.intersection(&my_numbers).count(); [INFO] [stdout] 20 + winning_numbers.intersection(&my_numbers).count() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day05.rs:32:2 [INFO] [stdout] | [INFO] [stdout] 32 | return value; [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] 32 - return value; [INFO] [stdout] 32 + value [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Value` is never constructed [INFO] [stdout] --> src/day05.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | struct Value { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day05.rs:83:2 [INFO] [stdout] | [INFO] [stdout] 83 | 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] 83 - return result; [INFO] [stdout] 83 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `number_strings` [INFO] [stdout] --> src/day01.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | for i in 0..number_strings.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] 11 - for i in 0..number_strings.len() { [INFO] [stdout] 11 + for (i, ) in number_strings.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:35:3 [INFO] [stdout] | [INFO] [stdout] 35 | return freqs.into_iter().sorted().rev().collect_vec(); [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] 35 - return freqs.into_iter().sorted().rev().collect_vec(); [INFO] [stdout] 35 + freqs.into_iter().sorted().rev().collect_vec() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:42:3 [INFO] [stdout] | [INFO] [stdout] 42 | return sorted_freqs; [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] 42 - return sorted_freqs; [INFO] [stdout] 42 + sorted_freqs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:61:2 [INFO] [stdout] | [INFO] [stdout] 61 | return cmp::Ordering::Equal; [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] 61 - return cmp::Ordering::Equal; [INFO] [stdout] 61 + cmp::Ordering::Equal [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/day08.rs:37:7 [INFO] [stdout] | [INFO] [stdout] 37 | if steps_a_to_z == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `steps_a_to_z.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/day08.rs:39:14 [INFO] [stdout] | [INFO] [stdout] 39 | } else if steps_z_to_z == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `steps_z_to_z.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/day03.rs:20:3 [INFO] [stdout] | [INFO] [stdout] 20 | / match (&self.node_type, &other.node_type) { [INFO] [stdout] 21 | | (NodeType::Number(_), NodeType::Symbol(_)) => true, [INFO] [stdout] 22 | | (NodeType::Symbol(_), NodeType::Number(_)) => true, [INFO] [stdout] 23 | | _ => false, [INFO] [stdout] 24 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 20 - match (&self.node_type, &other.node_type) { [INFO] [stdout] 21 - (NodeType::Number(_), NodeType::Symbol(_)) => true, [INFO] [stdout] 22 - (NodeType::Symbol(_), NodeType::Number(_)) => true, [INFO] [stdout] 23 - _ => false, [INFO] [stdout] 24 - } [INFO] [stdout] 20 + matches!((&self.node_type, &other.node_type), (NodeType::Number(_), NodeType::Symbol(_)) | (NodeType::Symbol(_), NodeType::Number(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day03.rs:42:3 [INFO] [stdout] | [INFO] [stdout] 42 | return dr <= 1 && dc <= 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] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 42 - return dr <= 1 && dc <= 1; [INFO] [stdout] 42 + dr <= 1 && dc <= 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual absolute difference pattern without using `abs_diff` [INFO] [stdout] --> src/day03.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | let dr = if self.r >= other.r { [INFO] [stdout] | __________________^ [INFO] [stdout] 29 | | self.r - other.r [INFO] [stdout] 30 | | } else { [INFO] [stdout] 31 | | other.r - self.r [INFO] [stdout] 32 | | }; [INFO] [stdout] | |_________^ help: replace with `abs_diff`: `self.r.abs_diff(other.r)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_abs_diff [INFO] [stdout] = note: `#[warn(clippy::manual_abs_diff)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/day03.rs:36:10 [INFO] [stdout] | [INFO] [stdout] 36 | } else if self.c >= other.c + other.width - 1 { [INFO] [stdout] | ________________^ [INFO] [stdout] 37 | | self.c - (other.c + other.width - 1) [INFO] [stdout] 38 | | } else { [INFO] [stdout] 39 | | 0 [INFO] [stdout] 40 | | }; [INFO] [stdout] | |_________^ help: replace it with: `{ self.c.saturating_sub(other.c + other.width - 1) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] = note: `#[warn(clippy::implicit_saturating_sub)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `r` is used to index `grid` [INFO] [stdout] --> src/day03.rs:54:11 [INFO] [stdout] | [INFO] [stdout] 54 | 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] 54 - for r in 0..grid.len() { [INFO] [stdout] 54 + for (r, ) in grid.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/day09.rs:21:2 [INFO] [stdout] | [INFO] [stdout] 21 | derivatives[0].last().unwrap().clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*derivatives[0].last().unwrap()` [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: unneeded `return` statement [INFO] [stdout] --> src/day04.rs:20:4 [INFO] [stdout] | [INFO] [stdout] 20 | return winning_numbers.intersection(&my_numbers).count(); [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] 20 - return winning_numbers.intersection(&my_numbers).count(); [INFO] [stdout] 20 + winning_numbers.intersection(&my_numbers).count() [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/day10.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | 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] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 25 - grid: &Vec>, [INFO] [stdout] 25 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/day10.rs:68:17 [INFO] [stdout] | [INFO] [stdout] 68 | ch != '.' && get_pipe_ends(&ch, &p).iter().any(|&p| p == start_pos) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `get_pipe_ends(&ch, &p).contains(&start_pos)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` 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/day10.rs:68:36 [INFO] [stdout] | [INFO] [stdout] 68 | ch != '.' && get_pipe_ends(&ch, &p).iter().any(|&p| p == start_pos) [INFO] [stdout] | ^^ help: change this to: `p` [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/day10.rs:76:4 [INFO] [stdout] | [INFO] [stdout] 76 | / return (pipe_ends[0] == start_pipe_neighbors[0] [INFO] [stdout] 77 | | && pipe_ends[1] == start_pipe_neighbors[1]) [INFO] [stdout] 78 | | || (pipe_ends[1] == start_pipe_neighbors[0] [INFO] [stdout] 79 | | && pipe_ends[0] == start_pipe_neighbors[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] 76 ~ (pipe_ends[0] == start_pipe_neighbors[0] [INFO] [stdout] 77 ~ && pipe_ends[1] == start_pipe_neighbors[1]) [INFO] [stdout] 78 ~ || (pipe_ends[1] == start_pipe_neighbors[0] [INFO] [stdout] 79 ~ && pipe_ends[0] == start_pipe_neighbors[1]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day05.rs:32:2 [INFO] [stdout] | [INFO] [stdout] 32 | return value; [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] 32 - return value; [INFO] [stdout] 32 + value [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day05.rs:83:2 [INFO] [stdout] | [INFO] [stdout] 83 | 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] 83 - return result; [INFO] [stdout] 83 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, usize)` which implements the `Copy` trait [INFO] [stdout] --> src/day10.rs:90:16 [INFO] [stdout] | [INFO] [stdout] 90 | let mut pos = start_pipe_neighbors[1].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `start_pipe_neighbors[1]` [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 `.filter_map(..)` can be written more simply using `.filter(..)` [INFO] [stdout] --> src/day11.rs:23:4 [INFO] [stdout] | [INFO] [stdout] 23 | .filter_map(|c| { [INFO] [stdout] | __________^ [INFO] [stdout] 24 | | if grid.iter().all(|row| row[c] == '.') { [INFO] [stdout] 25 | | Some(c) [INFO] [stdout] 26 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 29 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stdout] = note: `#[warn(clippy::unnecessary_filter_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is used to index `grid` [INFO] [stdout] --> src/day11.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | for c in 0..grid[0].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] 34 - for c in 0..grid[0].len() { [INFO] [stdout] 34 + for (c, ) in grid.iter().enumerate().take(grid[0].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day11.rs:63:3 [INFO] [stdout] | [INFO] [stdout] 63 | return sum; [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 sum; [INFO] [stdout] 63 + sum [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day12.rs:46:2 [INFO] [stdout] | [INFO] [stdout] 46 | 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] 46 - return result; [INFO] [stdout] 46 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:35:3 [INFO] [stdout] | [INFO] [stdout] 35 | return freqs.into_iter().sorted().rev().collect_vec(); [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] 35 - return freqs.into_iter().sorted().rev().collect_vec(); [INFO] [stdout] 35 + freqs.into_iter().sorted().rev().collect_vec() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:42:3 [INFO] [stdout] | [INFO] [stdout] 42 | return sorted_freqs; [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] 42 - return sorted_freqs; [INFO] [stdout] 42 + sorted_freqs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day12.rs:70:4 [INFO] [stdout] | [INFO] [stdout] 70 | return possible_arrangements(&springs, ®ions, &mut 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] 70 - return possible_arrangements(&springs, ®ions, &mut memo); [INFO] [stdout] 70 + possible_arrangements(&springs, ®ions, &mut memo) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day12.rs:70:43 [INFO] [stdout] | [INFO] [stdout] 70 | return possible_arrangements(&springs, ®ions, &mut memo); [INFO] [stdout] | ^^^^^^^^ help: change this to: `regions` [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: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:61:2 [INFO] [stdout] | [INFO] [stdout] 61 | return cmp::Ordering::Equal; [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] 61 - return cmp::Ordering::Equal; [INFO] [stdout] 61 + cmp::Ordering::Equal [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day12.rs:83:4 [INFO] [stdout] | [INFO] [stdout] 83 | return possible_arrangements(&unfolded_springs, ®ions_x5, &mut 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] 83 - return possible_arrangements(&unfolded_springs, ®ions_x5, &mut memo); [INFO] [stdout] 83 + possible_arrangements(&unfolded_springs, ®ions_x5, &mut 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/day13.rs:3:21 [INFO] [stdout] | [INFO] [stdout] 3 | fn sub_solve(grids: &Vec>>, target_mismatches: usize) -> 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] 3 - fn sub_solve(grids: &Vec>>, target_mismatches: usize) -> usize { [INFO] [stdout] 3 + fn sub_solve(grids: &[Vec>], target_mismatches: usize) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day13.rs:45:4 [INFO] [stdout] | [INFO] [stdout] 45 | 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] 45 - return result; [INFO] [stdout] 45 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is only used to index `grid` [INFO] [stdout] --> src/day13.rs:11:15 [INFO] [stdout] | [INFO] [stdout] 11 | for c in 0..grid[0].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 [INFO] [stdout] | [INFO] [stdout] 11 - for c in 0..grid[0].len() { [INFO] [stdout] 11 + for in grid.iter().take(grid[0].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/day08.rs:37:7 [INFO] [stdout] | [INFO] [stdout] 37 | if steps_a_to_z == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `steps_a_to_z.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `r` is only used to index `grid` [INFO] [stdout] --> src/day13.rs:30:15 [INFO] [stdout] | [INFO] [stdout] 30 | 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 [INFO] [stdout] | [INFO] [stdout] 30 - for r in 0..grid.len() { [INFO] [stdout] 30 + for in &grid { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/day08.rs:39:14 [INFO] [stdout] | [INFO] [stdout] 39 | } else if steps_z_to_z == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `steps_z_to_z.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day14.rs:11:21 [INFO] [stdout] | [INFO] [stdout] 11 | fn total_load(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] 11 - fn total_load(grid: &Vec>) -> usize { [INFO] [stdout] 11 + fn total_load(grid: &[Vec]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day14.rs:14:4 [INFO] [stdout] | [INFO] [stdout] 14 | .map(|(r, row)| { [INFO] [stdout] | __________^ [INFO] [stdout] 15 | | row.iter().filter_map(move |&ch| { [INFO] [stdout] 16 | | if ch == 'O' { [INFO] [stdout] 17 | | Some(grid.len() - r) [INFO] [stdout] ... | [INFO] [stdout] 22 | | }) [INFO] [stdout] 23 | | .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] 14 ~ .flat_map(|(r, row)| { [INFO] [stdout] 15 ~ row.iter().filter_map(move |&ch| { [INFO] [stdout] 16 ~ if ch == 'O' { [INFO] [stdout] 17 ~ Some(grid.len() - r) [INFO] [stdout] 18 ~ } else { [INFO] [stdout] 19 ~ None [INFO] [stdout] 20 ~ } [INFO] [stdout] 21 ~ }) [INFO] [stdout] 22 ~ }) [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/day14.rs:27:20 [INFO] [stdout] | [INFO] [stdout] 27 | fn tilt_grid(grid: &mut Vec>, rocks: &mut Vec<(usize, usize)>, dir: &Dir) { [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] 27 - fn tilt_grid(grid: &mut Vec>, rocks: &mut Vec<(usize, usize)>, dir: &Dir) { [INFO] [stdout] 27 + fn tilt_grid(grid: &mut [Vec], rocks: &mut Vec<(usize, usize)>, dir: &Dir) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/day09.rs:21:2 [INFO] [stdout] | [INFO] [stdout] 21 | derivatives[0].last().unwrap().clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*derivatives[0].last().unwrap()` [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: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day14.rs:73:4 [INFO] [stdout] | [INFO] [stdout] 73 | .map(|(r, row)| { [INFO] [stdout] | __________^ [INFO] [stdout] 74 | | row.iter().enumerate().filter_map( [INFO] [stdout] 75 | | move |(c, &ch)| { [INFO] [stdout] 76 | | if ch == 'O' { [INFO] [stdout] ... | [INFO] [stdout] 83 | | }) [INFO] [stdout] 84 | | .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] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 73 ~ .flat_map(|(r, row)| { [INFO] [stdout] 74 ~ row.iter().enumerate().filter_map( [INFO] [stdout] 75 ~ move |(c, &ch)| { [INFO] [stdout] 76 ~ if ch == 'O' { [INFO] [stdout] 77 ~ Some((r, c)) [INFO] [stdout] 78 ~ } else { [INFO] [stdout] 79 ~ None [INFO] [stdout] 80 ~ } [INFO] [stdout] 81 ~ }, [INFO] [stdout] 82 ~ ) [INFO] [stdout] 83 ~ }) [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/day10.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | 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] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 25 - grid: &Vec>, [INFO] [stdout] 25 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/day10.rs:68:17 [INFO] [stdout] | [INFO] [stdout] 68 | ch != '.' && get_pipe_ends(&ch, &p).iter().any(|&p| p == start_pos) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `get_pipe_ends(&ch, &p).contains(&start_pos)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` 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/day10.rs:68:36 [INFO] [stdout] | [INFO] [stdout] 68 | ch != '.' && get_pipe_ends(&ch, &p).iter().any(|&p| p == start_pos) [INFO] [stdout] | ^^ help: change this to: `p` [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/day10.rs:76:4 [INFO] [stdout] | [INFO] [stdout] 76 | / return (pipe_ends[0] == start_pipe_neighbors[0] [INFO] [stdout] 77 | | && pipe_ends[1] == start_pipe_neighbors[1]) [INFO] [stdout] 78 | | || (pipe_ends[1] == start_pipe_neighbors[0] [INFO] [stdout] 79 | | && pipe_ends[0] == start_pipe_neighbors[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] 76 ~ (pipe_ends[0] == start_pipe_neighbors[0] [INFO] [stdout] 77 ~ && pipe_ends[1] == start_pipe_neighbors[1]) [INFO] [stdout] 78 ~ || (pipe_ends[1] == start_pipe_neighbors[0] [INFO] [stdout] 79 ~ && pipe_ends[0] == start_pipe_neighbors[1]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `boxes` [INFO] [stdout] --> src/day15.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | for i in 0..256 { [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] 40 - for i in 0..256 { [INFO] [stdout] 40 + for (i, ) in boxes.iter().enumerate().take(256) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `b` is used to index `boxes` [INFO] [stdout] --> src/day15.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 41 | for b in 0..boxes[i].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] 41 - for b in 0..boxes[i].len() { [INFO] [stdout] 41 + for (b, ) in boxes.iter().enumerate().take(boxes[i].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day16.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | cast_beam(&grid, r, c, dr, dc, &mut beams); [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: using `clone` on type `(usize, usize)` which implements the `Copy` trait [INFO] [stdout] --> src/day10.rs:90:16 [INFO] [stdout] | [INFO] [stdout] 90 | let mut pos = start_pipe_neighbors[1].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `start_pipe_neighbors[1]` [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 multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/day16.rs:32:17 [INFO] [stdout] | [INFO] [stdout] 32 | (dr, dc) = (dc * -1, dr * -1); [INFO] [stdout] | ^^^^^^^ help: consider using: `-dc` [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: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/day16.rs:32:26 [INFO] [stdout] | [INFO] [stdout] 32 | (dr, dc) = (dc * -1, dr * -1); [INFO] [stdout] | ^^^^^^^ help: consider using: `-dr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.filter_map(..)` can be written more simply using `.filter(..)` [INFO] [stdout] --> src/day11.rs:23:4 [INFO] [stdout] | [INFO] [stdout] 23 | .filter_map(|c| { [INFO] [stdout] | __________^ [INFO] [stdout] 24 | | if grid.iter().all(|row| row[c] == '.') { [INFO] [stdout] 25 | | Some(c) [INFO] [stdout] 26 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 29 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stdout] = note: `#[warn(clippy::unnecessary_filter_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day16.rs:77:4 [INFO] [stdout] | [INFO] [stdout] 77 | return std::cmp::max(left, 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] 77 - return std::cmp::max(left, right); [INFO] [stdout] 77 + std::cmp::max(left, right) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is used to index `grid` [INFO] [stdout] --> src/day11.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | for c in 0..grid[0].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] 34 - for c in 0..grid[0].len() { [INFO] [stdout] 34 + for (c, ) in grid.iter().enumerate().take(grid[0].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day16.rs:87:4 [INFO] [stdout] | [INFO] [stdout] 87 | return std::cmp::max(top, bottom); [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] 87 - return std::cmp::max(top, bottom); [INFO] [stdout] 87 + std::cmp::max(top, bottom) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day11.rs:63:3 [INFO] [stdout] | [INFO] [stdout] 63 | return sum; [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 sum; [INFO] [stdout] 63 + sum [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day12.rs:46:2 [INFO] [stdout] | [INFO] [stdout] 46 | 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] 46 - return result; [INFO] [stdout] 46 + result [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/day17.rs:43:20 [INFO] [stdout] | [INFO] [stdout] 43 | fn sub_solve(grid: &Vec>, dist_to_turn: usize, max_dist: usize) -> u32 { [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] 43 - fn sub_solve(grid: &Vec>, dist_to_turn: usize, max_dist: usize) -> u32 { [INFO] [stdout] 43 + fn sub_solve(grid: &[Vec], dist_to_turn: usize, max_dist: usize) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day12.rs:70:4 [INFO] [stdout] | [INFO] [stdout] 70 | return possible_arrangements(&springs, ®ions, &mut 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] 70 - return possible_arrangements(&springs, ®ions, &mut memo); [INFO] [stdout] 70 + possible_arrangements(&springs, ®ions, &mut memo) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day12.rs:70:43 [INFO] [stdout] | [INFO] [stdout] 70 | return possible_arrangements(&springs, ®ions, &mut memo); [INFO] [stdout] | ^^^^^^^^ help: change this to: `regions` [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: unneeded `return` statement [INFO] [stdout] --> src/day12.rs:83:4 [INFO] [stdout] | [INFO] [stdout] 83 | return possible_arrangements(&unfolded_springs, ®ions_x5, &mut 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] 83 - return possible_arrangements(&unfolded_springs, ®ions_x5, &mut memo); [INFO] [stdout] 83 + possible_arrangements(&unfolded_springs, ®ions_x5, &mut memo) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day18.rs:34:2 [INFO] [stdout] | [INFO] [stdout] 34 | return area; [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] 34 - return area; [INFO] [stdout] 34 + area [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/day13.rs:3:21 [INFO] [stdout] | [INFO] [stdout] 3 | fn sub_solve(grids: &Vec>>, target_mismatches: usize) -> 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] 3 - fn sub_solve(grids: &Vec>>, target_mismatches: usize) -> usize { [INFO] [stdout] 3 + fn sub_solve(grids: &[Vec>], target_mismatches: usize) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day13.rs:45:4 [INFO] [stdout] | [INFO] [stdout] 45 | 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] 45 - return result; [INFO] [stdout] 45 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is only used to index `grid` [INFO] [stdout] --> src/day13.rs:11:15 [INFO] [stdout] | [INFO] [stdout] 11 | for c in 0..grid[0].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 [INFO] [stdout] | [INFO] [stdout] 11 - for c in 0..grid[0].len() { [INFO] [stdout] 11 + for in grid.iter().take(grid[0].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `r` is only used to index `grid` [INFO] [stdout] --> src/day13.rs:30:15 [INFO] [stdout] | [INFO] [stdout] 30 | 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 [INFO] [stdout] | [INFO] [stdout] 30 - for r in 0..grid.len() { [INFO] [stdout] 30 + for in &grid { [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/day14.rs:11:21 [INFO] [stdout] | [INFO] [stdout] 11 | fn total_load(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] 11 - fn total_load(grid: &Vec>) -> usize { [INFO] [stdout] 11 + fn total_load(grid: &[Vec]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day14.rs:14:4 [INFO] [stdout] | [INFO] [stdout] 14 | .map(|(r, row)| { [INFO] [stdout] | __________^ [INFO] [stdout] 15 | | row.iter().filter_map(move |&ch| { [INFO] [stdout] 16 | | if ch == 'O' { [INFO] [stdout] 17 | | Some(grid.len() - r) [INFO] [stdout] ... | [INFO] [stdout] 22 | | }) [INFO] [stdout] 23 | | .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] 14 ~ .flat_map(|(r, row)| { [INFO] [stdout] 15 ~ row.iter().filter_map(move |&ch| { [INFO] [stdout] 16 ~ if ch == 'O' { [INFO] [stdout] 17 ~ Some(grid.len() - r) [INFO] [stdout] 18 ~ } else { [INFO] [stdout] 19 ~ None [INFO] [stdout] 20 ~ } [INFO] [stdout] 21 ~ }) [INFO] [stdout] 22 ~ }) [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/day14.rs:27:20 [INFO] [stdout] | [INFO] [stdout] 27 | fn tilt_grid(grid: &mut Vec>, rocks: &mut Vec<(usize, usize)>, dir: &Dir) { [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] 27 - fn tilt_grid(grid: &mut Vec>, rocks: &mut Vec<(usize, usize)>, dir: &Dir) { [INFO] [stdout] 27 + fn tilt_grid(grid: &mut [Vec], rocks: &mut Vec<(usize, usize)>, dir: &Dir) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day14.rs:73:4 [INFO] [stdout] | [INFO] [stdout] 73 | .map(|(r, row)| { [INFO] [stdout] | __________^ [INFO] [stdout] 74 | | row.iter().enumerate().filter_map( [INFO] [stdout] 75 | | move |(c, &ch)| { [INFO] [stdout] 76 | | if ch == 'O' { [INFO] [stdout] ... | [INFO] [stdout] 83 | | }) [INFO] [stdout] 84 | | .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] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 73 ~ .flat_map(|(r, row)| { [INFO] [stdout] 74 ~ row.iter().enumerate().filter_map( [INFO] [stdout] 75 ~ move |(c, &ch)| { [INFO] [stdout] 76 ~ if ch == 'O' { [INFO] [stdout] 77 ~ Some((r, c)) [INFO] [stdout] 78 ~ } else { [INFO] [stdout] 79 ~ None [INFO] [stdout] 80 ~ } [INFO] [stdout] 81 ~ }, [INFO] [stdout] 82 ~ ) [INFO] [stdout] 83 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day19.rs:98:6 [INFO] [stdout] | [INFO] [stdout] 98 | / return Rule { [INFO] [stdout] 99 | | condition: Some(Condition { [INFO] [stdout] 100 | | category, [INFO] [stdout] 101 | | op, [INFO] [stdout] ... | [INFO] [stdout] 104 | | dest, [INFO] [stdout] 105 | | }; [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] 98 ~ Rule { [INFO] [stdout] 99 ~ condition: Some(Condition { [INFO] [stdout] 100 ~ category, [INFO] [stdout] 101 ~ op, [INFO] [stdout] 102 ~ value, [INFO] [stdout] 103 ~ }), [INFO] [stdout] 104 ~ dest, [INFO] [stdout] 105 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day19.rs:113:6 [INFO] [stdout] | [INFO] [stdout] 113 | / return Rule { [INFO] [stdout] 114 | | condition: None, [INFO] [stdout] 115 | | dest, [INFO] [stdout] 116 | | }; [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] 113 ~ Rule { [INFO] [stdout] 114 ~ condition: None, [INFO] [stdout] 115 ~ dest, [INFO] [stdout] 116 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day19.rs:139:4 [INFO] [stdout] | [INFO] [stdout] 139 | return part; [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] 139 - return part; [INFO] [stdout] 139 + part [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `boxes` [INFO] [stdout] --> src/day15.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | for i in 0..256 { [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] 40 - for i in 0..256 { [INFO] [stdout] 40 + for (i, ) in boxes.iter().enumerate().take(256) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `b` is used to index `boxes` [INFO] [stdout] --> src/day15.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 41 | for b in 0..boxes[i].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] 41 - for b in 0..boxes[i].len() { [INFO] [stdout] 41 + for (b, ) in boxes.iter().enumerate().take(boxes[i].len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day16.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | cast_beam(&grid, r, c, dr, dc, &mut beams); [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 multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/day16.rs:32:17 [INFO] [stdout] | [INFO] [stdout] 32 | (dr, dc) = (dc * -1, dr * -1); [INFO] [stdout] | ^^^^^^^ help: consider using: `-dc` [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: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/day16.rs:32:26 [INFO] [stdout] | [INFO] [stdout] 32 | (dr, dc) = (dc * -1, dr * -1); [INFO] [stdout] | ^^^^^^^ help: consider using: `-dr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day16.rs:77:4 [INFO] [stdout] | [INFO] [stdout] 77 | return std::cmp::max(left, 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] 77 - return std::cmp::max(left, right); [INFO] [stdout] 77 + std::cmp::max(left, right) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:239:42 [INFO] [stdout] | [INFO] [stdout] 239 | queue.push_back((rule.dest.clone(), min_part.clone(), max_part.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `min_part` [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/day16.rs:87:4 [INFO] [stdout] | [INFO] [stdout] 87 | return std::cmp::max(top, bottom); [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] 87 - return std::cmp::max(top, bottom); [INFO] [stdout] 87 + std::cmp::max(top, bottom) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:239:60 [INFO] [stdout] | [INFO] [stdout] 239 | queue.push_back((rule.dest.clone(), min_part.clone(), max_part.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `max_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:245:30 [INFO] [stdout] | [INFO] [stdout] 245 | let mut pass_part_min = min_part.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `min_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:246:30 [INFO] [stdout] | [INFO] [stdout] 246 | let mut pass_part_max = max_part.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `max_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:262:41 [INFO] [stdout] | [INFO] [stdout] 262 | queue.push_back((rule.dest.clone(), min_part.clone(), max_part.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `min_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:262:59 [INFO] [stdout] | [INFO] [stdout] 262 | queue.push_back((rule.dest.clone(), min_part.clone(), max_part.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `max_part` [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/day17.rs:43:20 [INFO] [stdout] | [INFO] [stdout] 43 | fn sub_solve(grid: &Vec>, dist_to_turn: usize, max_dist: usize) -> u32 { [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] 43 - fn sub_solve(grid: &Vec>, dist_to_turn: usize, max_dist: usize) -> u32 { [INFO] [stdout] 43 + fn sub_solve(grid: &[Vec], dist_to_turn: usize, max_dist: usize) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/day20.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | (&name[1..], ModuleType::FlipFlop) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/day20.rs:35:10 [INFO] [stdout] | [INFO] [stdout] 35 | } else if name.starts_with("%") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 35 ~ } else if let Some() = name.strip_prefix("%") { [INFO] [stdout] 36 ~ (, ModuleType::FlipFlop) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/day20.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | (&name[1..], ModuleType::Conjunction) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/day20.rs:37:10 [INFO] [stdout] | [INFO] [stdout] 37 | } else if name.starts_with("&") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 37 ~ } else if let Some() = name.strip_prefix("&") { [INFO] [stdout] 38 ~ (, ModuleType::Conjunction) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day18.rs:34:2 [INFO] [stdout] | [INFO] [stdout] 34 | return area; [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] 34 - return area; [INFO] [stdout] 34 + area [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> src/day20.rs:145:39 [INFO] [stdout] | [INFO] [stdout] 145 | ... conjuction_period.values().fold(1, |acc, &p| acc * p) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `product::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:23:2 [INFO] [stdout] | [INFO] [stdout] 23 | 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] 23 - return result; [INFO] [stdout] 23 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `r` is only used to index `distances` [INFO] [stdout] --> src/day21.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | for r in 0..row_count { [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 [INFO] [stdout] | [INFO] [stdout] 12 - for r in 0..row_count { [INFO] [stdout] 12 + for in distances.iter().take(row_count) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is only used to index `distances` [INFO] [stdout] --> src/day21.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | for c in 0..col_count { [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 [INFO] [stdout] | [INFO] [stdout] 13 - for c in 0..col_count { [INFO] [stdout] 13 + for in distances.iter().take(col_count) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day21.rs:74:6 [INFO] [stdout] | [INFO] [stdout] 74 | if !distances[pos.0 as usize][pos.1 as usize].is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `distances[pos.0 as usize][pos.1 as usize].is_some()` [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/day21.rs:126:2 [INFO] [stdout] | [INFO] [stdout] 126 | return count_squares_in_steps(&distances_map, grid.len(), grid[0].len(), distance); [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] 126 - return count_squares_in_steps(&distances_map, grid.len(), grid[0].len(), distance); [INFO] [stdout] 126 + count_squares_in_steps(&distances_map, grid.len(), grid[0].len(), distance) [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/day21.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | 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] 27 - grid: &Vec>, [INFO] [stdout] 27 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/day21.rs:37:4 [INFO] [stdout] | [INFO] [stdout] 37 | (start_pos.0 as isize, start_pos.1 as isize), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `start_pos.0` [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 to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/day21.rs:37:26 [INFO] [stdout] | [INFO] [stdout] 37 | (start_pos.0 as isize, start_pos.1 as isize), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `start_pos.1` [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/day19.rs:98:6 [INFO] [stdout] | [INFO] [stdout] 98 | / return Rule { [INFO] [stdout] 99 | | condition: Some(Condition { [INFO] [stdout] 100 | | category, [INFO] [stdout] 101 | | op, [INFO] [stdout] ... | [INFO] [stdout] 104 | | dest, [INFO] [stdout] 105 | | }; [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] 98 ~ Rule { [INFO] [stdout] 99 ~ condition: Some(Condition { [INFO] [stdout] 100 ~ category, [INFO] [stdout] 101 ~ op, [INFO] [stdout] 102 ~ value, [INFO] [stdout] 103 ~ }), [INFO] [stdout] 104 ~ dest, [INFO] [stdout] 105 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day19.rs:113:6 [INFO] [stdout] | [INFO] [stdout] 113 | / return Rule { [INFO] [stdout] 114 | | condition: None, [INFO] [stdout] 115 | | dest, [INFO] [stdout] 116 | | }; [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] 113 ~ Rule { [INFO] [stdout] 114 ~ condition: None, [INFO] [stdout] 115 ~ dest, [INFO] [stdout] 116 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day19.rs:139:4 [INFO] [stdout] | [INFO] [stdout] 139 | return part; [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] 139 - return part; [INFO] [stdout] 139 + part [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day22.rs:39:2 [INFO] [stdout] | [INFO] [stdout] 39 | return dropped_count; [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 dropped_count; [INFO] [stdout] 39 + dropped_count [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/day22.rs:15:24 [INFO] [stdout] | [INFO] [stdout] 15 | fn drop_bricks(bricks: &mut 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] 15 - fn drop_bricks(bricks: &mut Vec) -> usize { [INFO] [stdout] 15 + fn drop_bricks(bricks: &mut [Brick]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Brick` which implements the `Copy` trait [INFO] [stdout] --> src/day22.rs:22:19 [INFO] [stdout] | [INFO] [stdout] 22 | let mut brick = bricks[i].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `bricks[i]` [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: the loop variable `j` is only used to index `bricks` [INFO] [stdout] --> src/day22.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | for j in 0..i { [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 [INFO] [stdout] | [INFO] [stdout] 23 - for j in 0..i { [INFO] [stdout] 23 + for in bricks.iter().take(i) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day23.rs:10:2 [INFO] [stdout] | [INFO] [stdout] 10 | return grid[pos.0][pos.1] != '#' && adjacent_paths > 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] 10 - return grid[pos.0][pos.1] != '#' && adjacent_paths > 2; [INFO] [stdout] 10 + grid[pos.0][pos.1] != '#' && adjacent_paths > 2 [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/day23.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | fn is_intersection(grid: &Vec>, pos: (usize, 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] 4 - fn is_intersection(grid: &Vec>, pos: (usize, usize)) -> bool { [INFO] [stdout] 4 + fn is_intersection(grid: &[Vec], pos: (usize, usize)) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day23.rs:56:2 [INFO] [stdout] | [INFO] [stdout] 56 | 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] 56 - return None; [INFO] [stdout] 56 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:239:42 [INFO] [stdout] | [INFO] [stdout] 239 | queue.push_back((rule.dest.clone(), min_part.clone(), max_part.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `min_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:239:60 [INFO] [stdout] | [INFO] [stdout] 239 | queue.push_back((rule.dest.clone(), min_part.clone(), max_part.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `max_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:245:30 [INFO] [stdout] | [INFO] [stdout] 245 | let mut pass_part_min = min_part.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `min_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:246:30 [INFO] [stdout] | [INFO] [stdout] 246 | let mut pass_part_max = max_part.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `max_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:262:41 [INFO] [stdout] | [INFO] [stdout] 262 | queue.push_back((rule.dest.clone(), min_part.clone(), max_part.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `min_part` [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 `Part` which implements the `Copy` trait [INFO] [stdout] --> src/day19.rs:262:59 [INFO] [stdout] | [INFO] [stdout] 262 | queue.push_back((rule.dest.clone(), min_part.clone(), max_part.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `max_part` [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/day23.rs:88:2 [INFO] [stdout] | [INFO] [stdout] 88 | 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] 88 - return result; [INFO] [stdout] 88 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day23.rs:133:2 [INFO] [stdout] | [INFO] [stdout] 133 | / return dfs( [INFO] [stdout] 134 | | &distances, [INFO] [stdout] 135 | | intersections.len() - 2, [INFO] [stdout] 136 | | intersections.len() - 1, [INFO] [stdout] ... | [INFO] [stdout] 139 | | .unwrap(); [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] 133 ~ dfs( [INFO] [stdout] 134 ~ &distances, [INFO] [stdout] 135 ~ intersections.len() - 2, [INFO] [stdout] 136 ~ intersections.len() - 1, [INFO] [stdout] 137 ~ &mut visited, [INFO] [stdout] 138 ~ ) [INFO] [stdout] 139 ~ .unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day23.rs:100:4 [INFO] [stdout] | [INFO] [stdout] 100 | .map(|(r, line)| { [INFO] [stdout] | __________^ [INFO] [stdout] 101 | | line[1..line.len() - 1] [INFO] [stdout] 102 | | .iter() [INFO] [stdout] 103 | | .enumerate() [INFO] [stdout] ... | [INFO] [stdout] 112 | | }) [INFO] [stdout] 113 | | .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] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 100 ~ .flat_map(|(r, line)| { [INFO] [stdout] 101 ~ line[1..line.len() - 1] [INFO] [stdout] 102 ~ .iter() [INFO] [stdout] 103 ~ .enumerate() [INFO] [stdout] 104 ~ .filter_map(|(c, _)| { [INFO] [stdout] 105 ~ if is_intersection(&grid, (r + 1, c + 1)) { [INFO] [stdout] 106 ~ Some((r + 1, c + 1)) [INFO] [stdout] 107 ~ } else { [INFO] [stdout] 108 ~ None [INFO] [stdout] 109 ~ } [INFO] [stdout] 110 ~ }) [INFO] [stdout] 111 ~ .collect_vec() [INFO] [stdout] 112 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/day20.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | (&name[1..], ModuleType::FlipFlop) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/day20.rs:35:10 [INFO] [stdout] | [INFO] [stdout] 35 | } else if name.starts_with("%") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 35 ~ } else if let Some() = name.strip_prefix("%") { [INFO] [stdout] 36 ~ (, ModuleType::FlipFlop) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/day20.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | (&name[1..], ModuleType::Conjunction) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/day20.rs:37:10 [INFO] [stdout] | [INFO] [stdout] 37 | } else if name.starts_with("&") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 37 ~ } else if let Some() = name.strip_prefix("&") { [INFO] [stdout] 38 ~ (, ModuleType::Conjunction) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day24.rs:28:2 [INFO] [stdout] | [INFO] [stdout] 28 | return Some((px, py)); [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] 28 - return Some((px, py)); [INFO] [stdout] 28 + Some((px, py)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/day24.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | && py >= 200000000000000f64 [INFO] [stdout] | ________________________^ [INFO] [stdout] 66 | | && py <= 400000000000000f64 [INFO] [stdout] | |_______________________________________________^ help: use: `(200000000000000f64..=400000000000000f64).contains(&py)` [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/day24.rs:63:8 [INFO] [stdout] | [INFO] [stdout] 63 | if px >= 200000000000000f64 [INFO] [stdout] | ____________________^ [INFO] [stdout] 64 | | && px <= 400000000000000f64 [INFO] [stdout] | |_______________________________________________^ help: use: `(200000000000000f64..=400000000000000f64).contains(&px)` [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 `.fold` can be written more succinctly using another method [INFO] [stdout] --> src/day20.rs:145:39 [INFO] [stdout] | [INFO] [stdout] 145 | ... conjuction_period.values().fold(1, |acc, &p| acc * p) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `product::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:23:2 [INFO] [stdout] | [INFO] [stdout] 23 | 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] 23 - return result; [INFO] [stdout] 23 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day25.rs:45:2 [INFO] [stdout] | [INFO] [stdout] 45 | return best; [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] 45 - return best; [INFO] [stdout] 45 + best [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `co` [INFO] [stdout] --> src/day25.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | for i in 0..n { [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] 12 - for i in 0..n { [INFO] [stdout] 12 + for (i, ) in co.iter_mut().enumerate().take(n) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `r` is only used to index `distances` [INFO] [stdout] --> src/day21.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | for r in 0..row_count { [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 [INFO] [stdout] | [INFO] [stdout] 12 - for r in 0..row_count { [INFO] [stdout] 12 + for in distances.iter().take(row_count) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `mat` [INFO] [stdout] --> src/day25.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | for i in 0..n { [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 [INFO] [stdout] | [INFO] [stdout] 34 - for i in 0..n { [INFO] [stdout] 34 + for in mat.iter_mut().take(n) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `mat` [INFO] [stdout] --> src/day25.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 38 | for i in 0..n { [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 [INFO] [stdout] | [INFO] [stdout] 38 - for i in 0..n { [INFO] [stdout] 38 + for in mat.iter_mut().take(n) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `c` is only used to index `distances` [INFO] [stdout] --> src/day21.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | for c in 0..col_count { [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 [INFO] [stdout] | [INFO] [stdout] 13 - for c in 0..col_count { [INFO] [stdout] 13 + for in distances.iter().take(col_count) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day21.rs:74:6 [INFO] [stdout] | [INFO] [stdout] 74 | if !distances[pos.0 as usize][pos.1 as usize].is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `distances[pos.0 as usize][pos.1 as usize].is_some()` [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: `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: unneeded `return` statement [INFO] [stdout] --> src/day21.rs:126:2 [INFO] [stdout] | [INFO] [stdout] 126 | return count_squares_in_steps(&distances_map, grid.len(), grid[0].len(), distance); [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] 126 - return count_squares_in_steps(&distances_map, grid.len(), grid[0].len(), distance); [INFO] [stdout] 126 + count_squares_in_steps(&distances_map, grid.len(), grid[0].len(), distance) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/day12.rs:77:31 [INFO] [stdout] | [INFO] [stdout] 77 | let mut unfolded_springs = vec![*springs; 5].join("?"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[*springs; 5]` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day21.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | 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] 27 - grid: &Vec>, [INFO] [stdout] 27 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/day21.rs:37:4 [INFO] [stdout] | [INFO] [stdout] 37 | (start_pos.0 as isize, start_pos.1 as isize), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `start_pos.0` [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 to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/day21.rs:37:26 [INFO] [stdout] | [INFO] [stdout] 37 | (start_pos.0 as isize, start_pos.1 as isize), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `start_pos.1` [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/day22.rs:39:2 [INFO] [stdout] | [INFO] [stdout] 39 | return dropped_count; [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 dropped_count; [INFO] [stdout] 39 + dropped_count [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/day22.rs:15:24 [INFO] [stdout] | [INFO] [stdout] 15 | fn drop_bricks(bricks: &mut 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] 15 - fn drop_bricks(bricks: &mut Vec) -> usize { [INFO] [stdout] 15 + fn drop_bricks(bricks: &mut [Brick]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Brick` which implements the `Copy` trait [INFO] [stdout] --> src/day22.rs:22:19 [INFO] [stdout] | [INFO] [stdout] 22 | let mut brick = bricks[i].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `bricks[i]` [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: the loop variable `j` is only used to index `bricks` [INFO] [stdout] --> src/day22.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | for j in 0..i { [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 [INFO] [stdout] | [INFO] [stdout] 23 - for j in 0..i { [INFO] [stdout] 23 + for in bricks.iter().take(i) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day23.rs:10:2 [INFO] [stdout] | [INFO] [stdout] 10 | return grid[pos.0][pos.1] != '#' && adjacent_paths > 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] 10 - return grid[pos.0][pos.1] != '#' && adjacent_paths > 2; [INFO] [stdout] 10 + grid[pos.0][pos.1] != '#' && adjacent_paths > 2 [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/day23.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | fn is_intersection(grid: &Vec>, pos: (usize, 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] 4 - fn is_intersection(grid: &Vec>, pos: (usize, usize)) -> bool { [INFO] [stdout] 4 + fn is_intersection(grid: &[Vec], pos: (usize, usize)) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day23.rs:56:2 [INFO] [stdout] | [INFO] [stdout] 56 | 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] 56 - return None; [INFO] [stdout] 56 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day23.rs:88:2 [INFO] [stdout] | [INFO] [stdout] 88 | 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] 88 - return result; [INFO] [stdout] 88 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day23.rs:133:2 [INFO] [stdout] | [INFO] [stdout] 133 | / return dfs( [INFO] [stdout] 134 | | &distances, [INFO] [stdout] 135 | | intersections.len() - 2, [INFO] [stdout] 136 | | intersections.len() - 1, [INFO] [stdout] ... | [INFO] [stdout] 139 | | .unwrap(); [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] 133 ~ dfs( [INFO] [stdout] 134 ~ &distances, [INFO] [stdout] 135 ~ intersections.len() - 2, [INFO] [stdout] 136 ~ intersections.len() - 1, [INFO] [stdout] 137 ~ &mut visited, [INFO] [stdout] 138 ~ ) [INFO] [stdout] 139 ~ .unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/day23.rs:100:4 [INFO] [stdout] | [INFO] [stdout] 100 | .map(|(r, line)| { [INFO] [stdout] | __________^ [INFO] [stdout] 101 | | line[1..line.len() - 1] [INFO] [stdout] 102 | | .iter() [INFO] [stdout] 103 | | .enumerate() [INFO] [stdout] ... | [INFO] [stdout] 112 | | }) [INFO] [stdout] 113 | | .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] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 100 ~ .flat_map(|(r, line)| { [INFO] [stdout] 101 ~ line[1..line.len() - 1] [INFO] [stdout] 102 ~ .iter() [INFO] [stdout] 103 ~ .enumerate() [INFO] [stdout] 104 ~ .filter_map(|(c, _)| { [INFO] [stdout] 105 ~ if is_intersection(&grid, (r + 1, c + 1)) { [INFO] [stdout] 106 ~ Some((r + 1, c + 1)) [INFO] [stdout] 107 ~ } else { [INFO] [stdout] 108 ~ None [INFO] [stdout] 109 ~ } [INFO] [stdout] 110 ~ }) [INFO] [stdout] 111 ~ .collect_vec() [INFO] [stdout] 112 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day24.rs:28:2 [INFO] [stdout] | [INFO] [stdout] 28 | return Some((px, py)); [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] 28 - return Some((px, py)); [INFO] [stdout] 28 + Some((px, py)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/day24.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | && py >= 200000000000000f64 [INFO] [stdout] | ________________________^ [INFO] [stdout] 66 | | && py <= 400000000000000f64 [INFO] [stdout] | |_______________________________________________^ help: use: `(200000000000000f64..=400000000000000f64).contains(&py)` [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/day24.rs:63:8 [INFO] [stdout] | [INFO] [stdout] 63 | if px >= 200000000000000f64 [INFO] [stdout] | ____________________^ [INFO] [stdout] 64 | | && px <= 400000000000000f64 [INFO] [stdout] | |_______________________________________________^ help: use: `(200000000000000f64..=400000000000000f64).contains(&px)` [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: unneeded `return` statement [INFO] [stdout] --> src/day25.rs:45:2 [INFO] [stdout] | [INFO] [stdout] 45 | return best; [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] 45 - return best; [INFO] [stdout] 45 + best [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `co` [INFO] [stdout] --> src/day25.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | for i in 0..n { [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] 12 - for i in 0..n { [INFO] [stdout] 12 + for (i, ) in co.iter_mut().enumerate().take(n) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `mat` [INFO] [stdout] --> src/day25.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | for i in 0..n { [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 [INFO] [stdout] | [INFO] [stdout] 34 - for i in 0..n { [INFO] [stdout] 34 + for in mat.iter_mut().take(n) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 53.97s [INFO] [stdout] warning: the loop variable `i` is only used to index `mat` [INFO] [stdout] --> src/day25.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 38 | for i in 0..n { [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 [INFO] [stdout] | [INFO] [stdout] 38 - for i in 0..n { [INFO] [stdout] 38 + for in mat.iter_mut().take(n) { [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: useless use of `vec!` [INFO] [stdout] --> src/day12.rs:77:31 [INFO] [stdout] | [INFO] [stdout] 77 | let mut unfolded_springs = vec![*springs; 5].join("?"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[*springs; 5]` [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] running `Command { std: "docker" "inspect" "c13136483af7a1e036cfced3c87ba87129fd8b064c03715cc07cb5fea93b77b4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c13136483af7a1e036cfced3c87ba87129fd8b064c03715cc07cb5fea93b77b4", kill_on_drop: false }` [INFO] [stdout] c13136483af7a1e036cfced3c87ba87129fd8b064c03715cc07cb5fea93b77b4