[INFO] cloning repository https://github.com/dabhaid/aoc-rust-22 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dabhaid/aoc-rust-22" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdabhaid%2Faoc-rust-22", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdabhaid%2Faoc-rust-22'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] fd33eceafc493268570b1f5e2be79c83edea071e [INFO] linting dabhaid/aoc-rust-22 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdabhaid%2Faoc-rust-22" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-2-tc1/source/.cargo/config [INFO] started tweaking git repo https://github.com/dabhaid/aoc-rust-22 [INFO] finished tweaking git repo https://github.com/dabhaid/aoc-rust-22 [INFO] tweaked toml for git repo https://github.com/dabhaid/aoc-rust-22 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/dabhaid/aoc-rust-22 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/dabhaid/aoc-rust-22 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 array2d v0.2.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 5b3b192261230938d48e51503177512b5ae57a02816000ecc4890ddc06c891aa [INFO] running `Command { std: "docker" "start" "-a" "5b3b192261230938d48e51503177512b5ae57a02816000ecc4890ddc06c891aa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5b3b192261230938d48e51503177512b5ae57a02816000ecc4890ddc06c891aa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5b3b192261230938d48e51503177512b5ae57a02816000ecc4890ddc06c891aa", kill_on_drop: false }` [INFO] [stdout] 5b3b192261230938d48e51503177512b5ae57a02816000ecc4890ddc06c891aa [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 53f6fb4ea2bc18b351251167ddfc44268d2a9e14923d908e7f9b2846296a780f [INFO] running `Command { std: "docker" "start" "-a" "53f6fb4ea2bc18b351251167ddfc44268d2a9e14923d908e7f9b2846296a780f", kill_on_drop: false }` [INFO] [stderr] Checking array2d v0.2.1 [INFO] [stderr] Checking pico-args v0.5.0 [INFO] [stderr] Checking advent_of_code v0.8.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | return HashMap::from([("X", 1), ("Y", 2), ("Z", 3), ("W", 6), ("D", 3), ("L", 0)]); [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] 5 - return HashMap::from([("X", 1), ("Y", 2), ("Z", 3), ("W", 6), ("D", 3), ("L", 0)]); [INFO] [stdout] 5 + HashMap::from([("X", 1), ("Y", 2), ("Z", 3), ("W", 6), ("D", 3), ("L", 0)]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | / return HashMap::from([ [INFO] [stdout] 10 | | ("AX", "D"), [INFO] [stdout] 11 | | ("AY", "W"), [INFO] [stdout] 12 | | ("AZ", "L"), [INFO] [stdout] ... | [INFO] [stdout] 18 | | ("CZ", "D"), [INFO] [stdout] 19 | | ]); [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] 9 ~ HashMap::from([ [INFO] [stdout] 10 + ("AX", "D"), [INFO] [stdout] 11 + ("AY", "W"), [INFO] [stdout] 12 + ("AZ", "L"), [INFO] [stdout] 13 + ("BX", "L"), [INFO] [stdout] 14 + ("BY", "D"), [INFO] [stdout] 15 + ("BZ", "W"), [INFO] [stdout] 16 + ("CX", "W"), [INFO] [stdout] 17 + ("CY", "L"), [INFO] [stdout] 18 + ("CZ", "D"), [INFO] [stdout] 19 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | return HashMap::from([("X", 0), ("Y", 3), ("Z", 6), ("A", 1), ("B", 2), ("C", 3)]); [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 HashMap::from([("X", 0), ("Y", 3), ("Z", 6), ("A", 1), ("B", 2), ("C", 3)]); [INFO] [stdout] 23 + HashMap::from([("X", 0), ("Y", 3), ("Z", 6), ("A", 1), ("B", 2), ("C", 3)]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | / return HashMap::from([ [INFO] [stdout] 29 | | ("AX", "C"), [INFO] [stdout] 30 | | ("AY", "A"), [INFO] [stdout] 31 | | ("AZ", "B"), [INFO] [stdout] ... | [INFO] [stdout] 37 | | ("CZ", "A"), [INFO] [stdout] 38 | | ]); [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 ~ HashMap::from([ [INFO] [stdout] 29 + ("AX", "C"), [INFO] [stdout] 30 + ("AY", "A"), [INFO] [stdout] 31 + ("AZ", "B"), [INFO] [stdout] 32 + ("BX", "A"), [INFO] [stdout] 33 + ("BY", "B"), [INFO] [stdout] 34 + ("BZ", "C"), [INFO] [stdout] 35 + ("CX", "B"), [INFO] [stdout] 36 + ("CY", "C"), [INFO] [stdout] 37 + ("CZ", "A"), [INFO] [stdout] 38 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | return Array2D::from_rows(&vecs); [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] 49 - return Array2D::from_rows(&vecs); [INFO] [stdout] 49 + Array2D::from_rows(&vecs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | / return Some(score( [INFO] [stdout] 54 | | &format_input(input), [INFO] [stdout] 55 | | get_scores_pt1(), [INFO] [stdout] 56 | | get_outcome_pt1(), [INFO] [stdout] 57 | | )); [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] 53 ~ Some(score( [INFO] [stdout] 54 + &format_input(input), [INFO] [stdout] 55 + get_scores_pt1(), [INFO] [stdout] 56 + get_outcome_pt1(), [INFO] [stdout] 57 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | / return Some(score( [INFO] [stdout] 62 | | &format_input(_input), [INFO] [stdout] 63 | | get_scores_pt2(), [INFO] [stdout] 64 | | get_outcome_pt2(), [INFO] [stdout] 65 | | )); [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 ~ Some(score( [INFO] [stdout] 62 + &format_input(_input), [INFO] [stdout] 63 + get_scores_pt2(), [INFO] [stdout] 64 + get_outcome_pt2(), [INFO] [stdout] 65 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | return _accum; [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] 81 - return _accum; [INFO] [stdout] 81 + _accum [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/01.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | return Some(summed_sacks[summed_sacks.len() - 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] 4 - return Some(summed_sacks[summed_sacks.len() - 1]); [INFO] [stdout] 4 + Some(summed_sacks[summed_sacks.len() - 1]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/04.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | return Some(accum); [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] 11 - return Some(accum); [INFO] [stdout] 11 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/01.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | return Some(summed_sacks.iter().rev().take(3).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] 10 - return Some(summed_sacks.iter().rev().take(3).sum()); [INFO] [stdout] 10 + Some(summed_sacks.iter().rev().take(3).sum()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/04.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | return Some(accum); [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] 22 - return Some(accum); [INFO] [stdout] 22 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/04.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | return results; [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 results; [INFO] [stdout] 42 + results [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/01.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | return elfsum; [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] 18 - return elfsum; [INFO] [stdout] 18 + elfsum [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/01.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | return elves; [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 elves; [INFO] [stdout] 32 + elves [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/bin/01.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | if line != "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!line.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | return HashMap::from([("X", 1), ("Y", 2), ("Z", 3), ("W", 6), ("D", 3), ("L", 0)]); [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] 5 - return HashMap::from([("X", 1), ("Y", 2), ("Z", 3), ("W", 6), ("D", 3), ("L", 0)]); [INFO] [stdout] 5 + HashMap::from([("X", 1), ("Y", 2), ("Z", 3), ("W", 6), ("D", 3), ("L", 0)]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `row` is only used to index `visible` [INFO] [stdout] --> src/bin/08.rs:11:16 [INFO] [stdout] | [INFO] [stdout] 11 | for row in 0..rows { [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 [INFO] [stdout] | [INFO] [stdout] 11 - for row in 0..rows { [INFO] [stdout] 11 + for in visible.iter_mut().take(rows) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | / return HashMap::from([ [INFO] [stdout] 10 | | ("AX", "D"), [INFO] [stdout] 11 | | ("AY", "W"), [INFO] [stdout] 12 | | ("AZ", "L"), [INFO] [stdout] ... | [INFO] [stdout] 18 | | ("CZ", "D"), [INFO] [stdout] 19 | | ]); [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] 9 ~ HashMap::from([ [INFO] [stdout] 10 + ("AX", "D"), [INFO] [stdout] 11 + ("AY", "W"), [INFO] [stdout] 12 + ("AZ", "L"), [INFO] [stdout] 13 + ("BX", "L"), [INFO] [stdout] 14 + ("BY", "D"), [INFO] [stdout] 15 + ("BZ", "W"), [INFO] [stdout] 16 + ("CX", "W"), [INFO] [stdout] 17 + ("CY", "L"), [INFO] [stdout] 18 + ("CZ", "D"), [INFO] [stdout] 19 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `visible` [INFO] [stdout] --> src/bin/08.rs:19:14 [INFO] [stdout] | [INFO] [stdout] 19 | for i in 0..cols { [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] 19 - for i in 0..cols { [INFO] [stdout] 19 + for in visible.iter_mut().take(cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `grid` [INFO] [stdout] --> src/bin/08.rs:27:22 [INFO] [stdout] | [INFO] [stdout] 27 | for i in 0..row { [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] 27 - for i in 0..row { [INFO] [stdout] 27 + for in grid.iter().take(row) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `grid` [INFO] [stdout] --> src/bin/08.rs:37:22 [INFO] [stdout] | [INFO] [stdout] 37 | for i in (row + 1)..rows { [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] 37 - for i in (row + 1)..rows { [INFO] [stdout] 37 + for in grid.iter().take(rows).skip((row + 1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | return HashMap::from([("X", 0), ("Y", 3), ("Z", 6), ("A", 1), ("B", 2), ("C", 3)]); [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 HashMap::from([("X", 0), ("Y", 3), ("Z", 6), ("A", 1), ("B", 2), ("C", 3)]); [INFO] [stdout] 23 + HashMap::from([("X", 0), ("Y", 3), ("Z", 6), ("A", 1), ("B", 2), ("C", 3)]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `row` is only used to index `visible` [INFO] [stdout] --> src/bin/08.rs:83:16 [INFO] [stdout] | [INFO] [stdout] 83 | for row in 0..rows { [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] 83 - for row in 0..rows { [INFO] [stdout] 83 + for in visible.iter_mut().take(rows) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | / return HashMap::from([ [INFO] [stdout] 29 | | ("AX", "C"), [INFO] [stdout] 30 | | ("AY", "A"), [INFO] [stdout] 31 | | ("AZ", "B"), [INFO] [stdout] ... | [INFO] [stdout] 37 | | ("CZ", "A"), [INFO] [stdout] 38 | | ]); [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 ~ HashMap::from([ [INFO] [stdout] 29 + ("AX", "C"), [INFO] [stdout] 30 + ("AY", "A"), [INFO] [stdout] 31 + ("AZ", "B"), [INFO] [stdout] 32 + ("BX", "A"), [INFO] [stdout] 33 + ("BY", "B"), [INFO] [stdout] 34 + ("BZ", "C"), [INFO] [stdout] 35 + ("CX", "B"), [INFO] [stdout] 36 + ("CY", "C"), [INFO] [stdout] 37 + ("CZ", "A"), [INFO] [stdout] 38 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `visible` [INFO] [stdout] --> src/bin/08.rs:91:14 [INFO] [stdout] | [INFO] [stdout] 91 | for i in 0..cols { [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] 91 - for i in 0..cols { [INFO] [stdout] 91 + for in visible.iter_mut().take(cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `grid` [INFO] [stdout] --> src/bin/08.rs:100:22 [INFO] [stdout] | [INFO] [stdout] 100 | for i in 0..row { [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] 100 - for i in 0..row { [INFO] [stdout] 100 + for in grid.iter().take(row) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | return Array2D::from_rows(&vecs); [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] 49 - return Array2D::from_rows(&vecs); [INFO] [stdout] 49 + Array2D::from_rows(&vecs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `grid` [INFO] [stdout] --> src/bin/08.rs:114:22 [INFO] [stdout] | [INFO] [stdout] 114 | for i in (row + 1)..rows { [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] 114 - for i in (row + 1)..rows { [INFO] [stdout] 114 + for in grid.iter().take(rows).skip((row + 1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/05.rs:85:11 [INFO] [stdout] | [INFO] [stdout] 85 | while !line.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `line.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 late initialization [INFO] [stdout] --> src/bin/05.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | let element; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `element` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 87 ~ [INFO] [stdout] 88 | let index: usize = i.try_into().unwrap(); [INFO] [stdout] 89 ~ let element = if i == 0 { [INFO] [stdout] 90 ~ line.unwrap().chars().nth(index + 1).unwrap() [INFO] [stdout] 91 | } else { [INFO] [stdout] 92 ~ line.unwrap().chars().nth(1 + (4 * index)).unwrap() [INFO] [stdout] 93 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/04.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | return Some(accum); [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] 11 - return Some(accum); [INFO] [stdout] 11 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/04.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | return Some(accum); [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] 22 - return Some(accum); [INFO] [stdout] 22 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/04.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | return results; [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 results; [INFO] [stdout] 42 + results [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | / return Some(score( [INFO] [stdout] 54 | | &format_input(input), [INFO] [stdout] 55 | | get_scores_pt1(), [INFO] [stdout] 56 | | get_outcome_pt1(), [INFO] [stdout] 57 | | )); [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] 53 ~ Some(score( [INFO] [stdout] 54 + &format_input(input), [INFO] [stdout] 55 + get_scores_pt1(), [INFO] [stdout] 56 + get_outcome_pt1(), [INFO] [stdout] 57 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | / return Some(score( [INFO] [stdout] 62 | | &format_input(_input), [INFO] [stdout] 63 | | get_scores_pt2(), [INFO] [stdout] 64 | | get_outcome_pt2(), [INFO] [stdout] 65 | | )); [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 ~ Some(score( [INFO] [stdout] 62 + &format_input(_input), [INFO] [stdout] 63 + get_scores_pt2(), [INFO] [stdout] 64 + get_outcome_pt2(), [INFO] [stdout] 65 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/02.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | return _accum; [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] 81 - return _accum; [INFO] [stdout] 81 + _accum [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/01.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | return Some(summed_sacks[summed_sacks.len() - 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] 4 - return Some(summed_sacks[summed_sacks.len() - 1]); [INFO] [stdout] 4 + Some(summed_sacks[summed_sacks.len() - 1]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/01.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | return Some(summed_sacks.iter().rev().take(3).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] 10 - return Some(summed_sacks.iter().rev().take(3).sum()); [INFO] [stdout] 10 + Some(summed_sacks.iter().rev().take(3).sum()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/01.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | return elfsum; [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] 18 - return elfsum; [INFO] [stdout] 18 + elfsum [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/01.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | return elves; [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 elves; [INFO] [stdout] 32 + elves [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/bin/01.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | if line != "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!line.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/bin/scaffold.rs:53:36 [INFO] [stdout] | [INFO] [stdout] 53 | OpenOptions::new().write(true).create(true).open(path) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/07.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | return Some(accum); [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] 13 - return Some(accum); [INFO] [stdout] 13 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/bin/07.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | while split != None { [INFO] [stdout] | ^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `split.is_some()` [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: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/07.rs:58:21 [INFO] [stdout] | [INFO] [stdout] 58 | delta = (dir.1 - space_to_reclaim).clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `(dir.1 - space_to_reclaim)` [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: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/bin/12.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | if (level == 'r') { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 119 - if (level == 'r') { [INFO] [stdout] 119 + if level == 'r' { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/bin/12.rs:171:8 [INFO] [stdout] | [INFO] [stdout] 171 | if current.0 as i32 - 1 >= 0 as i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `current.0 as i32 > 0 as i32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] = note: `#[warn(clippy::int_plus_one)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/bin/12.rs:177:8 [INFO] [stdout] | [INFO] [stdout] 177 | if current.1 as i32 - 1 >= 0 as i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `current.1 as i32 > 0 as i32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/05.rs:85:11 [INFO] [stdout] | [INFO] [stdout] 85 | while !line.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `line.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 late initialization [INFO] [stdout] --> src/bin/05.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | let element; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `element` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 87 ~ [INFO] [stdout] 88 | let index: usize = i.try_into().unwrap(); [INFO] [stdout] 89 ~ let element = if i == 0 { [INFO] [stdout] 90 ~ line.unwrap().chars().nth(index + 1).unwrap() [INFO] [stdout] 91 | } else { [INFO] [stdout] 92 ~ line.unwrap().chars().nth(1 + (4 * index)).unwrap() [INFO] [stdout] 93 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/bin/scaffold.rs:53:36 [INFO] [stdout] | [INFO] [stdout] 53 | OpenOptions::new().write(true).create(true).open(path) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Coordinate` [INFO] [stdout] --> src/bin/09.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Coordinate { [INFO] [stdout] 11 | | return Coordinate { x: 0, y: 0 }; [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for Coordinate { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/09.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | return Coordinate { x: 0, y: 0 }; [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] 11 - return Coordinate { x: 0, y: 0 }; [INFO] [stdout] 11 + Coordinate { x: 0, y: 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/09.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | / return Coordinate { [INFO] [stdout] 26 | | x: other.x - self.x, [INFO] [stdout] 27 | | y: other.y - self.y, [INFO] [stdout] 28 | | }; [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] 25 ~ Coordinate { [INFO] [stdout] 26 + x: other.x - self.x, [INFO] [stdout] 27 + y: other.y - self.y, [INFO] [stdout] 28 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary operation [INFO] [stdout] --> src/bin/09.rs:102:13 [INFO] [stdout] | [INFO] [stdout] 102 | &knots[0].advance(&m.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: statement can be reduced to: `knots[0].advance(&m.0);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stdout] = note: `#[warn(clippy::unnecessary_operation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Coordinate` which implements the `Copy` trait [INFO] [stdout] --> src/bin/09.rs:104:37 [INFO] [stdout] | [INFO] [stdout] 104 | let relative_head = knots[i - 1].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `knots[i - 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] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `print!()` with a format string that ends in a single newline [INFO] [stdout] --> src/bin/10.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | print!("Clock tick{}: {}\n", clock, clock * x); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stdout] = note: `#[warn(clippy::print_with_newline)]` on by default [INFO] [stdout] help: use `println!` instead [INFO] [stdout] | [INFO] [stdout] 29 - print!("Clock tick{}: {}\n", clock, clock * x); [INFO] [stdout] 29 + println!("Clock tick{}: {}", clock, clock * x); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/10.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | return self.line == other.line; [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] 43 - return self.line == other.line; [INFO] [stdout] 43 + self.line == other.line [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/10.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | return matching == 0; [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] 59 - return matching == 0; [INFO] [stdout] 59 + matching == 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/09.rs:158:29 [INFO] [stdout] | [INFO] [stdout] 158 | assert_eq!(part_two(&input), Some(36)); [INFO] [stdout] | ^^^^^^ help: change this to: `input` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/bin/09.rs:98:21 [INFO] [stdout] | [INFO] [stdout] 98 | let mut knots = vec![Coordinate::new(); 10]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[Coordinate::new(); 10]` [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: unused borrow that must be used [INFO] [stdout] --> src/bin/09.rs:102:13 [INFO] [stdout] | [INFO] [stdout] 102 | &knots[0].advance(&m.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 102 | let _ = &knots[0].advance(&m.0); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `Iterator::fold` on a type that implements `Try` [INFO] [stdout] --> src/bin/10.rs:69:23 [INFO] [stdout] | [INFO] [stdout] 69 | self.0.iter().fold(Ok(()), |result, line| { [INFO] [stdout] | _______________________^ [INFO] [stdout] 70 | | result.and_then(|_| writeln!(f, "{}", line)) [INFO] [stdout] 71 | | }) [INFO] [stdout] | |__________^ help: use `try_fold` instead: `try_fold((), |result, line| ...)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_try_fold [INFO] [stdout] = note: `#[warn(clippy::manual_try_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/bin/10.rs:82:28 [INFO] [stdout] | [INFO] [stdout] 82 | let mut lines: Lines = Lines { 0: Vec::new() }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use tuple initialization: `Lines(Vec::new())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] = note: `#[warn(clippy::init_numbered_fields)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/bin/12.rs:262:17 [INFO] [stdout] | [INFO] [stdout] 262 | pub fn part_two(input: &str) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Eq::assert_receiver_is_total_eq` should never be implemented by hand [INFO] [stdout] --> src/bin/10.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | fn assert_receiver_is_total_eq(&self) {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this method was used to add checks to the `Eq` derive macro [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #152336 [INFO] [stdout] = note: `#[warn(internal_eq_trait_method_impls)]` (part of `#[warn(future_incompatible)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/bin/12.rs:64:29 [INFO] [stdout] | [INFO] [stdout] 64 | let label = array_copy.get(i, j).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*array_copy.get(i, j).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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/bin/12.rs:66:17 [INFO] [stdout] | [INFO] [stdout] 66 | / if !hashmap.contains_key(&label) { [INFO] [stdout] 67 | | hashmap.insert(label, vec![blob]); [INFO] [stdout] 68 | | } else { [INFO] [stdout] 69 | | hashmap.get_mut(&label).unwrap().push(blob); [INFO] [stdout] 70 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 66 ~ if let std::collections::hash_map::Entry::Vacant(e) = hashmap.entry(label) { [INFO] [stdout] 67 + e.insert(vec![blob]); [INFO] [stdout] 68 + } else { [INFO] [stdout] 69 + hashmap.get_mut(&label).unwrap().push(blob); [INFO] [stdout] 70 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/12.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | return blob; [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] 94 - return blob; [INFO] [stdout] 94 + blob [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/bin/12.rs:82:17 [INFO] [stdout] | [INFO] [stdout] 82 | let label = array.get(coord.0, coord.1).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*array.get(coord.0, coord.1).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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/12.rs:88:39 [INFO] [stdout] | [INFO] [stdout] 88 | let neighbors = get_neighbors(&array, point, &label); [INFO] [stdout] | ^^^^^^ help: change this to: `array` [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: the loop variable `i` is used to index `uplevel_blobs` [INFO] [stdout] --> src/bin/12.rs:106:14 [INFO] [stdout] | [INFO] [stdout] 106 | for i in 0..uplevel_blobs.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] 106 - for i in 0..uplevel_blobs.len() { [INFO] [stdout] 106 + for (i, ) in uplevel_blobs.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/bin/12.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 107 | / match find_connection(¤t_blob, &uplevel_blobs[i]) { [INFO] [stdout] 108 | | Some(_x) => neighbors.push((next_level, i)), [INFO] [stdout] 109 | | None => (), [INFO] [stdout] 110 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(_x) = find_connection(¤t_blob, &uplevel_blobs[i]) { neighbors.push((next_level, i)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/12.rs:107:31 [INFO] [stdout] | [INFO] [stdout] 107 | match find_connection(¤t_blob, &uplevel_blobs[i]) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `current_blob` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `downlevel_blobs` [INFO] [stdout] --> src/bin/12.rs:112:14 [INFO] [stdout] | [INFO] [stdout] 112 | for i in 0..downlevel_blobs.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] 112 - for i in 0..downlevel_blobs.len() { [INFO] [stdout] 112 + for (i, ) in downlevel_blobs.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/bin/12.rs:113:9 [INFO] [stdout] | [INFO] [stdout] 113 | / match find_connection(¤t_blob, &downlevel_blobs[i]) { [INFO] [stdout] 114 | | Some(_x) => neighbors.push((previous_level, i)), [INFO] [stdout] 115 | | None => (), [INFO] [stdout] 116 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(_x) = find_connection(¤t_blob, &downlevel_blobs[i]) { neighbors.push((previous_level, i)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/12.rs:113:31 [INFO] [stdout] | [INFO] [stdout] 113 | match find_connection(¤t_blob, &downlevel_blobs[i]) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `current_blob` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `l2_blobs` [INFO] [stdout] --> src/bin/12.rs:121:18 [INFO] [stdout] | [INFO] [stdout] 121 | for i in 0..l2_blobs.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] 121 - for i in 0..l2_blobs.len() { [INFO] [stdout] 121 + for (i, ) in l2_blobs.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/bin/12.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | / match find_connection(¤t_blob, &l2_blobs[i]) { [INFO] [stdout] 123 | | Some(_x) => neighbors.push((prev_level(previous_level), i)), [INFO] [stdout] 124 | | None => (), [INFO] [stdout] 125 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(_x) = find_connection(¤t_blob, &l2_blobs[i]) { neighbors.push((prev_level(previous_level), i)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/12.rs:122:35 [INFO] [stdout] | [INFO] [stdout] 122 | match find_connection(¤t_blob, &l2_blobs[i]) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `current_blob` [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 `if` statement can be collapsed [INFO] [stdout] --> src/bin/12.rs:140:5 [INFO] [stdout] | [INFO] [stdout] 140 | / if point.0 + 1 < rows { [INFO] [stdout] 141 | | if array.get(point.0 + 1, point.1).unwrap() == label { [INFO] [stdout] 142 | | neighbors.push((point.0 + 1, point.1)); [INFO] [stdout] 143 | | } [INFO] [stdout] 144 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 140 ~ if point.0 + 1 < rows [INFO] [stdout] 141 ~ && array.get(point.0 + 1, point.1).unwrap() == label { [INFO] [stdout] 142 | neighbors.push((point.0 + 1, point.1)); [INFO] [stdout] 143 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/12.rs:146:5 [INFO] [stdout] | [INFO] [stdout] 146 | / if point.0 as i32 - 1 > 0 { [INFO] [stdout] 147 | | if array.get(point.0 - 1, point.1).unwrap() == label { [INFO] [stdout] 148 | | neighbors.push((point.0 - 1, point.1)); [INFO] [stdout] 149 | | } [INFO] [stdout] 150 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 146 ~ if point.0 as i32 - 1 > 0 [INFO] [stdout] 147 ~ && array.get(point.0 - 1, point.1).unwrap() == label { [INFO] [stdout] 148 | neighbors.push((point.0 - 1, point.1)); [INFO] [stdout] 149 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/12.rs:152:5 [INFO] [stdout] | [INFO] [stdout] 152 | / if point.1 + 1 < cols { [INFO] [stdout] 153 | | if array.get(point.0, point.1 + 1).unwrap() == label { [INFO] [stdout] 154 | | neighbors.push((point.0, point.1 + 1)); [INFO] [stdout] 155 | | } [INFO] [stdout] 156 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 152 ~ if point.1 + 1 < cols [INFO] [stdout] 153 ~ && array.get(point.0, point.1 + 1).unwrap() == label { [INFO] [stdout] 154 | neighbors.push((point.0, point.1 + 1)); [INFO] [stdout] 155 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/12.rs:158:5 [INFO] [stdout] | [INFO] [stdout] 158 | / if (point.1 as i32) - 1 > 0 { [INFO] [stdout] 159 | | if array.get(point.0, point.1 - 1).unwrap() == label { [INFO] [stdout] 160 | | neighbors.push((point.0, point.1 - 1)); [INFO] [stdout] 161 | | } [INFO] [stdout] 162 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 158 ~ if (point.1 as i32) - 1 > 0 [INFO] [stdout] 159 ~ && array.get(point.0, point.1 - 1).unwrap() == label { [INFO] [stdout] 160 | neighbors.push((point.0, point.1 - 1)); [INFO] [stdout] 161 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `i32` is unnecessary [INFO] [stdout] --> src/bin/12.rs:171:32 [INFO] [stdout] | [INFO] [stdout] 171 | if current.0 as i32 - 1 >= 0 as i32 { [INFO] [stdout] | ^^^^^^^^ help: try: `0_i32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `i32` is unnecessary [INFO] [stdout] --> src/bin/12.rs:177:32 [INFO] [stdout] | [INFO] [stdout] 177 | if current.1 as i32 - 1 >= 0 as i32 { [INFO] [stdout] | ^^^^^^^^ help: try: `0_i32` [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/bin/12.rs:230:5 [INFO] [stdout] | [INFO] [stdout] 230 | return (x.abs() + y.abs()) as u32; [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] 230 - return (x.abs() + y.abs()) as u32; [INFO] [stdout] 230 + (x.abs() + y.abs()) as u32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/bin/12.rs:273:5 [INFO] [stdout] | [INFO] [stdout] 272 | let array = Array2D::from_rows(&rows); [INFO] [stdout] | -------------------------------------- unnecessary `let` binding [INFO] [stdout] 273 | array [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 272 ~ [INFO] [stdout] 273 ~ Array2D::from_rows(&rows) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/11.rs:110:21 [INFO] [stdout] | [INFO] [stdout] 110 | let mut monkey = &mut monkeys[index]; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `monkeys` [INFO] [stdout] --> src/bin/11.rs:9:14 [INFO] [stdout] | [INFO] [stdout] 9 | for x in 0..monkeys.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 [INFO] [stdout] | [INFO] [stdout] 9 - for x in 0..monkeys.len() { [INFO] [stdout] 9 + for in &monkeys { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bin/11.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | cap = cap * monkeys[x].divis; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cap *= monkeys[x].divis` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bin/11.rs:32:17 [INFO] [stdout] | [INFO] [stdout] 32 | item = item % cap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `item %= cap` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/bin/11.rs:33:23 [INFO] [stdout] | [INFO] [stdout] 33 | match item % monkeys[i].divis == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `item.is_multiple_of(monkeys[i].divis)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `monkeys` [INFO] [stdout] --> src/bin/11.rs:47:14 [INFO] [stdout] | [INFO] [stdout] 47 | for i in 0..monkeys.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] 47 - for i in 0..monkeys.len() { [INFO] [stdout] 47 + for in &monkeys { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Monkey` [INFO] [stdout] --> src/bin/11.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | / pub fn new() -> Monkey { [INFO] [stdout] 72 | | Monkey { [INFO] [stdout] 73 | | items: Vec::new(), [INFO] [stdout] 74 | | operations: String::new(), [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 70 + impl Default for Monkey { [INFO] [stdout] 71 + fn default() -> Self { [INFO] [stdout] 72 + Self::new() [INFO] [stdout] 73 + } [INFO] [stdout] 74 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/11.rs:89:11 [INFO] [stdout] | [INFO] [stdout] 89 | while !line.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `line.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: comparison to empty slice [INFO] [stdout] --> src/bin/11.rs:106:20 [INFO] [stdout] | [INFO] [stdout] 106 | if l == "" { [INFO] [stdout] | ^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/03.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | return Some(accum); [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] 18 - return Some(accum); [INFO] [stdout] 18 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/03.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | if intersect.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!intersect.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` 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/bin/03.rs:14:37 [INFO] [stdout] | [INFO] [stdout] 14 | accum += item_value(&item); [INFO] [stdout] | ^^^^^ help: change this to: `item` [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/bin/03.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | return val - 96; [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] 24 ~ val - 96 [INFO] [stdout] 25 | } else { [INFO] [stdout] 26 | return val - 38; [INFO] [stdout] 27 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/03.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | return val - 38; [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] 26 ~ val - 38 [INFO] [stdout] 27 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/03.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | return Some(accum); [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 Some(accum); [INFO] [stdout] 46 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `packs.get(0)` [INFO] [stdout] --> src/bin/03.rs:35:56 [INFO] [stdout] | [INFO] [stdout] 35 | let packs0: HashSet = HashSet::from_iter(packs.get(0)?.chars()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `packs.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/03.rs:38:41 [INFO] [stdout] | [INFO] [stdout] 38 | let mut common: HashSet = packs0.intersection(&packs1).map(|x| *x).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `packs0.intersection(&packs1).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/03.rs:39:18 [INFO] [stdout] | [INFO] [stdout] 39 | common = common.intersection(&packs2).map(|x| *x).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `common.intersection(&packs2).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/03.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 40 | if common.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!common.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/03.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | return Some(vecs); [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] 54 - return Some(vecs); [INFO] [stdout] 54 + Some(vecs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/bin/12.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | if (level == 'r') { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 119 - if (level == 'r') { [INFO] [stdout] 119 + if level == 'r' { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/bin/12.rs:171:8 [INFO] [stdout] | [INFO] [stdout] 171 | if current.0 as i32 - 1 >= 0 as i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `current.0 as i32 > 0 as i32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] = note: `#[warn(clippy::int_plus_one)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/bin/12.rs:177:8 [INFO] [stdout] | [INFO] [stdout] 177 | if current.1 as i32 - 1 >= 0 as i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `current.1 as i32 > 0 as i32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/07.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | return Some(accum); [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] 13 - return Some(accum); [INFO] [stdout] 13 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/bin/07.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | while split != None { [INFO] [stdout] | ^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `split.is_some()` [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: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/07.rs:58:21 [INFO] [stdout] | [INFO] [stdout] 58 | delta = (dir.1 - space_to_reclaim).clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `(dir.1 - space_to_reclaim)` [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: variable does not need to be mutable [INFO] [stdout] --> src/bin/11.rs:110:21 [INFO] [stdout] | [INFO] [stdout] 110 | let mut monkey = &mut monkeys[index]; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Coordinate` [INFO] [stdout] --> src/bin/09.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Coordinate { [INFO] [stdout] 11 | | return Coordinate { x: 0, y: 0 }; [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for Coordinate { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/09.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | return Coordinate { x: 0, y: 0 }; [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] 11 - return Coordinate { x: 0, y: 0 }; [INFO] [stdout] 11 + Coordinate { x: 0, y: 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/09.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | / return Coordinate { [INFO] [stdout] 26 | | x: other.x - self.x, [INFO] [stdout] 27 | | y: other.y - self.y, [INFO] [stdout] 28 | | }; [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] 25 ~ Coordinate { [INFO] [stdout] 26 + x: other.x - self.x, [INFO] [stdout] 27 + y: other.y - self.y, [INFO] [stdout] 28 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary operation [INFO] [stdout] --> src/bin/09.rs:102:13 [INFO] [stdout] | [INFO] [stdout] 102 | &knots[0].advance(&m.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: statement can be reduced to: `knots[0].advance(&m.0);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stdout] = note: `#[warn(clippy::unnecessary_operation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `monkeys` [INFO] [stdout] --> src/bin/11.rs:9:14 [INFO] [stdout] | [INFO] [stdout] 9 | for x in 0..monkeys.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 [INFO] [stdout] | [INFO] [stdout] 9 - for x in 0..monkeys.len() { [INFO] [stdout] 9 + for in &monkeys { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bin/11.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | cap = cap * monkeys[x].divis; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cap *= monkeys[x].divis` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bin/11.rs:32:17 [INFO] [stdout] | [INFO] [stdout] 32 | item = item % cap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `item %= cap` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/bin/11.rs:33:23 [INFO] [stdout] | [INFO] [stdout] 33 | match item % monkeys[i].divis == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `item.is_multiple_of(monkeys[i].divis)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `monkeys` [INFO] [stdout] --> src/bin/11.rs:47:14 [INFO] [stdout] | [INFO] [stdout] 47 | for i in 0..monkeys.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] 47 - for i in 0..monkeys.len() { [INFO] [stdout] 47 + for in &monkeys { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Coordinate` which implements the `Copy` trait [INFO] [stdout] --> src/bin/09.rs:104:37 [INFO] [stdout] | [INFO] [stdout] 104 | let relative_head = knots[i - 1].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `knots[i - 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] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Monkey` [INFO] [stdout] --> src/bin/11.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | / pub fn new() -> Monkey { [INFO] [stdout] 72 | | Monkey { [INFO] [stdout] 73 | | items: Vec::new(), [INFO] [stdout] 74 | | operations: String::new(), [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 70 + impl Default for Monkey { [INFO] [stdout] 71 + fn default() -> Self { [INFO] [stdout] 72 + Self::new() [INFO] [stdout] 73 + } [INFO] [stdout] 74 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/11.rs:89:11 [INFO] [stdout] | [INFO] [stdout] 89 | while !line.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `line.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: comparison to empty slice [INFO] [stdout] --> src/bin/11.rs:106:20 [INFO] [stdout] | [INFO] [stdout] 106 | if l == "" { [INFO] [stdout] | ^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/bin/09.rs:98:21 [INFO] [stdout] | [INFO] [stdout] 98 | let mut knots = vec![Coordinate::new(); 10]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[Coordinate::new(); 10]` [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: unused borrow that must be used [INFO] [stdout] --> src/bin/09.rs:102:13 [INFO] [stdout] | [INFO] [stdout] 102 | &knots[0].advance(&m.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 102 | let _ = &knots[0].advance(&m.0); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/bin/12.rs:262:17 [INFO] [stdout] | [INFO] [stdout] 262 | pub fn part_two(input: &str) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/bin/12.rs:64:29 [INFO] [stdout] | [INFO] [stdout] 64 | let label = array_copy.get(i, j).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*array_copy.get(i, j).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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/bin/12.rs:66:17 [INFO] [stdout] | [INFO] [stdout] 66 | / if !hashmap.contains_key(&label) { [INFO] [stdout] 67 | | hashmap.insert(label, vec![blob]); [INFO] [stdout] 68 | | } else { [INFO] [stdout] 69 | | hashmap.get_mut(&label).unwrap().push(blob); [INFO] [stdout] 70 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 66 ~ if let std::collections::hash_map::Entry::Vacant(e) = hashmap.entry(label) { [INFO] [stdout] 67 + e.insert(vec![blob]); [INFO] [stdout] 68 + } else { [INFO] [stdout] 69 + hashmap.get_mut(&label).unwrap().push(blob); [INFO] [stdout] 70 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/12.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | return blob; [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] 94 - return blob; [INFO] [stdout] 94 + blob [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/bin/12.rs:82:17 [INFO] [stdout] | [INFO] [stdout] 82 | let label = array.get(coord.0, coord.1).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*array.get(coord.0, coord.1).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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/12.rs:88:39 [INFO] [stdout] | [INFO] [stdout] 88 | let neighbors = get_neighbors(&array, point, &label); [INFO] [stdout] | ^^^^^^ help: change this to: `array` [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: the loop variable `i` is used to index `uplevel_blobs` [INFO] [stdout] --> src/bin/12.rs:106:14 [INFO] [stdout] | [INFO] [stdout] 106 | for i in 0..uplevel_blobs.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] 106 - for i in 0..uplevel_blobs.len() { [INFO] [stdout] 106 + for (i, ) in uplevel_blobs.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/bin/12.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 107 | / match find_connection(¤t_blob, &uplevel_blobs[i]) { [INFO] [stdout] 108 | | Some(_x) => neighbors.push((next_level, i)), [INFO] [stdout] 109 | | None => (), [INFO] [stdout] 110 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(_x) = find_connection(¤t_blob, &uplevel_blobs[i]) { neighbors.push((next_level, i)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/12.rs:107:31 [INFO] [stdout] | [INFO] [stdout] 107 | match find_connection(¤t_blob, &uplevel_blobs[i]) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `current_blob` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `downlevel_blobs` [INFO] [stdout] --> src/bin/12.rs:112:14 [INFO] [stdout] | [INFO] [stdout] 112 | for i in 0..downlevel_blobs.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] 112 - for i in 0..downlevel_blobs.len() { [INFO] [stdout] 112 + for (i, ) in downlevel_blobs.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/bin/12.rs:113:9 [INFO] [stdout] | [INFO] [stdout] 113 | / match find_connection(¤t_blob, &downlevel_blobs[i]) { [INFO] [stdout] 114 | | Some(_x) => neighbors.push((previous_level, i)), [INFO] [stdout] 115 | | None => (), [INFO] [stdout] 116 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(_x) = find_connection(¤t_blob, &downlevel_blobs[i]) { neighbors.push((previous_level, i)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/12.rs:113:31 [INFO] [stdout] | [INFO] [stdout] 113 | match find_connection(¤t_blob, &downlevel_blobs[i]) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `current_blob` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `l2_blobs` [INFO] [stdout] --> src/bin/12.rs:121:18 [INFO] [stdout] | [INFO] [stdout] 121 | for i in 0..l2_blobs.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] 121 - for i in 0..l2_blobs.len() { [INFO] [stdout] 121 + for (i, ) in l2_blobs.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/bin/12.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | / match find_connection(¤t_blob, &l2_blobs[i]) { [INFO] [stdout] 123 | | Some(_x) => neighbors.push((prev_level(previous_level), i)), [INFO] [stdout] 124 | | None => (), [INFO] [stdout] 125 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(_x) = find_connection(¤t_blob, &l2_blobs[i]) { neighbors.push((prev_level(previous_level), i)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `row` is only used to index `visible` [INFO] [stdout] --> src/bin/08.rs:11:16 [INFO] [stdout] | [INFO] [stdout] 11 | for row in 0..rows { [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 [INFO] [stdout] | [INFO] [stdout] 11 - for row in 0..rows { [INFO] [stdout] 11 + for in visible.iter_mut().take(rows) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/12.rs:122:35 [INFO] [stdout] | [INFO] [stdout] 122 | match find_connection(¤t_blob, &l2_blobs[i]) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `current_blob` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `visible` [INFO] [stdout] --> src/bin/08.rs:19:14 [INFO] [stdout] | [INFO] [stdout] 19 | for i in 0..cols { [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] 19 - for i in 0..cols { [INFO] [stdout] 19 + for in visible.iter_mut().take(cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `grid` [INFO] [stdout] --> src/bin/08.rs:27:22 [INFO] [stdout] | [INFO] [stdout] 27 | for i in 0..row { [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] 27 - for i in 0..row { [INFO] [stdout] 27 + for in grid.iter().take(row) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/12.rs:140:5 [INFO] [stdout] | [INFO] [stdout] 140 | / if point.0 + 1 < rows { [INFO] [stdout] 141 | | if array.get(point.0 + 1, point.1).unwrap() == label { [INFO] [stdout] 142 | | neighbors.push((point.0 + 1, point.1)); [INFO] [stdout] 143 | | } [INFO] [stdout] 144 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 140 ~ if point.0 + 1 < rows [INFO] [stdout] 141 ~ && array.get(point.0 + 1, point.1).unwrap() == label { [INFO] [stdout] 142 | neighbors.push((point.0 + 1, point.1)); [INFO] [stdout] 143 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/12.rs:146:5 [INFO] [stdout] | [INFO] [stdout] 146 | / if point.0 as i32 - 1 > 0 { [INFO] [stdout] 147 | | if array.get(point.0 - 1, point.1).unwrap() == label { [INFO] [stdout] 148 | | neighbors.push((point.0 - 1, point.1)); [INFO] [stdout] 149 | | } [INFO] [stdout] 150 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 146 ~ if point.0 as i32 - 1 > 0 [INFO] [stdout] 147 ~ && array.get(point.0 - 1, point.1).unwrap() == label { [INFO] [stdout] 148 | neighbors.push((point.0 - 1, point.1)); [INFO] [stdout] 149 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/12.rs:152:5 [INFO] [stdout] | [INFO] [stdout] 152 | / if point.1 + 1 < cols { [INFO] [stdout] 153 | | if array.get(point.0, point.1 + 1).unwrap() == label { [INFO] [stdout] 154 | | neighbors.push((point.0, point.1 + 1)); [INFO] [stdout] 155 | | } [INFO] [stdout] 156 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 152 ~ if point.1 + 1 < cols [INFO] [stdout] 153 ~ && array.get(point.0, point.1 + 1).unwrap() == label { [INFO] [stdout] 154 | neighbors.push((point.0, point.1 + 1)); [INFO] [stdout] 155 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/12.rs:158:5 [INFO] [stdout] | [INFO] [stdout] 158 | / if (point.1 as i32) - 1 > 0 { [INFO] [stdout] 159 | | if array.get(point.0, point.1 - 1).unwrap() == label { [INFO] [stdout] 160 | | neighbors.push((point.0, point.1 - 1)); [INFO] [stdout] 161 | | } [INFO] [stdout] 162 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 158 ~ if (point.1 as i32) - 1 > 0 [INFO] [stdout] 159 ~ && array.get(point.0, point.1 - 1).unwrap() == label { [INFO] [stdout] 160 | neighbors.push((point.0, point.1 - 1)); [INFO] [stdout] 161 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `grid` [INFO] [stdout] --> src/bin/08.rs:37:22 [INFO] [stdout] | [INFO] [stdout] 37 | for i in (row + 1)..rows { [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] 37 - for i in (row + 1)..rows { [INFO] [stdout] 37 + for in grid.iter().take(rows).skip((row + 1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `i32` is unnecessary [INFO] [stdout] --> src/bin/12.rs:171:32 [INFO] [stdout] | [INFO] [stdout] 171 | if current.0 as i32 - 1 >= 0 as i32 { [INFO] [stdout] | ^^^^^^^^ help: try: `0_i32` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `i32` is unnecessary [INFO] [stdout] --> src/bin/12.rs:177:32 [INFO] [stdout] | [INFO] [stdout] 177 | if current.1 as i32 - 1 >= 0 as i32 { [INFO] [stdout] | ^^^^^^^^ help: try: `0_i32` [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: the loop variable `row` is only used to index `visible` [INFO] [stdout] --> src/bin/08.rs:83:16 [INFO] [stdout] | [INFO] [stdout] 83 | for row in 0..rows { [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] 83 - for row in 0..rows { [INFO] [stdout] 83 + for in visible.iter_mut().take(rows) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/12.rs:230:5 [INFO] [stdout] | [INFO] [stdout] 230 | return (x.abs() + y.abs()) as u32; [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] 230 - return (x.abs() + y.abs()) as u32; [INFO] [stdout] 230 + (x.abs() + y.abs()) as u32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `visible` [INFO] [stdout] --> src/bin/08.rs:91:14 [INFO] [stdout] | [INFO] [stdout] 91 | for i in 0..cols { [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] 91 - for i in 0..cols { [INFO] [stdout] 91 + for in visible.iter_mut().take(cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `grid` [INFO] [stdout] --> src/bin/08.rs:100:22 [INFO] [stdout] | [INFO] [stdout] 100 | for i in 0..row { [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] 100 - for i in 0..row { [INFO] [stdout] 100 + for in grid.iter().take(row) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/bin/12.rs:273:5 [INFO] [stdout] | [INFO] [stdout] 272 | let array = Array2D::from_rows(&rows); [INFO] [stdout] | -------------------------------------- unnecessary `let` binding [INFO] [stdout] 273 | array [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 272 ~ [INFO] [stdout] 273 ~ Array2D::from_rows(&rows) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `grid` [INFO] [stdout] --> src/bin/08.rs:114:22 [INFO] [stdout] | [INFO] [stdout] 114 | for i in (row + 1)..rows { [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] 114 - for i in (row + 1)..rows { [INFO] [stdout] 114 + for in grid.iter().take(rows).skip((row + 1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `print!()` with a format string that ends in a single newline [INFO] [stdout] --> src/bin/10.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | print!("Clock tick{}: {}\n", clock, clock * x); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stdout] = note: `#[warn(clippy::print_with_newline)]` on by default [INFO] [stdout] help: use `println!` instead [INFO] [stdout] | [INFO] [stdout] 29 - print!("Clock tick{}: {}\n", clock, clock * x); [INFO] [stdout] 29 + println!("Clock tick{}: {}", clock, clock * x); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/10.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | return self.line == other.line; [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] 43 - return self.line == other.line; [INFO] [stdout] 43 + self.line == other.line [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/10.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | return matching == 0; [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] 59 - return matching == 0; [INFO] [stdout] 59 + matching == 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `Iterator::fold` on a type that implements `Try` [INFO] [stdout] --> src/bin/10.rs:69:23 [INFO] [stdout] | [INFO] [stdout] 69 | self.0.iter().fold(Ok(()), |result, line| { [INFO] [stdout] | _______________________^ [INFO] [stdout] 70 | | result.and_then(|_| writeln!(f, "{}", line)) [INFO] [stdout] 71 | | }) [INFO] [stdout] | |__________^ help: use `try_fold` instead: `try_fold((), |result, line| ...)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_try_fold [INFO] [stdout] = note: `#[warn(clippy::manual_try_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/bin/10.rs:82:28 [INFO] [stdout] | [INFO] [stdout] 82 | let mut lines: Lines = Lines { 0: Vec::new() }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use tuple initialization: `Lines(Vec::new())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] = note: `#[warn(clippy::init_numbered_fields)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/bin/10.rs:177:32 [INFO] [stdout] | [INFO] [stdout] 177 | let mut lines: Lines = Lines { 0: Vec::new() }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use tuple initialization: `Lines(Vec::new())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Eq::assert_receiver_is_total_eq` should never be implemented by hand [INFO] [stdout] --> src/bin/10.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | fn assert_receiver_is_total_eq(&self) {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this method was used to add checks to the `Eq` derive macro [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #152336 [INFO] [stdout] = note: `#[warn(internal_eq_trait_method_impls)]` (part of `#[warn(future_incompatible)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/03.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | return Some(accum); [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] 18 - return Some(accum); [INFO] [stdout] 18 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/03.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | if intersect.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!intersect.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` 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/bin/03.rs:14:37 [INFO] [stdout] | [INFO] [stdout] 14 | accum += item_value(&item); [INFO] [stdout] | ^^^^^ help: change this to: `item` [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/bin/03.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | return val - 96; [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] 24 ~ val - 96 [INFO] [stdout] 25 | } else { [INFO] [stdout] 26 | return val - 38; [INFO] [stdout] 27 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/03.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | return val - 38; [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] 26 ~ val - 38 [INFO] [stdout] 27 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/03.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | return Some(accum); [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 Some(accum); [INFO] [stdout] 46 + Some(accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `packs.get(0)` [INFO] [stdout] --> src/bin/03.rs:35:56 [INFO] [stdout] | [INFO] [stdout] 35 | let packs0: HashSet = HashSet::from_iter(packs.get(0)?.chars()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `packs.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/03.rs:38:41 [INFO] [stdout] | [INFO] [stdout] 38 | let mut common: HashSet = packs0.intersection(&packs1).map(|x| *x).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `packs0.intersection(&packs1).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/03.rs:39:18 [INFO] [stdout] | [INFO] [stdout] 39 | common = common.intersection(&packs2).map(|x| *x).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `common.intersection(&packs2).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/03.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 40 | if common.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!common.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/03.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | return Some(vecs); [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] 54 - return Some(vecs); [INFO] [stdout] 54 + Some(vecs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/03.rs:71:29 [INFO] [stdout] | [INFO] [stdout] 71 | assert_eq!(part_one(&str_input), Some(157)); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `str_input` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.99s [INFO] running `Command { std: "docker" "inspect" "53f6fb4ea2bc18b351251167ddfc44268d2a9e14923d908e7f9b2846296a780f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "53f6fb4ea2bc18b351251167ddfc44268d2a9e14923d908e7f9b2846296a780f", kill_on_drop: false }` [INFO] [stdout] 53f6fb4ea2bc18b351251167ddfc44268d2a9e14923d908e7f9b2846296a780f