[INFO] cloning repository https://github.com/danpaz/adventofcode2021 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/danpaz/adventofcode2021" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdanpaz%2Fadventofcode2021", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdanpaz%2Fadventofcode2021'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b9873a51ba779f61eb22252380409efbdf700610 [INFO] linting danpaz/adventofcode2021 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdanpaz%2Fadventofcode2021" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/danpaz/adventofcode2021 [INFO] finished tweaking git repo https://github.com/danpaz/adventofcode2021 [INFO] tweaked toml for git repo https://github.com/danpaz/adventofcode2021 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/danpaz/adventofcode2021 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/danpaz/adventofcode2021 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 91ec7ceb16829fb84d582d6680e98e0c094a1eb0922a7c83ab506673281b3ecb [INFO] running `Command { std: "docker" "start" "-a" "91ec7ceb16829fb84d582d6680e98e0c094a1eb0922a7c83ab506673281b3ecb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "91ec7ceb16829fb84d582d6680e98e0c094a1eb0922a7c83ab506673281b3ecb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "91ec7ceb16829fb84d582d6680e98e0c094a1eb0922a7c83ab506673281b3ecb", kill_on_drop: false }` [INFO] [stdout] 91ec7ceb16829fb84d582d6680e98e0c094a1eb0922a7c83ab506673281b3ecb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c39398c414fc384bae8621fc4e5aec86365ceab757b2d9a8b3ed34e9973f1371 [INFO] running `Command { std: "docker" "start" "-a" "c39398c414fc384bae8621fc4e5aec86365ceab757b2d9a8b3ed34e9973f1371", kill_on_drop: false }` [INFO] [stderr] Checking adventofcode2021 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/day1.rs:39:32 [INFO] [stdout] | [INFO] [stdout] 39 | windowsum += input[(j as usize)]; [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] 39 - windowsum += input[(j as usize)]; [INFO] [stdout] 39 + windowsum += input[j as usize ]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day12.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 130 | visited_small: visited_small, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `visited_small` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day12.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | visited_small: visited_small, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `visited_small` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day9.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | Map { cells: cells } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `cells` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/day1.rs:39:32 [INFO] [stdout] | [INFO] [stdout] 39 | windowsum += input[(j as usize)]; [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] 39 - windowsum += input[(j as usize)]; [INFO] [stdout] 39 + windowsum += input[j as usize ]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day12.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 130 | visited_small: visited_small, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `visited_small` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day12.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | visited_small: visited_small, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `visited_small` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/day9.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | Map { cells: cells } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `cells` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/day11.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 67 | let mut o = &mut map[r][c]; [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: variable does not need to be mutable [INFO] [stdout] --> src/day11.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 67 | let mut o = &mut map[r][c]; [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: usage of a legacy numeric constant [INFO] [stdout] --> src/day1.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | let mut prev = std::u32::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 9 - let mut prev = std::u32::MAX; [INFO] [stdout] 9 + let mut prev = u32::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/day1.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | if (i as usize + window_size) > input_len { [INFO] [stdout] | ^^^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/day1.rs:39:32 [INFO] [stdout] | [INFO] [stdout] 39 | windowsum += input[(j as usize)]; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `j` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day10.rs:27:35 [INFO] [stdout] | [INFO] [stdout] 27 | sum += scores.get(&char).unwrap(); [INFO] [stdout] | ^^^^^ help: change this to: `char` [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: manual implementation of an assign operation [INFO] [stdout] --> src/day10.rs:65:13 [INFO] [stdout] | [INFO] [stdout] 65 | score = score * 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `score *= 5` [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: casting integer literal to `f32` is unnecessary [INFO] [stdout] --> src/day10.rs:72:35 [INFO] [stdout] | [INFO] [stdout] 72 | scores[(scores.len() as f32 / 2 as f32).floor() as usize] [INFO] [stdout] | ^^^^^^^^ help: try: `2_f32` [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: usage of a legacy numeric constant [INFO] [stdout] --> src/day1.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | let mut prev = std::u32::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 9 - let mut prev = std::u32::MAX; [INFO] [stdout] 9 + let mut prev = u32::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/day1.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | if (i as usize + window_size) > input_len { [INFO] [stdout] | ^^^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/day1.rs:39:32 [INFO] [stdout] | [INFO] [stdout] 39 | windowsum += input[(j as usize)]; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `j` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day10.rs:27:35 [INFO] [stdout] | [INFO] [stdout] 27 | sum += scores.get(&char).unwrap(); [INFO] [stdout] | ^^^^^ help: change this to: `char` [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 `idx` is used to index `counts` [INFO] [stdout] --> src/day3.rs:10:20 [INFO] [stdout] | [INFO] [stdout] 10 | for idx in 0..reading_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] 10 - for idx in 0..reading_len { [INFO] [stdout] 10 + for (idx, ) in counts.iter_mut().enumerate().take(reading_len) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/day3.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | if (&readings.len() % 2) == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(&readings.len()).is_multiple_of(2)` [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: manual implementation of an assign operation [INFO] [stdout] --> src/day10.rs:65:13 [INFO] [stdout] | [INFO] [stdout] 65 | score = score * 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `score *= 5` [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: casting integer literal to `f32` is unnecessary [INFO] [stdout] --> src/day10.rs:72:35 [INFO] [stdout] | [INFO] [stdout] 72 | scores[(scores.len() as f32 / 2 as f32).floor() as usize] [INFO] [stdout] | ^^^^^^^^ help: try: `2_f32` [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: function call inside of `expect` [INFO] [stdout] --> src/day4.rs:60:43 [INFO] [stdout] | [INFO] [stdout] 60 | num: n.parse::().expect( [INFO] [stdout] | ___________________________________________^ [INFO] [stdout] 61 | | format!("could not parse string to num on line {}", i + j).as_str(), [INFO] [stdout] 62 | | ), [INFO] [stdout] | |_____________________^ help: try: `unwrap_or_else(|_| panic!("could not parse string to num on line {}", i + j))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `n` is only used to index `boards` [INFO] [stdout] --> src/day4.rs:81:18 [INFO] [stdout] | [INFO] [stdout] 81 | for n in 0..boards.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] 81 - for n in 0..boards.len() { [INFO] [stdout] 81 + for in &mut boards { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `n` is only used to index `boards` [INFO] [stdout] --> src/day4.rs:110:18 [INFO] [stdout] | [INFO] [stdout] 110 | for n in 0..boards.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] 110 - for n in 0..boards.len() { [INFO] [stdout] 110 + for in &mut boards { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `idx` is used to index `counts` [INFO] [stdout] --> src/day3.rs:10:20 [INFO] [stdout] | [INFO] [stdout] 10 | for idx in 0..reading_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] 10 - for idx in 0..reading_len { [INFO] [stdout] 10 + for (idx, ) in counts.iter_mut().enumerate().take(reading_len) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/day3.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | if (&readings.len() % 2) == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(&readings.len()).is_multiple_of(2)` [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: this boolean expression can be simplified [INFO] [stdout] --> src/day5.rs:47:24 [INFO] [stdout] | [INFO] [stdout] 47 | .filter(|line| line.is_straight() || !(filter_diagonals && !line.is_straight())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `line.is_straight() || !filter_diagonals || line.is_straight()` [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: this boolean expression can be simplified [INFO] [stdout] --> src/day5.rs:47:46 [INFO] [stdout] | [INFO] [stdout] 47 | .filter(|line| line.is_straight() || !(filter_diagonals && !line.is_straight())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!filter_diagonals || line.is_straight()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day5.rs:149:29 [INFO] [stdout] | [INFO] [stdout] 149 | .filter(|&line| line.is_straight() || !(filter_diagonals && !line.is_straight())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `line.is_straight() || !filter_diagonals || line.is_straight()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day5.rs:149:51 [INFO] [stdout] | [INFO] [stdout] 149 | .filter(|&line| line.is_straight() || !(filter_diagonals && !line.is_straight())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!filter_diagonals || line.is_straight()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day5.rs:156:29 [INFO] [stdout] | [INFO] [stdout] 156 | .filter(|&line| line.is_straight() || !(filter_diagonals && !line.is_straight())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `line.is_straight() || !filter_diagonals || line.is_straight()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day5.rs:156:51 [INFO] [stdout] | [INFO] [stdout] 156 | .filter(|&line| line.is_straight() || !(filter_diagonals && !line.is_straight())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!filter_diagonals || line.is_straight()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/day4.rs:60:43 [INFO] [stdout] | [INFO] [stdout] 60 | num: n.parse::().expect( [INFO] [stdout] | ___________________________________________^ [INFO] [stdout] 61 | | format!("could not parse string to num on line {}", i + j).as_str(), [INFO] [stdout] 62 | | ), [INFO] [stdout] | |_____________________^ help: try: `unwrap_or_else(|_| panic!("could not parse string to num on line {}", i + j))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `n` is only used to index `boards` [INFO] [stdout] --> src/day4.rs:81:18 [INFO] [stdout] | [INFO] [stdout] 81 | for n in 0..boards.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] 81 - for n in 0..boards.len() { [INFO] [stdout] 81 + for in &mut boards { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `n` is only used to index `boards` [INFO] [stdout] --> src/day4.rs:110:18 [INFO] [stdout] | [INFO] [stdout] 110 | for n in 0..boards.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] 110 - for n in 0..boards.len() { [INFO] [stdout] 110 + for in &mut boards { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day5.rs:47:24 [INFO] [stdout] | [INFO] [stdout] 47 | .filter(|line| line.is_straight() || !(filter_diagonals && !line.is_straight())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `line.is_straight() || !filter_diagonals || line.is_straight()` [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: this boolean expression can be simplified [INFO] [stdout] --> src/day5.rs:47:46 [INFO] [stdout] | [INFO] [stdout] 47 | .filter(|line| line.is_straight() || !(filter_diagonals && !line.is_straight())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!filter_diagonals || line.is_straight()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/day8.rs:61:33 [INFO] [stdout] | [INFO] [stdout] 61 | fn non_overlapping_char(subset: &String, superset: &String) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 61 - fn non_overlapping_char(subset: &String, superset: &String) -> Option { [INFO] [stdout] 61 + fn non_overlapping_char(subset: &str, superset: &String) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/day8.rs:61:52 [INFO] [stdout] | [INFO] [stdout] 61 | fn non_overlapping_char(subset: &String, superset: &String) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 61 - fn non_overlapping_char(subset: &String, superset: &String) -> Option { [INFO] [stdout] 61 + fn non_overlapping_char(subset: &String, superset: &str) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/day8.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | / for char in superset.chars() { [INFO] [stdout] 63 | | if !subset.contains(char) { [INFO] [stdout] 64 | | return Some(char); [INFO] [stdout] ... | [INFO] [stdout] 67 | | None [INFO] [stdout] | |________^ help: replace with an iterator: `superset.chars().find(|&char| !subset.contains(char))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/day8.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | display.patterns.sort_by(|a, b| a.len().cmp(&b.len())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 72 - display.patterns.sort_by(|a, b| a.len().cmp(&b.len())); [INFO] [stdout] 72 + display.patterns.sort_by_key(|a| a.len()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day8.rs:132:41 [INFO] [stdout] | [INFO] [stdout] 132 | && non_overlapping_char(&output, &candidate).is_none() [INFO] [stdout] | ^^^^^^^ help: change this to: `output` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day8.rs:132:50 [INFO] [stdout] | [INFO] [stdout] 132 | && non_overlapping_char(&output, &candidate).is_none() [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `candidate` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day9.rs:10:21 [INFO] [stdout] | [INFO] [stdout] 10 | / return Cell { [INFO] [stdout] 11 | | value: x.to_digit(10).unwrap(), [INFO] [stdout] 12 | | is_basin: false, [INFO] [stdout] 13 | | }; [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 10 ~ Cell { [INFO] [stdout] 11 + value: x.to_digit(10).unwrap(), [INFO] [stdout] 12 + is_basin: false, [INFO] [stdout] 13 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day9.rs:30:22 [INFO] [stdout] | [INFO] [stdout] 30 | fn is_low_point(map: &Vec>, i: usize, j: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 30 - fn is_low_point(map: &Vec>, i: usize, j: usize) -> bool { [INFO] [stdout] 30 + fn is_low_point(map: &[Vec], i: usize, j: usize) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/day8.rs:61:33 [INFO] [stdout] | [INFO] [stdout] 61 | fn non_overlapping_char(subset: &String, superset: &String) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 61 - fn non_overlapping_char(subset: &String, superset: &String) -> Option { [INFO] [stdout] 61 + fn non_overlapping_char(subset: &str, superset: &String) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/day8.rs:61:52 [INFO] [stdout] | [INFO] [stdout] 61 | fn non_overlapping_char(subset: &String, superset: &String) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 61 - fn non_overlapping_char(subset: &String, superset: &String) -> Option { [INFO] [stdout] 61 + fn non_overlapping_char(subset: &String, superset: &str) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/day8.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | / for char in superset.chars() { [INFO] [stdout] 63 | | if !subset.contains(char) { [INFO] [stdout] 64 | | return Some(char); [INFO] [stdout] ... | [INFO] [stdout] 67 | | None [INFO] [stdout] | |________^ help: replace with an iterator: `superset.chars().find(|&char| !subset.contains(char))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/day8.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | display.patterns.sort_by(|a, b| a.len().cmp(&b.len())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 72 - display.patterns.sort_by(|a, b| a.len().cmp(&b.len())); [INFO] [stdout] 72 + display.patterns.sort_by_key(|a| a.len()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day8.rs:132:41 [INFO] [stdout] | [INFO] [stdout] 132 | && non_overlapping_char(&output, &candidate).is_none() [INFO] [stdout] | ^^^^^^^ help: change this to: `output` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day8.rs:132:50 [INFO] [stdout] | [INFO] [stdout] 132 | && non_overlapping_char(&output, &candidate).is_none() [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `candidate` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day9.rs:10:21 [INFO] [stdout] | [INFO] [stdout] 10 | / return Cell { [INFO] [stdout] 11 | | value: x.to_digit(10).unwrap(), [INFO] [stdout] 12 | | is_basin: false, [INFO] [stdout] 13 | | }; [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 10 ~ Cell { [INFO] [stdout] 11 + value: x.to_digit(10).unwrap(), [INFO] [stdout] 12 + is_basin: false, [INFO] [stdout] 13 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day9.rs:30:22 [INFO] [stdout] | [INFO] [stdout] 30 | fn is_low_point(map: &Vec>, i: usize, j: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 30 - fn is_low_point(map: &Vec>, i: usize, j: usize) -> bool { [INFO] [stdout] 30 + fn is_low_point(map: &[Vec], i: usize, j: usize) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/day8.rs:49:33 [INFO] [stdout] | [INFO] [stdout] 49 | let unique_segment_counts = vec![2, 3, 4, 7]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: you can use an array directly: `[2, 3, 4, 7]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/day8.rs:49:33 [INFO] [stdout] | [INFO] [stdout] 49 | let unique_segment_counts = vec![2, 3, 4, 7]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: you can use an array directly: `[2, 3, 4, 7]` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.42s [INFO] running `Command { std: "docker" "inspect" "c39398c414fc384bae8621fc4e5aec86365ceab757b2d9a8b3ed34e9973f1371", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c39398c414fc384bae8621fc4e5aec86365ceab757b2d9a8b3ed34e9973f1371", kill_on_drop: false }` [INFO] [stdout] c39398c414fc384bae8621fc4e5aec86365ceab757b2d9a8b3ed34e9973f1371