[INFO] cloning repository https://github.com/nils-degroot/advent-of-code-2023 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nils-degroot/advent-of-code-2023" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnils-degroot%2Fadvent-of-code-2023", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnils-degroot%2Fadvent-of-code-2023'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0144cbb2910f5ede54d9a0c49e84cf24edabe53b [INFO] linting nils-degroot/advent-of-code-2023 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnils-degroot%2Fadvent-of-code-2023" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/nils-degroot/advent-of-code-2023 [INFO] finished tweaking git repo https://github.com/nils-degroot/advent-of-code-2023 [INFO] tweaked toml for git repo https://github.com/nils-degroot/advent-of-code-2023 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/nils-degroot/advent-of-code-2023 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/nils-degroot/advent-of-code-2023 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"` [INFO] [stderr] | [INFO] [stderr] = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest [INFO] [stderr] = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest [INFO] [stderr] = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 200682eaa523f47279fe9daea99dc26c0c5e7a53f733da3c0888914fcd570633 [INFO] running `Command { std: "docker" "start" "-a" "200682eaa523f47279fe9daea99dc26c0c5e7a53f733da3c0888914fcd570633", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "200682eaa523f47279fe9daea99dc26c0c5e7a53f733da3c0888914fcd570633", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "200682eaa523f47279fe9daea99dc26c0c5e7a53f733da3c0888914fcd570633", kill_on_drop: false }` [INFO] [stdout] 200682eaa523f47279fe9daea99dc26c0c5e7a53f733da3c0888914fcd570633 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 2feded6e003ecf2fbe2812515b3fdbfd5504286eb3cddb27663fff364a9338ed [INFO] running `Command { std: "docker" "start" "-a" "2feded6e003ecf2fbe2812515b3fdbfd5504286eb3cddb27663fff364a9338ed", kill_on_drop: false }` [INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"` [INFO] [stderr] | [INFO] [stderr] = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest [INFO] [stderr] = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest [INFO] [stderr] = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions [INFO] [stderr] Compiling num-traits v0.2.17 [INFO] [stderr] Compiling memoffset v0.9.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.16 [INFO] [stderr] Compiling crossbeam-epoch v0.9.15 [INFO] [stderr] Compiling num-bigint v0.4.4 [INFO] [stderr] Compiling num-rational v0.4.1 [INFO] [stderr] Compiling rayon-core v1.12.0 [INFO] [stderr] Compiling num-iter v0.1.43 [INFO] [stderr] Checking either v1.9.0 [INFO] [stderr] Checking itertools v0.12.0 [INFO] [stderr] Checking crossbeam-deque v0.8.3 [INFO] [stderr] Checking num-integer v0.1.45 [INFO] [stderr] Checking num-complex v0.4.4 [INFO] [stderr] Checking rayon v1.8.0 [INFO] [stderr] Checking num v0.4.1 [INFO] [stderr] Checking common v0.1.0 (/opt/rustwide/workdir/common) [INFO] [stderr] Checking day15 v0.1.0 (/opt/rustwide/workdir/day15) [INFO] [stderr] Checking day19 v0.1.0 (/opt/rustwide/workdir/day19) [INFO] [stderr] Checking day05 v0.1.0 (/opt/rustwide/workdir/day05) [INFO] [stderr] Checking day14 v0.1.0 (/opt/rustwide/workdir/day14) [INFO] [stderr] Checking day18 v0.1.0 (/opt/rustwide/workdir/day18) [INFO] [stderr] Checking day17 v0.1.0 (/opt/rustwide/workdir/day17) [INFO] [stderr] Checking day06 v0.1.0 (/opt/rustwide/workdir/day06) [INFO] [stderr] Checking day04 v0.1.0 (/opt/rustwide/workdir/day04) [INFO] [stderr] Checking day01 v0.1.0 (/opt/rustwide/workdir/day01) [INFO] [stderr] Checking day10 v0.1.0 (/opt/rustwide/workdir/day10) [INFO] [stderr] Checking day11 v0.1.0 (/opt/rustwide/workdir/day11) [INFO] [stderr] Checking day20 v0.1.0 (/opt/rustwide/workdir/day20) [INFO] [stderr] Checking day07 v0.1.0 (/opt/rustwide/workdir/day07) [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> day19/src/main.rs:168:28 [INFO] [stdout] | [INFO] [stdout] 168 | if !(part.value_of(char) > v) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(part.value_of(char) <= v)` [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] --> day19/src/main.rs:173:28 [INFO] [stdout] | [INFO] [stdout] 173 | if !(part.value_of(char) < v) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(part.value_of(char) >= v)` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> day19/src/main.rs:288:53 [INFO] [stdout] | [INFO] [stdout] 288 | Action::ToWorkflow(next) => valid_count(&next, instructions, constraints), [INFO] [stdout] | ^^^^^ help: change this to: `next` [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: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> day14/src/main.rs:128:39 [INFO] [stdout] | [INFO] [stdout] 128 | .map(|(i, row)| (i + 1) * row.into_iter().filter(|c| c == &&'O').count()) [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> day17/src/main.rs:102:38 [INFO] [stdout] | [INFO] [stdout] 102 | if new_cost < *costs.get(&new_key).unwrap_or(&i32::MAX) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `new_key` [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] [stderr] Checking day03 v0.1.0 (/opt/rustwide/workdir/day03) [INFO] [stderr] Checking day09 v0.1.0 (/opt/rustwide/workdir/day09) [INFO] [stderr] Checking day02 v0.1.0 (/opt/rustwide/workdir/day02) [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> day14/src/main.rs:128:39 [INFO] [stdout] | [INFO] [stdout] 128 | .map(|(i, row)| (i + 1) * row.into_iter().filter(|c| c == &&'O').count()) [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `print` [INFO] [stdout] --> day03/src/main.rs:1:34 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{collections::VecDeque, print}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> day04/src/main.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | cards as i32 [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `cards` [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: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> day02/src/main.rs:23:40 [INFO] [stdout] | [INFO] [stdout] 23 | let mut parts = it.trim().split_whitespace(); [INFO] [stdout] | ^^^^^^^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] = note: `#[warn(clippy::trim_split_whitespace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> day02/src/main.rs:49:39 [INFO] [stdout] | [INFO] [stdout] 49 | let sets = line.split(':').skip(1).next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> day02/src/main.rs:53:40 [INFO] [stdout] | [INFO] [stdout] 53 | let mut parts = it.trim().split_whitespace(); [INFO] [stdout] | ^^^^^^^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> day03/src/main.rs:26:16 [INFO] [stdout] | [INFO] [stdout] 26 | if char.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `char.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> day03/src/main.rs:68:16 [INFO] [stdout] | [INFO] [stdout] 68 | if char.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `char.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking day08 v0.1.0 (/opt/rustwide/workdir/day08) [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 34 | let up = (x.checked_sub(1).unwrap_or(0), y); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `x.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] = note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:51:24 [INFO] [stdout] | [INFO] [stdout] 51 | let left = (x, y.checked_sub(1).unwrap_or(0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `y.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:87:15 [INFO] [stdout] | [INFO] [stdout] 87 | let up = (start_x.checked_sub(1).unwrap_or(0), start_y); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `start_x.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:89:26 [INFO] [stdout] | [INFO] [stdout] 89 | let left = (start_x, start_y.checked_sub(1).unwrap_or(0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `start_y.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:124:19 [INFO] [stdout] | [INFO] [stdout] 124 | let up = (x.checked_sub(1).unwrap_or(0), y); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `x.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:143:24 [INFO] [stdout] | [INFO] [stdout] 143 | let left = (x, y.checked_sub(1).unwrap_or(0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `y.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `map_normalized` [INFO] [stdout] --> day10/src/main.rs:198:14 [INFO] [stdout] | [INFO] [stdout] 198 | for x in 1..(height - 1) { [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] 198 - for x in 1..(height - 1) { [INFO] [stdout] 198 + for in map_normalized.iter().take((height - 1)).skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking day12 v0.1.0 (/opt/rustwide/workdir/day12) [INFO] [stderr] Checking day13 v0.1.0 (/opt/rustwide/workdir/day13) [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> day20/src/main.rs:174:25 [INFO] [stdout] | [INFO] [stdout] 174 | / if !i.contains_key(&source) { [INFO] [stdout] 175 | | i.insert(source, button_press); [INFO] [stdout] 176 | | } [INFO] [stdout] | |_________________________^ help: try: `i.entry(source).or_insert(button_press);` [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] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `wat` [INFO] [stdout] --> day07/src/main.rs:139:13 [INFO] [stdout] | [INFO] [stdout] 139 | let wat = highest_count(input); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_wat` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking day16 v0.1.0 (/opt/rustwide/workdir/day16) [INFO] [stdout] warning: this OR pattern can be rewritten using a range [INFO] [stdout] --> day07/src/main.rs:163:13 [INFO] [stdout] | [INFO] [stdout] 163 | 5 | 4 | 3 | 2 => true, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `2..=5` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_patterns [INFO] [stdout] = note: `#[warn(clippy::manual_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> day08/src/main.rs:90:17 [INFO] [stdout] | [INFO] [stdout] 90 | .reduce(|lhs, rhs| lcm(lhs, rhs)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `lcm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> day19/src/main.rs:168:28 [INFO] [stdout] | [INFO] [stdout] 168 | if !(part.value_of(char) > v) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(part.value_of(char) <= v)` [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] --> day19/src/main.rs:173:28 [INFO] [stdout] | [INFO] [stdout] 173 | if !(part.value_of(char) < v) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(part.value_of(char) >= v)` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> day19/src/main.rs:288:53 [INFO] [stdout] | [INFO] [stdout] 288 | Action::ToWorkflow(next) => valid_count(&next, instructions, constraints), [INFO] [stdout] | ^^^^^ help: change this to: `next` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> day08/src/main.rs:90:17 [INFO] [stdout] | [INFO] [stdout] 90 | .reduce(|lhs, rhs| lcm(lhs, rhs)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `lcm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `VecDeque` [INFO] [stdout] --> day16/src/main.rs:1:33 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::{HashSet, VecDeque}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> day02/src/main.rs:23:40 [INFO] [stdout] | [INFO] [stdout] 23 | let mut parts = it.trim().split_whitespace(); [INFO] [stdout] | ^^^^^^^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] = note: `#[warn(clippy::trim_split_whitespace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `print` [INFO] [stdout] --> day03/src/main.rs:1:34 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{collections::VecDeque, print}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> day02/src/main.rs:49:39 [INFO] [stdout] | [INFO] [stdout] 49 | let sets = line.split(':').skip(1).next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> day02/src/main.rs:53:40 [INFO] [stdout] | [INFO] [stdout] 53 | let mut parts = it.trim().split_whitespace(); [INFO] [stdout] | ^^^^^^^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `VecDeque` [INFO] [stdout] --> day16/src/main.rs:1:33 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::{HashSet, VecDeque}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> day12/src/main.rs:29:36 [INFO] [stdout] | [INFO] [stdout] 29 | || line.chars().skip(dropped).next().unwrap_or('.') == '#' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(dropped)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> day12/src/main.rs:90:36 [INFO] [stdout] | [INFO] [stdout] 90 | || line.chars().skip(dropped).next().unwrap_or('.') == '#' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(dropped)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> day12/src/main.rs:125:24 [INFO] [stdout] | [INFO] [stdout] 125 | let line = vec![line, line, line, line, line].join("?"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[line, line, line, line, line]` [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] --> day12/src/main.rs:128:27 [INFO] [stdout] | [INFO] [stdout] 128 | let numbers = vec![numbers, numbers, numbers, numbers, numbers].join(","); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[numbers, numbers, numbers, numbers, numbers]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> day04/src/main.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | cards as i32 [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `cards` [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: called `skip(..).next()` on an iterator [INFO] [stdout] --> day12/src/main.rs:29:36 [INFO] [stdout] | [INFO] [stdout] 29 | || line.chars().skip(dropped).next().unwrap_or('.') == '#' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(dropped)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> day12/src/main.rs:90:36 [INFO] [stdout] | [INFO] [stdout] 90 | || line.chars().skip(dropped).next().unwrap_or('.') == '#' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(dropped)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> day12/src/main.rs:125:24 [INFO] [stdout] | [INFO] [stdout] 125 | let line = vec![line, line, line, line, line].join("?"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[line, line, line, line, line]` [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] --> day12/src/main.rs:128:27 [INFO] [stdout] | [INFO] [stdout] 128 | let numbers = vec![numbers, numbers, numbers, numbers, numbers].join(","); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[numbers, numbers, numbers, numbers, numbers]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> day20/src/main.rs:174:25 [INFO] [stdout] | [INFO] [stdout] 174 | / if !i.contains_key(&source) { [INFO] [stdout] 175 | | i.insert(source, button_press); [INFO] [stdout] 176 | | } [INFO] [stdout] | |_________________________^ help: try: `i.entry(source).or_insert(button_press);` [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] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 34 | let up = (x.checked_sub(1).unwrap_or(0), y); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `x.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] = note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:51:24 [INFO] [stdout] | [INFO] [stdout] 51 | let left = (x, y.checked_sub(1).unwrap_or(0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `y.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `wat` [INFO] [stdout] --> day07/src/main.rs:139:13 [INFO] [stdout] | [INFO] [stdout] 139 | let wat = highest_count(input); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_wat` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part1` is never used [INFO] [stdout] --> day17/src/main.rs:22:4 [INFO] [stdout] | [INFO] [stdout] 22 | fn part1(input: &str) -> i32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:87:15 [INFO] [stdout] | [INFO] [stdout] 87 | let up = (start_x.checked_sub(1).unwrap_or(0), start_y); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `start_x.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:89:26 [INFO] [stdout] | [INFO] [stdout] 89 | let left = (start_x, start_y.checked_sub(1).unwrap_or(0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `start_y.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:124:19 [INFO] [stdout] | [INFO] [stdout] 124 | let up = (x.checked_sub(1).unwrap_or(0), y); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `x.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual saturating arithmetic [INFO] [stdout] --> day10/src/main.rs:143:24 [INFO] [stdout] | [INFO] [stdout] 143 | let left = (x, y.checked_sub(1).unwrap_or(0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `y.saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `map_normalized` [INFO] [stdout] --> day10/src/main.rs:198:14 [INFO] [stdout] | [INFO] [stdout] 198 | for x in 1..(height - 1) { [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] 198 - for x in 1..(height - 1) { [INFO] [stdout] 198 + for in map_normalized.iter().take((height - 1)).skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> day17/src/main.rs:102:38 [INFO] [stdout] | [INFO] [stdout] 102 | if new_cost < *costs.get(&new_key).unwrap_or(&i32::MAX) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `new_key` [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: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> day03/src/main.rs:26:16 [INFO] [stdout] | [INFO] [stdout] 26 | if char.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `char.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this OR pattern can be rewritten using a range [INFO] [stdout] --> day07/src/main.rs:163:13 [INFO] [stdout] | [INFO] [stdout] 163 | 5 | 4 | 3 | 2 => true, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `2..=5` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_patterns [INFO] [stdout] = note: `#[warn(clippy::manual_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> day03/src/main.rs:68:16 [INFO] [stdout] | [INFO] [stdout] 68 | if char.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `char.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.44s [INFO] running `Command { std: "docker" "inspect" "2feded6e003ecf2fbe2812515b3fdbfd5504286eb3cddb27663fff364a9338ed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2feded6e003ecf2fbe2812515b3fdbfd5504286eb3cddb27663fff364a9338ed", kill_on_drop: false }` [INFO] [stdout] 2feded6e003ecf2fbe2812515b3fdbfd5504286eb3cddb27663fff364a9338ed