[INFO] cloning repository https://github.com/AkalUstat/advent-of-code-2025 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AkalUstat/advent-of-code-2025" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAkalUstat%2Fadvent-of-code-2025", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAkalUstat%2Fadvent-of-code-2025'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9ce28549978eef69e842e174a20723f55c3311d0 [INFO] linting AkalUstat/advent-of-code-2025 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAkalUstat%2Fadvent-of-code-2025" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/AkalUstat/advent-of-code-2025 [INFO] finished tweaking git repo https://github.com/AkalUstat/advent-of-code-2025 [INFO] tweaked toml for git repo https://github.com/AkalUstat/advent-of-code-2025 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/AkalUstat/advent-of-code-2025 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/AkalUstat/advent-of-code-2025 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 coin_cbc v0.1.8 [INFO] [stderr] Downloaded good_lp v1.14.2 [INFO] [stderr] Downloaded coin_cbc_sys v0.1.2 [INFO] [stderr] Downloaded z3 v0.12.1 [INFO] [stderr] Downloaded bindgen v0.66.1 [INFO] [stderr] Downloaded z3-sys v0.8.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 016dc8f39c0690edc69d447961b5ec247a4aaf9252adcd0e27b08cfbe1e4183e [INFO] running `Command { std: "docker" "start" "-a" "016dc8f39c0690edc69d447961b5ec247a4aaf9252adcd0e27b08cfbe1e4183e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "016dc8f39c0690edc69d447961b5ec247a4aaf9252adcd0e27b08cfbe1e4183e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "016dc8f39c0690edc69d447961b5ec247a4aaf9252adcd0e27b08cfbe1e4183e", kill_on_drop: false }` [INFO] [stdout] 016dc8f39c0690edc69d447961b5ec247a4aaf9252adcd0e27b08cfbe1e4183e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] ebd05a5138e76ac8ebcf4b87e17b7d5a683e08f37f591ca612fa20b6593bd15c [INFO] running `Command { std: "docker" "start" "-a" "ebd05a5138e76ac8ebcf4b87e17b7d5a683e08f37f591ca612fa20b6593bd15c", kill_on_drop: false }` [INFO] [stderr] Compiling glob v0.3.3 [INFO] [stderr] Compiling proc-macro2 v1.0.103 [INFO] [stderr] Compiling unicode-ident v1.0.22 [INFO] [stderr] Compiling libc v0.2.178 [INFO] [stderr] Compiling quote v1.0.42 [INFO] [stderr] Compiling memchr v2.7.6 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling regex-syntax v0.8.8 [INFO] [stderr] Compiling libloading v0.8.9 [INFO] [stderr] Compiling bindgen v0.66.1 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling lazycell v1.3.0 [INFO] [stderr] Compiling peeking_take_while v0.1.2 [INFO] [stderr] Compiling coin_cbc_sys v0.1.2 [INFO] [stderr] Checking hashbrown v0.16.1 [INFO] [stderr] Compiling clang-sys v1.8.1 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Checking coin_cbc v0.1.8 [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Compiling syn v2.0.111 [INFO] [stderr] Checking fixedbitset v0.4.2 [INFO] [stderr] Checking indexmap v2.12.1 [INFO] [stderr] Checking good_lp v1.14.2 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking petgraph v0.6.5 [INFO] [stderr] Compiling cexpr v0.6.0 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling z3-sys v0.8.1 [INFO] [stderr] Checking z3 v0.12.1 [INFO] [stderr] Checking aoc2025 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/lib.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | let reader = BufReader::new(file); [INFO] [stdout] | ---------------------------------- unnecessary `let` binding [INFO] [stdout] 7 | reader [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] 6 ~ [INFO] [stdout] 7 ~ BufReader::new(file) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/lib.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | .filter(|s| s != &"") [INFO] [stdout] | ^^^^^--- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/lib.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | let reader = BufReader::new(file); [INFO] [stdout] | ---------------------------------- unnecessary `let` binding [INFO] [stdout] 7 | reader [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] 6 ~ [INFO] [stdout] 7 ~ BufReader::new(file) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/lib.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | .filter(|s| s != &"") [INFO] [stdout] | ^^^^^--- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/day4.rs:26:24 [INFO] [stdout] | [INFO] [stdout] 26 | if !(new_pos.0 < 0 || new_pos.0 as usize > col_len - 1) [INFO] [stdout] | ________________________^ [INFO] [stdout] 27 | | && !(new_pos.1 < 0 || new_pos.1 as usize > row_len - 1) [INFO] [stdout] | |_______________________________________________________________________________^ help: try: `!(new_pos.0 < 0 || new_pos.0 as usize > col_len - 1 || new_pos.1 < 0 || new_pos.1 as usize > row_len - 1)` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day4.rs:3:37 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn get_removeable_rolls(matrix: &Vec>) -> Vec<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 3 - pub fn get_removeable_rolls(matrix: &Vec>) -> Vec<(usize, usize)> { [INFO] [stdout] 3 + pub fn get_removeable_rolls(matrix: &[Vec]) -> Vec<(usize, usize)> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day4.rs:26:21 [INFO] [stdout] | [INFO] [stdout] 26 | / if !(new_pos.0 < 0 || new_pos.0 as usize > col_len - 1) [INFO] [stdout] 27 | | && !(new_pos.1 < 0 || new_pos.1 as usize > row_len - 1) [INFO] [stdout] 28 | | { [INFO] [stdout] 29 | | if matrix[new_pos.0 as usize][new_pos.1 as usize] == '@' { [INFO] [stdout] ... | [INFO] [stdout] 32 | | } [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] 27 ~ && !(new_pos.1 < 0 || new_pos.1 as usize > row_len - 1) [INFO] [stdout] 28 ~ && matrix[new_pos.0 as usize][new_pos.1 as usize] == '@' { [INFO] [stdout] 29 | num_roll_neighbors += 1; [INFO] [stdout] 30 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/day4.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | return get_removeable_rolls(&matrix).len(); [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] 48 - return get_removeable_rolls(&matrix).len(); [INFO] [stdout] 48 + get_removeable_rolls(&matrix).len() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day4.rs:45:19 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn pt1(lines: &Vec) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - pub fn pt1(lines: &Vec) -> usize { [INFO] [stdout] 45 + pub fn pt1(lines: &[String]) -> usize { [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/bin/day4.rs:51:19 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn pt2(lines: &Vec) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 51 - pub fn pt2(lines: &Vec) -> usize { [INFO] [stdout] 51 + pub fn pt2(lines: &[String]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/day4.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | while removeable_rolls.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!removeable_rolls.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: comparison to empty slice [INFO] [stdout] --> src/bin/day5.rs:41:26 [INFO] [stdout] | [INFO] [stdout] 41 | .position(|elem| elem == "") [INFO] [stdout] | ^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `elem.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: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day3.rs:3:35 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn find_largest_joltage(line: &String, num_digits: usize) -> u64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 3 - pub fn find_largest_joltage(line: &String, num_digits: usize) -> u64 { [INFO] [stdout] 3 + pub fn find_largest_joltage(line: &str, num_digits: usize) -> u64 { [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/bin/day3.rs:49:29 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn iterate_lines(lines: &Vec, num_digits: usize) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 49 - pub fn iterate_lines(lines: &Vec, num_digits: usize) -> u64 { [INFO] [stdout] 49 + pub fn iterate_lines(lines: &[String], num_digits: usize) -> u64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `joltages` is never read [INFO] [stdout] --> src/bin/day10.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 10 | struct Line { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] ... [INFO] [stdout] 13 | joltages: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Line` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/day1.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | let mut lines_iter = reader.lines().map(|l| l.unwrap()); [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/bin/day1.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | let mut lines_iter = reader.lines().map(|l| l.unwrap()); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/bin/day1.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | let dir = line_val.chars().nth(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `line_val.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `values` [INFO] [stdout] --> src/bin/day6.rs:164:22 [INFO] [stdout] | [INFO] [stdout] 164 | for j in 0..num_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] 164 - for j in 0..num_rows { [INFO] [stdout] 164 + for in values.iter().take(num_rows) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/day4-idiomatic.rs:58:24 [INFO] [stdout] | [INFO] [stdout] 58 | if !(new_row < 0 || new_row as usize > col_len - 1) [INFO] [stdout] | ________________________^ [INFO] [stdout] 59 | | && !(new_col < 0 || new_col as usize > row_len - 1) [INFO] [stdout] | |___________________________________________________________________________^ help: try: `!(new_row < 0 || new_row as usize > col_len - 1 || new_col < 0 || new_col as usize > row_len - 1)` [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 `if` statement can be collapsed [INFO] [stdout] --> src/bin/day4-idiomatic.rs:58:21 [INFO] [stdout] | [INFO] [stdout] 58 | / if !(new_row < 0 || new_row as usize > col_len - 1) [INFO] [stdout] 59 | | && !(new_col < 0 || new_col as usize > row_len - 1) [INFO] [stdout] 60 | | { [INFO] [stdout] 61 | | if matrix[new_row as usize][new_col as usize] == '@' { [INFO] [stdout] ... | [INFO] [stdout] 64 | | } [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] 59 ~ && !(new_col < 0 || new_col as usize > row_len - 1) [INFO] [stdout] 60 ~ && matrix[new_row as usize][new_col as usize] == '@' { [INFO] [stdout] 61 | num_roll_neighbors += 1; [INFO] [stdout] 62 ~ } [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/bin/day3-idiomatic.rs:6:35 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn find_largest_joltage(line: &String, num_digits: usize) -> u64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 6 - pub fn find_largest_joltage(line: &String, num_digits: usize) -> u64 { [INFO] [stdout] 6 + pub fn find_largest_joltage(line: &str, num_digits: usize) -> u64 { [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/bin/day3-idiomatic.rs:35:29 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn iterate_lines(lines: &Vec, num_digits: usize) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 35 - pub fn iterate_lines(lines: &Vec, num_digits: usize) -> u64 { [INFO] [stdout] 35 + pub fn iterate_lines(lines: &[String], num_digits: usize) -> u64 { [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/bin/day7.rs:10:23 [INFO] [stdout] | [INFO] [stdout] 10 | fn pt1_travel(matrix: &Vec>, beam: &(usize, usize)) -> (usize, usize, Cases) { [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] 10 - fn pt1_travel(matrix: &Vec>, beam: &(usize, usize)) -> (usize, usize, Cases) { [INFO] [stdout] 10 + fn pt1_travel(matrix: &[Vec], beam: &(usize, usize)) -> (usize, usize, Cases) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, usize)` which implements the `Copy` trait [INFO] [stdout] --> src/bin/day7.rs:11:24 [INFO] [stdout] | [INFO] [stdout] 11 | let mut position = beam.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*beam` [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: length comparison to zero [INFO] [stdout] --> src/bin/day7.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | while traveling_beams.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!traveling_beams.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: length comparison to zero [INFO] [stdout] --> src/bin/day7.rs:120:11 [INFO] [stdout] | [INFO] [stdout] 120 | while traveling_beams.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!traveling_beams.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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/bin/day7.rs:133:38 [INFO] [stdout] | [INFO] [stdout] 133 | let parent_val = beams [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 134 | | .get(beam) [INFO] [stdout] 135 | | .unwrap() [INFO] [stdout] 136 | | .clone(); [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 133 ~ let parent_val = *beams [INFO] [stdout] 134 + .get(beam) [INFO] [stdout] 135 ~ .unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `invalidIDs` should have a snake case name [INFO] [stdout] --> src/bin/day2.rs:5:13 [INFO] [stdout] | [INFO] [stdout] 5 | let mut invalidIDs: Vec = vec![]; [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `invalid_ids` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/day1.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | let mut lines_iter = reader.lines().map(|l| l.unwrap()); [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/bin/day1.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | let mut lines_iter = reader.lines().map(|l| l.unwrap()); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/bin/day1.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | let dir = line_val.chars().nth(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `line_val.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashSet` [INFO] [stdout] --> src/bin/day9.rs:2:33 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::{HashMap, 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: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day3.rs:3:35 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn find_largest_joltage(line: &String, num_digits: usize) -> u64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 3 - pub fn find_largest_joltage(line: &String, num_digits: usize) -> u64 { [INFO] [stdout] 3 + pub fn find_largest_joltage(line: &str, num_digits: usize) -> u64 { [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/bin/day3.rs:49:29 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn iterate_lines(lines: &Vec, num_digits: usize) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 49 - pub fn iterate_lines(lines: &Vec, num_digits: usize) -> u64 { [INFO] [stdout] 49 + pub fn iterate_lines(lines: &[String], num_digits: usize) -> u64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/day4.rs:26:24 [INFO] [stdout] | [INFO] [stdout] 26 | if !(new_pos.0 < 0 || new_pos.0 as usize > col_len - 1) [INFO] [stdout] | ________________________^ [INFO] [stdout] 27 | | && !(new_pos.1 < 0 || new_pos.1 as usize > row_len - 1) [INFO] [stdout] | |_______________________________________________________________________________^ help: try: `!(new_pos.0 < 0 || new_pos.0 as usize > col_len - 1 || new_pos.1 < 0 || new_pos.1 as usize > row_len - 1)` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day4.rs:3:37 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn get_removeable_rolls(matrix: &Vec>) -> Vec<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 3 - pub fn get_removeable_rolls(matrix: &Vec>) -> Vec<(usize, usize)> { [INFO] [stdout] 3 + pub fn get_removeable_rolls(matrix: &[Vec]) -> Vec<(usize, usize)> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day4.rs:26:21 [INFO] [stdout] | [INFO] [stdout] 26 | / if !(new_pos.0 < 0 || new_pos.0 as usize > col_len - 1) [INFO] [stdout] 27 | | && !(new_pos.1 < 0 || new_pos.1 as usize > row_len - 1) [INFO] [stdout] 28 | | { [INFO] [stdout] 29 | | if matrix[new_pos.0 as usize][new_pos.1 as usize] == '@' { [INFO] [stdout] ... | [INFO] [stdout] 32 | | } [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] 27 ~ && !(new_pos.1 < 0 || new_pos.1 as usize > row_len - 1) [INFO] [stdout] 28 ~ && matrix[new_pos.0 as usize][new_pos.1 as usize] == '@' { [INFO] [stdout] 29 | num_roll_neighbors += 1; [INFO] [stdout] 30 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/day4.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | return get_removeable_rolls(&matrix).len(); [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] 48 - return get_removeable_rolls(&matrix).len(); [INFO] [stdout] 48 + get_removeable_rolls(&matrix).len() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day4.rs:45:19 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn pt1(lines: &Vec) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - pub fn pt1(lines: &Vec) -> usize { [INFO] [stdout] 45 + pub fn pt1(lines: &[String]) -> usize { [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/bin/day4.rs:51:19 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn pt2(lines: &Vec) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 51 - pub fn pt2(lines: &Vec) -> usize { [INFO] [stdout] 51 + pub fn pt2(lines: &[String]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/day4.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | while removeable_rolls.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!removeable_rolls.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: field `joltages` is never read [INFO] [stdout] --> src/bin/day10.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 10 | struct Line { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] ... [INFO] [stdout] 13 | joltages: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Line` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashSet` [INFO] [stdout] --> src/bin/day9.rs:2:33 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::{HashMap, 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: the loop variable `j` is only used to index `values` [INFO] [stdout] --> src/bin/day6.rs:164:22 [INFO] [stdout] | [INFO] [stdout] 164 | for j in 0..num_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] 164 - for j in 0..num_rows { [INFO] [stdout] 164 + for in values.iter().take(num_rows) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LineSegment` is never constructed [INFO] [stdout] --> src/bin/day9.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | struct LineSegment { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `cx` is only used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:173:23 [INFO] [stdout] | [INFO] [stdout] 173 | for cx in start..=end { [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] 173 - for cx in start..=end { [INFO] [stdout] 173 + for in grid.iter_mut().take(end + 1).skip(start) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `cy` is only used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:181:23 [INFO] [stdout] | [INFO] [stdout] 181 | for cy in start..=end { [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] 181 - for cy in start..=end { [INFO] [stdout] 181 + for in grid.iter_mut().take(end + 1).skip(start) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day9.rs:249:29 [INFO] [stdout] | [INFO] [stdout] 249 | fn flood_fill_outside(grid: &mut Vec>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 249 - fn flood_fill_outside(grid: &mut Vec>) { [INFO] [stdout] 249 + fn flood_fill_outside(grid: &mut [Vec]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `y` is used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:255:14 [INFO] [stdout] | [INFO] [stdout] 255 | for y in 0..height { [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] 255 - for y in 0..height { [INFO] [stdout] 255 + for (y, ) in grid.iter_mut().enumerate().take(height) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:256:18 [INFO] [stdout] | [INFO] [stdout] 256 | for x in 0..width { [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] 256 - for x in 0..width { [INFO] [stdout] 256 + for (x, ) in grid.iter_mut().enumerate().take(width) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `y` is only used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:286:14 [INFO] [stdout] | [INFO] [stdout] 286 | for y in 0..height { [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] 286 - for y in 0..height { [INFO] [stdout] 286 + for in grid.iter_mut().take(height) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:287:18 [INFO] [stdout] | [INFO] [stdout] 287 | for x in 0..width { [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] 287 - for x in 0..width { [INFO] [stdout] 287 + for in grid.iter_mut().take(width) { [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/bin/day9.rs:295:21 [INFO] [stdout] | [INFO] [stdout] 295 | fn rect_sum(prefix: &Vec>, x1: usize, y1: usize, x2: usize, y2: usize) -> i32 { [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] 295 - fn rect_sum(prefix: &Vec>, x1: usize, y1: usize, x2: usize, y2: usize) -> i32 { [INFO] [stdout] 295 + fn rect_sum(prefix: &[Vec], x1: usize, y1: usize, x2: usize, y2: usize) -> i32 { [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/bin/day3-idiomatic.rs:6:35 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn find_largest_joltage(line: &String, num_digits: usize) -> u64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 6 - pub fn find_largest_joltage(line: &String, num_digits: usize) -> u64 { [INFO] [stdout] 6 + pub fn find_largest_joltage(line: &str, num_digits: usize) -> u64 { [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/bin/day3-idiomatic.rs:35:29 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn iterate_lines(lines: &Vec, num_digits: usize) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 35 - pub fn iterate_lines(lines: &Vec, num_digits: usize) -> u64 { [INFO] [stdout] 35 + pub fn iterate_lines(lines: &[String], num_digits: usize) -> u64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `invalidIDs` should have a snake case name [INFO] [stdout] --> src/bin/day2.rs:5:13 [INFO] [stdout] | [INFO] [stdout] 5 | let mut invalidIDs: Vec = vec![]; [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `invalid_ids` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/bin/day5.rs:41:26 [INFO] [stdout] | [INFO] [stdout] 41 | .position(|elem| elem == "") [INFO] [stdout] | ^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `elem.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: struct `LineSegment` is never constructed [INFO] [stdout] --> src/bin/day9.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | struct LineSegment { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/day4-idiomatic.rs:58:24 [INFO] [stdout] | [INFO] [stdout] 58 | if !(new_row < 0 || new_row as usize > col_len - 1) [INFO] [stdout] | ________________________^ [INFO] [stdout] 59 | | && !(new_col < 0 || new_col as usize > row_len - 1) [INFO] [stdout] | |___________________________________________________________________________^ help: try: `!(new_row < 0 || new_row as usize > col_len - 1 || new_col < 0 || new_col as usize > row_len - 1)` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day7.rs:10:23 [INFO] [stdout] | [INFO] [stdout] 10 | fn pt1_travel(matrix: &Vec>, beam: &(usize, usize)) -> (usize, usize, Cases) { [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] 10 - fn pt1_travel(matrix: &Vec>, beam: &(usize, usize)) -> (usize, usize, Cases) { [INFO] [stdout] 10 + fn pt1_travel(matrix: &[Vec], beam: &(usize, usize)) -> (usize, usize, Cases) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, usize)` which implements the `Copy` trait [INFO] [stdout] --> src/bin/day7.rs:11:24 [INFO] [stdout] | [INFO] [stdout] 11 | let mut position = beam.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*beam` [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: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day4-idiomatic.rs:58:21 [INFO] [stdout] | [INFO] [stdout] 58 | / if !(new_row < 0 || new_row as usize > col_len - 1) [INFO] [stdout] 59 | | && !(new_col < 0 || new_col as usize > row_len - 1) [INFO] [stdout] 60 | | { [INFO] [stdout] 61 | | if matrix[new_row as usize][new_col as usize] == '@' { [INFO] [stdout] ... | [INFO] [stdout] 64 | | } [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] 59 ~ && !(new_col < 0 || new_col as usize > row_len - 1) [INFO] [stdout] 60 ~ && matrix[new_row as usize][new_col as usize] == '@' { [INFO] [stdout] 61 | num_roll_neighbors += 1; [INFO] [stdout] 62 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/day7.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | while traveling_beams.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!traveling_beams.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: length comparison to zero [INFO] [stdout] --> src/bin/day7.rs:120:11 [INFO] [stdout] | [INFO] [stdout] 120 | while traveling_beams.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!traveling_beams.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: the loop variable `cx` is only used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:173:23 [INFO] [stdout] | [INFO] [stdout] 173 | for cx in start..=end { [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] 173 - for cx in start..=end { [INFO] [stdout] 173 + for in grid.iter_mut().take(end + 1).skip(start) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `cy` is only used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:181:23 [INFO] [stdout] | [INFO] [stdout] 181 | for cy in start..=end { [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] 181 - for cy in start..=end { [INFO] [stdout] 181 + for in grid.iter_mut().take(end + 1).skip(start) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/bin/day7.rs:133:38 [INFO] [stdout] | [INFO] [stdout] 133 | let parent_val = beams [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 134 | | .get(beam) [INFO] [stdout] 135 | | .unwrap() [INFO] [stdout] 136 | | .clone(); [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 133 ~ let parent_val = *beams [INFO] [stdout] 134 + .get(beam) [INFO] [stdout] 135 ~ .unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day9.rs:249:29 [INFO] [stdout] | [INFO] [stdout] 249 | fn flood_fill_outside(grid: &mut Vec>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 249 - fn flood_fill_outside(grid: &mut Vec>) { [INFO] [stdout] 249 + fn flood_fill_outside(grid: &mut [Vec]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `y` is used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:255:14 [INFO] [stdout] | [INFO] [stdout] 255 | for y in 0..height { [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] 255 - for y in 0..height { [INFO] [stdout] 255 + for (y, ) in grid.iter_mut().enumerate().take(height) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:256:18 [INFO] [stdout] | [INFO] [stdout] 256 | for x in 0..width { [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] 256 - for x in 0..width { [INFO] [stdout] 256 + for (x, ) in grid.iter_mut().enumerate().take(width) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `y` is only used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:286:14 [INFO] [stdout] | [INFO] [stdout] 286 | for y in 0..height { [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] 286 - for y in 0..height { [INFO] [stdout] 286 + for in grid.iter_mut().take(height) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `grid` [INFO] [stdout] --> src/bin/day9.rs:287:18 [INFO] [stdout] | [INFO] [stdout] 287 | for x in 0..width { [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] 287 - for x in 0..width { [INFO] [stdout] 287 + for in grid.iter_mut().take(width) { [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/bin/day9.rs:295:21 [INFO] [stdout] | [INFO] [stdout] 295 | fn rect_sum(prefix: &Vec>, x1: usize, y1: usize, x2: usize, y2: usize) -> i32 { [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] 295 - fn rect_sum(prefix: &Vec>, x1: usize, y1: usize, x2: usize, y2: usize) -> i32 { [INFO] [stdout] 295 + fn rect_sum(prefix: &[Vec], x1: usize, y1: usize, x2: usize, y2: usize) -> i32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 37.13s [INFO] running `Command { std: "docker" "inspect" "ebd05a5138e76ac8ebcf4b87e17b7d5a683e08f37f591ca612fa20b6593bd15c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ebd05a5138e76ac8ebcf4b87e17b7d5a683e08f37f591ca612fa20b6593bd15c", kill_on_drop: false }` [INFO] [stdout] ebd05a5138e76ac8ebcf4b87e17b7d5a683e08f37f591ca612fa20b6593bd15c