[INFO] cloning repository https://github.com/BlueDragon23/advent-of-code2020 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/BlueDragon23/advent-of-code2020" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBlueDragon23%2Fadvent-of-code2020", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBlueDragon23%2Fadvent-of-code2020'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] cbb29c6627dd7d2a8d43e92aab19c5a560eea634 [INFO] linting BlueDragon23/advent-of-code2020 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBlueDragon23%2Fadvent-of-code2020" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/BlueDragon23/advent-of-code2020 [INFO] finished tweaking git repo https://github.com/BlueDragon23/advent-of-code2020 [INFO] tweaked toml for git repo https://github.com/BlueDragon23/advent-of-code2020 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/BlueDragon23/advent-of-code2020 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/BlueDragon23/advent-of-code2020 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 reformation_derive v0.5.2 [INFO] [stderr] Downloaded simple_logger v1.11.0 [INFO] [stderr] Downloaded derive_more v0.99.14 [INFO] [stderr] Downloaded reformation v0.5.3 [INFO] [stderr] Downloaded syn v1.0.72 [INFO] [stderr] Downloaded libc v0.2.95 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 2364ddc0e3c3c71cfdf2a891d903b58074085ac8e6b0a066431749d8a88b09d6 [INFO] running `Command { std: "docker" "start" "-a" "2364ddc0e3c3c71cfdf2a891d903b58074085ac8e6b0a066431749d8a88b09d6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2364ddc0e3c3c71cfdf2a891d903b58074085ac8e6b0a066431749d8a88b09d6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2364ddc0e3c3c71cfdf2a891d903b58074085ac8e6b0a066431749d8a88b09d6", kill_on_drop: false }` [INFO] [stdout] 2364ddc0e3c3c71cfdf2a891d903b58074085ac8e6b0a066431749d8a88b09d6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] c244a25b9e0ee97ce21f3e5511c30548fedccf73a3a7c65afa14f48feda4ce30 [INFO] running `Command { std: "docker" "start" "-a" "c244a25b9e0ee97ce21f3e5511c30548fedccf73a3a7c65afa14f48feda4ce30", kill_on_drop: false }` [INFO] [stderr] Compiling memchr v2.4.0 [INFO] [stderr] Compiling libc v0.2.95 [INFO] [stderr] Compiling proc-macro2 v1.0.27 [INFO] [stderr] Compiling syn v1.0.72 [INFO] [stderr] Compiling indexmap v1.6.2 [INFO] [stderr] Compiling regex-syntax v0.6.25 [INFO] [stderr] Checking hashbrown v0.9.1 [INFO] [stderr] Checking once_cell v1.7.2 [INFO] [stderr] Compiling aho-corasick v0.7.18 [INFO] [stderr] Checking petgraph v0.5.1 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Checking time v0.1.44 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking colored v1.9.3 [INFO] [stderr] Checking regex v1.5.4 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Checking simple_logger v1.11.0 [INFO] [stderr] Compiling reformation_derive v0.5.2 [INFO] [stderr] Compiling derive_more v0.99.14 [INFO] [stderr] Checking reformation v0.5.3 [INFO] [stderr] Checking advent-of-code2020 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day9.rs:17:19 [INFO] [stdout] | [INFO] [stdout] 17 | fn part1(numbers: &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] 17 - fn part1(numbers: &Vec) { [INFO] [stdout] 17 + fn part1(numbers: &[i64]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/bin/day9.rs:21:14 [INFO] [stdout] | [INFO] [stdout] 21 | .into_iter() [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: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/day9.rs:23:23 [INFO] [stdout] | [INFO] [stdout] 23 | .any(|xs| xs.into_iter().map(|x| *x).sum::() == target) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `xs.into_iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day9.rs:28:19 [INFO] [stdout] | [INFO] [stdout] 28 | fn part2(numbers: &Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 28 ~ fn part2(numbers: &[i64]) { [INFO] [stdout] 29 | let mut lower = 0; [INFO] [stdout] ... [INFO] [stdout] 43 | } [INFO] [stdout] 44 ~ let min = numbers.to_owned() [INFO] [stdout] 45 | .into_iter() [INFO] [stdout] ... [INFO] [stdout] 49 | .unwrap(); [INFO] [stdout] 50 ~ let max = numbers.to_owned() [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/day11.rs:50:25 [INFO] [stdout] | [INFO] [stdout] 50 | fn count_results(board: &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] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 50 - fn count_results(board: &Vec>) -> usize { [INFO] [stdout] 50 + fn count_results(board: &[Vec]) -> 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/day11.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | board: &Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 87 - board: &Vec>, [INFO] [stdout] 87 + board: &[Vec], [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/day11.rs:172:33 [INFO] [stdout] | [INFO] [stdout] 172 | fn check_surrounds_empty(board: &Vec>, r: usize, c: 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] 172 - fn check_surrounds_empty(board: &Vec>, r: usize, c: usize) -> bool { [INFO] [stdout] 172 + fn check_surrounds_empty(board: &[Vec], r: usize, c: usize) -> bool { [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/day11.rs:192:32 [INFO] [stdout] | [INFO] [stdout] 192 | fn check_surrounds_full(board: &Vec>, r: usize, c: 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] 192 - fn check_surrounds_full(board: &Vec>, r: usize, c: usize) -> bool { [INFO] [stdout] 192 + fn check_surrounds_full(board: &[Vec], r: usize, c: usize) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/day21.rs:27:14 [INFO] [stdout] | [INFO] [stdout] 27 | .map(|line| parse_line(line)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `parse_line` [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: length comparison to zero [INFO] [stdout] --> src/bin/day21.rs:52:35 [INFO] [stdout] | [INFO] [stdout] 52 | .filter(|(_, values)| values.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!values.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashMap` [INFO] [stdout] --> src/bin/day21.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | .into_iter() [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: length comparison to zero [INFO] [stdout] --> src/bin/day21.rs:60:31 [INFO] [stdout] | [INFO] [stdout] 60 | .filter(|(_, values)| values.len() == 0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `values.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: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/bin/day21.rs:62:25 [INFO] [stdout] | [INFO] [stdout] 62 | acc + foods.into_iter().fold(0, |i_count, food| { [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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/bin/day21.rs:82:17 [INFO] [stdout] | [INFO] [stdout] 82 | ingredients.into_iter().for_each(|ingredient| { [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] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert` to construct default value [INFO] [stdout] --> src/bin/day21.rs:87:18 [INFO] [stdout] | [INFO] [stdout] 87 | .or_insert(HashSet::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert` to construct default value [INFO] [stdout] --> src/bin/day21.rs:98:18 [INFO] [stdout] | [INFO] [stdout] 98 | .or_insert(HashSet::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/bin/day21.rs:115:10 [INFO] [stdout] | [INFO] [stdout] 115 | .into_iter() [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] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `maybe_result` after checking its variant with `is_some` [INFO] [stdout] --> src/bin/day10.rs:47:18 [INFO] [stdout] | [INFO] [stdout] 46 | if maybe_result.is_some() { [INFO] [stdout] | ------------------------- help: try: `if let Some() = maybe_result` [INFO] [stdout] 47 | return (*maybe_result.unwrap(), cache); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/day10.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | if result.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `result.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: useless conversion to the same type: `std::str::Split<'_, &str>` [INFO] [stdout] --> src/bin/day16.rs:136:21 [INFO] [stdout] | [INFO] [stdout] 136 | let mut parts = line.split(": ").into_iter(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `line.split(": ")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `maybe_result` after checking its variant with `is_some` [INFO] [stdout] --> src/bin/day10.rs:47:18 [INFO] [stdout] | [INFO] [stdout] 46 | if maybe_result.is_some() { [INFO] [stdout] | ------------------------- help: try: `if let Some() = maybe_result` [INFO] [stdout] 47 | return (*maybe_result.unwrap(), cache); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/day10.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | if result.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `result.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: redundant closure [INFO] [stdout] --> src/bin/day21.rs:27:14 [INFO] [stdout] | [INFO] [stdout] 27 | .map(|line| parse_line(line)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `parse_line` [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: redundant closure [INFO] [stdout] --> src/bin/day18.rs:35:14 [INFO] [stdout] | [INFO] [stdout] 35 | .map(|e| evaluate_expression_part2_2(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `evaluate_expression_part2_2` [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 `.fold` can be written more succinctly using another method [INFO] [stdout] --> src/bin/day3.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | .fold(1, |product, value| product * value) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `product::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/day21.rs:52:35 [INFO] [stdout] | [INFO] [stdout] 52 | .filter(|(_, values)| values.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!values.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashMap` [INFO] [stdout] --> src/bin/day21.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | .into_iter() [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: length comparison to zero [INFO] [stdout] --> src/bin/day21.rs:60:31 [INFO] [stdout] | [INFO] [stdout] 60 | .filter(|(_, values)| values.len() == 0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `values.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: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/bin/day21.rs:62:25 [INFO] [stdout] | [INFO] [stdout] 62 | acc + foods.into_iter().fold(0, |i_count, food| { [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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/bin/day21.rs:82:17 [INFO] [stdout] | [INFO] [stdout] 82 | ingredients.into_iter().for_each(|ingredient| { [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] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert` to construct default value [INFO] [stdout] --> src/bin/day21.rs:87:18 [INFO] [stdout] | [INFO] [stdout] 87 | .or_insert(HashSet::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert` to construct default value [INFO] [stdout] --> src/bin/day21.rs:98:18 [INFO] [stdout] | [INFO] [stdout] 98 | .or_insert(HashSet::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/bin/day18.rs:29:78 [INFO] [stdout] | [INFO] [stdout] 29 | .map(|line| parse_expression(&mut line.unwrap().chars().into_iter())) [INFO] [stdout] | ______________________________________________________________________________^ [INFO] [stdout] 30 | | .map(|e| { [INFO] [stdout] ... | [INFO] [stdout] 34 | | }) [INFO] [stdout] | |__________^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] = note: `#[warn(clippy::map_identity)]` 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] --> src/bin/day21.rs:115:10 [INFO] [stdout] | [INFO] [stdout] 115 | .into_iter() [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] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/bin/day3.rs:14:20 [INFO] [stdout] | [INFO] [stdout] 14 | for pattern in vec![(1, 1), (1, 3), (1, 5), (1, 7), (2, 1)] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[(1, 1), (1, 3), (1, 5), (1, 7), (2, 1)]` [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 conversion to the same type: `std::str::Chars<'_>` [INFO] [stdout] --> src/bin/day18.rs:29:43 [INFO] [stdout] | [INFO] [stdout] 29 | .map(|line| parse_expression(&mut line.unwrap().chars().into_iter())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `line.unwrap().chars()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `VecDeque` [INFO] [stdout] --> src/bin/day22.rs:69:10 [INFO] [stdout] | [INFO] [stdout] 69 | deck.into_iter().map(|x| x.to_string()).join(",") [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] --> src/bin/day22.rs:84:37 [INFO] [stdout] | [INFO] [stdout] 84 | let player1_hash = get_hash(&player1); [INFO] [stdout] | ^^^^^^^^ help: change this to: `player1` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/day22.rs:85:37 [INFO] [stdout] | [INFO] [stdout] 85 | let player2_hash = get_hash(&player2); [INFO] [stdout] | ^^^^^^^^ help: change this to: `player2` [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: length comparison to zero [INFO] [stdout] --> src/bin/day22.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 132 | if player1.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `player1.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/day22.rs:135:19 [INFO] [stdout] | [INFO] [stdout] 135 | } else if player2.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `player2.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: length comparison to zero [INFO] [stdout] --> src/bin/day22.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | if player1.len() == 0 || player2.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `player1.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: length comparison to zero [INFO] [stdout] --> src/bin/day22.rs:155:34 [INFO] [stdout] | [INFO] [stdout] 155 | if player1.len() == 0 || player2.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `player2.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: useless conversion to the same type: `std::str::Split<'_, &str>` [INFO] [stdout] --> src/bin/day16.rs:136:21 [INFO] [stdout] | [INFO] [stdout] 136 | let mut parts = line.split(": ").into_iter(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `line.split(": ")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `row` and `col` are never read [INFO] [stdout] --> src/main.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 7 | struct Coordinate { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 8 | row: usize, [INFO] [stdout] | ^^^ [INFO] [stdout] 9 | col: usize, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Coordinate` has a derived impl for the trait `Debug`, but this is 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: name `PID` contains a capitalized acronym [INFO] [stdout] --> src/bin/day4.rs:62:8 [INFO] [stdout] | [INFO] [stdout] 62 | struct PID { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Pid` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/day4.rs:93:17 [INFO] [stdout] | [INFO] [stdout] 93 | .filter(|passport| valid_fields(passport)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `valid_fields` [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 `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | / passport.byr.clone().map_or(false, |byr_str| { [INFO] [stdout] 121 | | byr_str.len() == 4 [INFO] [stdout] 122 | | && BirthYear::parse(byr_str.as_str()).map_or_else( [INFO] [stdout] 123 | | |_| panic!("byr: {}", byr_str), [INFO] [stdout] ... | [INFO] [stdout] 126 | | }) && passport.iyr.clone().map_or(false, |iyr_str| { [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 120 - passport.byr.clone().map_or(false, |byr_str| { [INFO] [stdout] 120 + passport.byr.clone().is_some_and(|byr_str| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:126:11 [INFO] [stdout] | [INFO] [stdout] 126 | }) && passport.iyr.clone().map_or(false, |iyr_str| { [INFO] [stdout] | ___________^ [INFO] [stdout] 127 | | iyr_str.len() == 4 [INFO] [stdout] 128 | | && IssueYear::parse(iyr_str.as_str()) [INFO] [stdout] 129 | | .map_or(false, |iyr| iyr.year >= 2010 && iyr.year <= 2020) [INFO] [stdout] 130 | | }) && passport.eyr.clone().map_or(false, |eyr_str| { [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 126 - }) && passport.iyr.clone().map_or(false, |iyr_str| { [INFO] [stdout] 126 + }) && passport.iyr.clone().is_some_and(|iyr_str| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:128:16 [INFO] [stdout] | [INFO] [stdout] 128 | && IssueYear::parse(iyr_str.as_str()) [INFO] [stdout] | ________________^ [INFO] [stdout] 129 | | .map_or(false, |iyr| iyr.year >= 2010 && iyr.year <= 2020) [INFO] [stdout] | |__________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_ok_and` instead [INFO] [stdout] | [INFO] [stdout] 129 - .map_or(false, |iyr| iyr.year >= 2010 && iyr.year <= 2020) [INFO] [stdout] 129 + .is_ok_and(|iyr| iyr.year >= 2010 && iyr.year <= 2020) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:130:11 [INFO] [stdout] | [INFO] [stdout] 130 | }) && passport.eyr.clone().map_or(false, |eyr_str| { [INFO] [stdout] | ___________^ [INFO] [stdout] 131 | | eyr_str.len() == 4 [INFO] [stdout] 132 | | && ExpiryYear::parse(eyr_str.as_str()) [INFO] [stdout] 133 | | .map_or(false, |eyr| eyr.year >= 2020 && eyr.year <= 2030) [INFO] [stdout] 134 | | }) && passport.hgt.clone().map_or(false, |hgt_str| { [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 130 - }) && passport.eyr.clone().map_or(false, |eyr_str| { [INFO] [stdout] 130 + }) && passport.eyr.clone().is_some_and(|eyr_str| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:132:16 [INFO] [stdout] | [INFO] [stdout] 132 | && ExpiryYear::parse(eyr_str.as_str()) [INFO] [stdout] | ________________^ [INFO] [stdout] 133 | | .map_or(false, |eyr| eyr.year >= 2020 && eyr.year <= 2030) [INFO] [stdout] | |__________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_ok_and` instead [INFO] [stdout] | [INFO] [stdout] 133 - .map_or(false, |eyr| eyr.year >= 2020 && eyr.year <= 2030) [INFO] [stdout] 133 + .is_ok_and(|eyr| eyr.year >= 2020 && eyr.year <= 2030) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:134:11 [INFO] [stdout] | [INFO] [stdout] 134 | }) && passport.hgt.clone().map_or(false, |hgt_str| { [INFO] [stdout] | ___________^ [INFO] [stdout] 135 | | let height = Height::parse(hgt_str.as_str()); [INFO] [stdout] 136 | | match height { [INFO] [stdout] 137 | | Ok(Height::Cm(cm)) => cm >= 150 && cm <= 193, [INFO] [stdout] ... | [INFO] [stdout] 141 | | }) && passport [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 134 - }) && passport.hgt.clone().map_or(false, |hgt_str| { [INFO] [stdout] 134 + }) && passport.hgt.clone().is_some_and(|hgt_str| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/bin/day4.rs:137:35 [INFO] [stdout] | [INFO] [stdout] 137 | Ok(Height::Cm(cm)) => cm >= 150 && cm <= 193, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `(150..=193).contains(&cm)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/bin/day4.rs:138:39 [INFO] [stdout] | [INFO] [stdout] 138 | Ok(Height::In(inches)) => inches >= 59 && inches <= 76, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(59..=76).contains(&inches)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:141:11 [INFO] [stdout] | [INFO] [stdout] 141 | }) && passport [INFO] [stdout] | ___________^ [INFO] [stdout] 142 | | .hcl [INFO] [stdout] 143 | | .clone() [INFO] [stdout] 144 | | .map_or(false, |hair| HairColour::parse(hair.as_str()).is_ok()) [INFO] [stdout] | |_______________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 144 - .map_or(false, |hair| HairColour::parse(hair.as_str()).is_ok()) [INFO] [stdout] 144 + .is_some_and(|hair| HairColour::parse(hair.as_str()).is_ok()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 145 | && passport.ecl.clone().map_or(false, |eye_colour| { [INFO] [stdout] | ____________^ [INFO] [stdout] 146 | | EyeColour::parse(eye_colour.as_str()).is_ok() [INFO] [stdout] 147 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 145 - && passport.ecl.clone().map_or(false, |eye_colour| { [INFO] [stdout] 145 + && passport.ecl.clone().is_some_and(|eye_colour| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 148 | && passport [INFO] [stdout] | ____________^ [INFO] [stdout] 149 | | .pid [INFO] [stdout] 150 | | .clone() [INFO] [stdout] 151 | | .map_or(false, |p| PID::parse(p.as_str()).is_ok()) [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 151 - .map_or(false, |p| PID::parse(p.as_str()).is_ok()) [INFO] [stdout] 151 + .is_some_and(|p| PID::parse(p.as_str()).is_ok()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `VecDeque` [INFO] [stdout] --> src/bin/day22.rs:69:10 [INFO] [stdout] | [INFO] [stdout] 69 | deck.into_iter().map(|x| x.to_string()).join(",") [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] --> src/bin/day22.rs:84:37 [INFO] [stdout] | [INFO] [stdout] 84 | let player1_hash = get_hash(&player1); [INFO] [stdout] | ^^^^^^^^ help: change this to: `player1` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/day22.rs:85:37 [INFO] [stdout] | [INFO] [stdout] 85 | let player2_hash = get_hash(&player2); [INFO] [stdout] | ^^^^^^^^ help: change this to: `player2` [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: length comparison to zero [INFO] [stdout] --> src/bin/day22.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 132 | if player1.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `player1.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/day22.rs:135:19 [INFO] [stdout] | [INFO] [stdout] 135 | } else if player2.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `player2.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: length comparison to zero [INFO] [stdout] --> src/bin/day22.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | if player1.len() == 0 || player2.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `player1.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: length comparison to zero [INFO] [stdout] --> src/bin/day22.rs:155:34 [INFO] [stdout] | [INFO] [stdout] 155 | if player1.len() == 0 || player2.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `player2.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: useless conversion to the same type: `std::str::Chars<'_>` [INFO] [stdout] --> src/bin/day5.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | let row = line [INFO] [stdout] | _______________________^ [INFO] [stdout] 13 | | .chars() [INFO] [stdout] 14 | | .into_iter() [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 12 ~ let row = line [INFO] [stdout] 13 + .chars() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::str::Chars<'_>` [INFO] [stdout] --> src/bin/day5.rs:23:23 [INFO] [stdout] | [INFO] [stdout] 23 | let col = line [INFO] [stdout] | _______________________^ [INFO] [stdout] 24 | | .chars() [INFO] [stdout] 25 | | .into_iter() [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 23 ~ let col = line [INFO] [stdout] 24 + .chars() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/day6.rs:30:21 [INFO] [stdout] | [INFO] [stdout] 30 | .filter(|c| !(*c == '\n')) [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `(*c != '\n')` [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: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/day6.rs:39:24 [INFO] [stdout] | [INFO] [stdout] 39 | .reduce(|a, b| a.intersection(&b).map(|c| *c).collect::>()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `a.intersection(&b).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `iter_map_while` has been stable since 1.57.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/bin/day19.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(iter_map_while)] [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` 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/day9.rs:17:19 [INFO] [stdout] | [INFO] [stdout] 17 | fn part1(numbers: &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] 17 - fn part1(numbers: &Vec) { [INFO] [stdout] 17 + fn part1(numbers: &[i64]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/bin/day9.rs:21:14 [INFO] [stdout] | [INFO] [stdout] 21 | .into_iter() [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: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/day9.rs:23:23 [INFO] [stdout] | [INFO] [stdout] 23 | .any(|xs| xs.into_iter().map(|x| *x).sum::() == target) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `xs.into_iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day9.rs:28:19 [INFO] [stdout] | [INFO] [stdout] 28 | fn part2(numbers: &Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 28 ~ fn part2(numbers: &[i64]) { [INFO] [stdout] 29 | let mut lower = 0; [INFO] [stdout] ... [INFO] [stdout] 43 | } [INFO] [stdout] 44 ~ let min = numbers.to_owned() [INFO] [stdout] 45 | .into_iter() [INFO] [stdout] ... [INFO] [stdout] 49 | .unwrap(); [INFO] [stdout] 50 ~ let max = numbers.to_owned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `.extend(_.chars())` [INFO] [stdout] --> src/bin/day19.rs:130:17 [INFO] [stdout] | [INFO] [stdout] 130 | a.extend(b.chars()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `a.push_str(&b)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stdout] = note: `#[warn(clippy::string_extend_chars)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `.extend(_.chars())` [INFO] [stdout] --> src/bin/day19.rs:140:21 [INFO] [stdout] | [INFO] [stdout] 140 | a.extend(b.chars()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `a.push_str(&b)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `second` after checking its variant with `is_some` [INFO] [stdout] --> src/bin/day19.rs:219:67 [INFO] [stdout] | [INFO] [stdout] 217 | if result && second.is_some() { [INFO] [stdout] | ---------------- the check is happening here [INFO] [stdout] 218 | // Only check second part of the sequence if the first one succeeded [INFO] [stdout] 219 | let (new_result, second_index) = is_valid(message, rules, second.unwrap(), new_index); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `third` after checking its variant with `is_some` [INFO] [stdout] --> src/bin/day19.rs:225:66 [INFO] [stdout] | [INFO] [stdout] 223 | if result && third.is_some() { [INFO] [stdout] | --------------- the check is happening here [INFO] [stdout] 224 | // Only check second part of the sequence if the first one succeeded [INFO] [stdout] 225 | let (new_result, third_index) = is_valid(message, rules, third.unwrap(), new_index); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> src/bin/day3.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | .fold(1, |product, value| product * value) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `product::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::str::Chars<'_>` [INFO] [stdout] --> src/bin/day5.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | let row = line [INFO] [stdout] | _______________________^ [INFO] [stdout] 13 | | .chars() [INFO] [stdout] 14 | | .into_iter() [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 12 ~ let row = line [INFO] [stdout] 13 + .chars() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::str::Chars<'_>` [INFO] [stdout] --> src/bin/day5.rs:23:23 [INFO] [stdout] | [INFO] [stdout] 23 | let col = line [INFO] [stdout] | _______________________^ [INFO] [stdout] 24 | | .chars() [INFO] [stdout] 25 | | .into_iter() [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 23 ~ let col = line [INFO] [stdout] 24 + .chars() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/bin/day3.rs:14:20 [INFO] [stdout] | [INFO] [stdout] 14 | for pattern in vec![(1, 1), (1, 3), (1, 5), (1, 7), (2, 1)] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[(1, 1), (1, 3), (1, 5), (1, 7), (2, 1)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day11.rs:50:25 [INFO] [stdout] | [INFO] [stdout] 50 | fn count_results(board: &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] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 50 - fn count_results(board: &Vec>) -> usize { [INFO] [stdout] 50 + fn count_results(board: &[Vec]) -> 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/day11.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | board: &Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 87 - board: &Vec>, [INFO] [stdout] 87 + board: &[Vec], [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/day11.rs:172:33 [INFO] [stdout] | [INFO] [stdout] 172 | fn check_surrounds_empty(board: &Vec>, r: usize, c: 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] 172 - fn check_surrounds_empty(board: &Vec>, r: usize, c: usize) -> bool { [INFO] [stdout] 172 + fn check_surrounds_empty(board: &[Vec], r: usize, c: usize) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/bin/day13.rs:36:22 [INFO] [stdout] | [INFO] [stdout] 36 | .filter(|id| match id { [INFO] [stdout] | ______________________^ [INFO] [stdout] 37 | | Id::Id(_) => true, [INFO] [stdout] 38 | | _ => false, [INFO] [stdout] 39 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 36 - .filter(|id| match id { [INFO] [stdout] 37 - Id::Id(_) => true, [INFO] [stdout] 38 - _ => false, [INFO] [stdout] 39 - }) [INFO] [stdout] 36 + .filter(|id| matches!(id, Id::Id(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/bin/day13.rs:56:27 [INFO] [stdout] | [INFO] [stdout] 56 | .filter(|(_, id)| match id { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 57 | | Id::Id(_) => true, [INFO] [stdout] 58 | | _ => false, [INFO] [stdout] 59 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 56 - .filter(|(_, id)| match id { [INFO] [stdout] 57 - Id::Id(_) => true, [INFO] [stdout] 58 - _ => false, [INFO] [stdout] 59 - }) [INFO] [stdout] 56 + .filter(|(_, id)| matches!(id, Id::Id(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/bin/day13.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 63 | / let result = match x { [INFO] [stdout] 64 | | Id::X => true, [INFO] [stdout] 65 | | Id::Id(value) => (timestamp + (index as u128)) % (value as u128) == 0, [INFO] [stdout] 66 | | }; [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 67 | result [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] 63 ~ [INFO] [stdout] 64 ~ match x { [INFO] [stdout] 65 + Id::X => true, [INFO] [stdout] 66 + Id::Id(value) => (timestamp + (index as u128)) % (value as u128) == 0, [INFO] [stdout] 67 + } [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/day11.rs:192:32 [INFO] [stdout] | [INFO] [stdout] 192 | fn check_surrounds_full(board: &Vec>, r: usize, c: 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] 192 - fn check_surrounds_full(board: &Vec>, r: usize, c: usize) -> bool { [INFO] [stdout] 192 + fn check_surrounds_full(board: &[Vec], r: usize, c: usize) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/bin/day13.rs:65:34 [INFO] [stdout] | [INFO] [stdout] 65 | Id::Id(value) => (timestamp + (index as u128)) % (value as u128) == 0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(timestamp + (index as u128)).is_multiple_of(value as u128)` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/bin/day13.rs:36:22 [INFO] [stdout] | [INFO] [stdout] 36 | .filter(|id| match id { [INFO] [stdout] | ______________________^ [INFO] [stdout] 37 | | Id::Id(_) => true, [INFO] [stdout] 38 | | _ => false, [INFO] [stdout] 39 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 36 - .filter(|id| match id { [INFO] [stdout] 37 - Id::Id(_) => true, [INFO] [stdout] 38 - _ => false, [INFO] [stdout] 39 - }) [INFO] [stdout] 36 + .filter(|id| matches!(id, Id::Id(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `row` and `col` are never read [INFO] [stdout] --> src/main.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 7 | struct Coordinate { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 8 | row: usize, [INFO] [stdout] | ^^^ [INFO] [stdout] 9 | col: usize, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Coordinate` has a derived impl for the trait `Debug`, but this is 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: match expression looks like `matches!` macro [INFO] [stdout] --> src/bin/day13.rs:56:27 [INFO] [stdout] | [INFO] [stdout] 56 | .filter(|(_, id)| match id { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 57 | | Id::Id(_) => true, [INFO] [stdout] 58 | | _ => false, [INFO] [stdout] 59 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 56 - .filter(|(_, id)| match id { [INFO] [stdout] 57 - Id::Id(_) => true, [INFO] [stdout] 58 - _ => false, [INFO] [stdout] 59 - }) [INFO] [stdout] 56 + .filter(|(_, id)| matches!(id, Id::Id(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/bin/day13.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 63 | / let result = match x { [INFO] [stdout] 64 | | Id::X => true, [INFO] [stdout] 65 | | Id::Id(value) => (timestamp + (index as u128)) % (value as u128) == 0, [INFO] [stdout] 66 | | }; [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 67 | result [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] 63 ~ [INFO] [stdout] 64 ~ match x { [INFO] [stdout] 65 + Id::X => true, [INFO] [stdout] 66 + Id::Id(value) => (timestamp + (index as u128)) % (value as u128) == 0, [INFO] [stdout] 67 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/bin/day13.rs:65:34 [INFO] [stdout] | [INFO] [stdout] 65 | Id::Id(value) => (timestamp + (index as u128)) % (value as u128) == 0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(timestamp + (index as u128)).is_multiple_of(value as u128)` [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: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/bin/day14.rs:76:47 [INFO] [stdout] | [INFO] [stdout] 76 | ... updated_0s.extend(updated_1s.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 76 - updated_0s.extend(updated_1s.into_iter()); [INFO] [stdout] 76 + updated_0s.extend(updated_1s); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/day14.rs:94:22 [INFO] [stdout] | [INFO] [stdout] 94 | println!("{:?}", result.mem.values().map(|&x| x).sum::()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `result.mem.values().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/day14.rs:127:22 [INFO] [stdout] | [INFO] [stdout] 127 | println!("{:?}", result.mem.values().map(|&x| x).sum::()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `result.mem.values().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/bin/day14.rs:76:47 [INFO] [stdout] | [INFO] [stdout] 76 | ... updated_0s.extend(updated_1s.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 76 - updated_0s.extend(updated_1s.into_iter()); [INFO] [stdout] 76 + updated_0s.extend(updated_1s); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/day14.rs:94:22 [INFO] [stdout] | [INFO] [stdout] 94 | println!("{:?}", result.mem.values().map(|&x| x).sum::()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `result.mem.values().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `iter_map_while` has been stable since 1.57.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/bin/day19.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(iter_map_while)] [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/day14.rs:127:22 [INFO] [stdout] | [INFO] [stdout] 127 | println!("{:?}", result.mem.values().map(|&x| x).sum::()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `result.mem.values().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/day6.rs:30:21 [INFO] [stdout] | [INFO] [stdout] 30 | .filter(|c| !(*c == '\n')) [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `(*c != '\n')` [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: you are using an explicit closure for copying elements [INFO] [stdout] --> src/bin/day6.rs:39:24 [INFO] [stdout] | [INFO] [stdout] 39 | .reduce(|a, b| a.intersection(&b).map(|c| *c).collect::>()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `a.intersection(&b).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/day18.rs:35:14 [INFO] [stdout] | [INFO] [stdout] 35 | .map(|e| evaluate_expression_part2_2(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `evaluate_expression_part2_2` [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: unnecessary map of the identity function [INFO] [stdout] --> src/bin/day18.rs:29:78 [INFO] [stdout] | [INFO] [stdout] 29 | .map(|line| parse_expression(&mut line.unwrap().chars().into_iter())) [INFO] [stdout] | ______________________________________________________________________________^ [INFO] [stdout] 30 | | .map(|e| { [INFO] [stdout] ... | [INFO] [stdout] 34 | | }) [INFO] [stdout] | |__________^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] = note: `#[warn(clippy::map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `.extend(_.chars())` [INFO] [stdout] --> src/bin/day19.rs:130:17 [INFO] [stdout] | [INFO] [stdout] 130 | a.extend(b.chars()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `a.push_str(&b)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stdout] = note: `#[warn(clippy::string_extend_chars)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `.extend(_.chars())` [INFO] [stdout] --> src/bin/day19.rs:140:21 [INFO] [stdout] | [INFO] [stdout] 140 | a.extend(b.chars()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `a.push_str(&b)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `second` after checking its variant with `is_some` [INFO] [stdout] --> src/bin/day19.rs:219:67 [INFO] [stdout] | [INFO] [stdout] 217 | if result && second.is_some() { [INFO] [stdout] | ---------------- the check is happening here [INFO] [stdout] 218 | // Only check second part of the sequence if the first one succeeded [INFO] [stdout] 219 | let (new_result, second_index) = is_valid(message, rules, second.unwrap(), new_index); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `third` after checking its variant with `is_some` [INFO] [stdout] --> src/bin/day19.rs:225:66 [INFO] [stdout] | [INFO] [stdout] 223 | if result && third.is_some() { [INFO] [stdout] | --------------- the check is happening here [INFO] [stdout] 224 | // Only check second part of the sequence if the first one succeeded [INFO] [stdout] 225 | let (new_result, third_index) = is_valid(message, rules, third.unwrap(), new_index); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::str::Chars<'_>` [INFO] [stdout] --> src/bin/day18.rs:29:43 [INFO] [stdout] | [INFO] [stdout] 29 | .map(|line| parse_expression(&mut line.unwrap().chars().into_iter())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `line.unwrap().chars()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `PID` contains a capitalized acronym [INFO] [stdout] --> src/bin/day4.rs:62:8 [INFO] [stdout] | [INFO] [stdout] 62 | struct PID { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Pid` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/day4.rs:93:17 [INFO] [stdout] | [INFO] [stdout] 93 | .filter(|passport| valid_fields(passport)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `valid_fields` [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 `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | / passport.byr.clone().map_or(false, |byr_str| { [INFO] [stdout] 121 | | byr_str.len() == 4 [INFO] [stdout] 122 | | && BirthYear::parse(byr_str.as_str()).map_or_else( [INFO] [stdout] 123 | | |_| panic!("byr: {}", byr_str), [INFO] [stdout] ... | [INFO] [stdout] 126 | | }) && passport.iyr.clone().map_or(false, |iyr_str| { [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 120 - passport.byr.clone().map_or(false, |byr_str| { [INFO] [stdout] 120 + passport.byr.clone().is_some_and(|byr_str| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:126:11 [INFO] [stdout] | [INFO] [stdout] 126 | }) && passport.iyr.clone().map_or(false, |iyr_str| { [INFO] [stdout] | ___________^ [INFO] [stdout] 127 | | iyr_str.len() == 4 [INFO] [stdout] 128 | | && IssueYear::parse(iyr_str.as_str()) [INFO] [stdout] 129 | | .map_or(false, |iyr| iyr.year >= 2010 && iyr.year <= 2020) [INFO] [stdout] 130 | | }) && passport.eyr.clone().map_or(false, |eyr_str| { [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 126 - }) && passport.iyr.clone().map_or(false, |iyr_str| { [INFO] [stdout] 126 + }) && passport.iyr.clone().is_some_and(|iyr_str| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:128:16 [INFO] [stdout] | [INFO] [stdout] 128 | && IssueYear::parse(iyr_str.as_str()) [INFO] [stdout] | ________________^ [INFO] [stdout] 129 | | .map_or(false, |iyr| iyr.year >= 2010 && iyr.year <= 2020) [INFO] [stdout] | |__________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_ok_and` instead [INFO] [stdout] | [INFO] [stdout] 129 - .map_or(false, |iyr| iyr.year >= 2010 && iyr.year <= 2020) [INFO] [stdout] 129 + .is_ok_and(|iyr| iyr.year >= 2010 && iyr.year <= 2020) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:130:11 [INFO] [stdout] | [INFO] [stdout] 130 | }) && passport.eyr.clone().map_or(false, |eyr_str| { [INFO] [stdout] | ___________^ [INFO] [stdout] 131 | | eyr_str.len() == 4 [INFO] [stdout] 132 | | && ExpiryYear::parse(eyr_str.as_str()) [INFO] [stdout] 133 | | .map_or(false, |eyr| eyr.year >= 2020 && eyr.year <= 2030) [INFO] [stdout] 134 | | }) && passport.hgt.clone().map_or(false, |hgt_str| { [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 130 - }) && passport.eyr.clone().map_or(false, |eyr_str| { [INFO] [stdout] 130 + }) && passport.eyr.clone().is_some_and(|eyr_str| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:132:16 [INFO] [stdout] | [INFO] [stdout] 132 | && ExpiryYear::parse(eyr_str.as_str()) [INFO] [stdout] | ________________^ [INFO] [stdout] 133 | | .map_or(false, |eyr| eyr.year >= 2020 && eyr.year <= 2030) [INFO] [stdout] | |__________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_ok_and` instead [INFO] [stdout] | [INFO] [stdout] 133 - .map_or(false, |eyr| eyr.year >= 2020 && eyr.year <= 2030) [INFO] [stdout] 133 + .is_ok_and(|eyr| eyr.year >= 2020 && eyr.year <= 2030) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:134:11 [INFO] [stdout] | [INFO] [stdout] 134 | }) && passport.hgt.clone().map_or(false, |hgt_str| { [INFO] [stdout] | ___________^ [INFO] [stdout] 135 | | let height = Height::parse(hgt_str.as_str()); [INFO] [stdout] 136 | | match height { [INFO] [stdout] 137 | | Ok(Height::Cm(cm)) => cm >= 150 && cm <= 193, [INFO] [stdout] ... | [INFO] [stdout] 141 | | }) && passport [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 134 - }) && passport.hgt.clone().map_or(false, |hgt_str| { [INFO] [stdout] 134 + }) && passport.hgt.clone().is_some_and(|hgt_str| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/bin/day4.rs:137:35 [INFO] [stdout] | [INFO] [stdout] 137 | Ok(Height::Cm(cm)) => cm >= 150 && cm <= 193, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `(150..=193).contains(&cm)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/bin/day4.rs:138:39 [INFO] [stdout] | [INFO] [stdout] 138 | Ok(Height::In(inches)) => inches >= 59 && inches <= 76, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(59..=76).contains(&inches)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:141:11 [INFO] [stdout] | [INFO] [stdout] 141 | }) && passport [INFO] [stdout] | ___________^ [INFO] [stdout] 142 | | .hcl [INFO] [stdout] 143 | | .clone() [INFO] [stdout] 144 | | .map_or(false, |hair| HairColour::parse(hair.as_str()).is_ok()) [INFO] [stdout] | |_______________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 144 - .map_or(false, |hair| HairColour::parse(hair.as_str()).is_ok()) [INFO] [stdout] 144 + .is_some_and(|hair| HairColour::parse(hair.as_str()).is_ok()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 145 | && passport.ecl.clone().map_or(false, |eye_colour| { [INFO] [stdout] | ____________^ [INFO] [stdout] 146 | | EyeColour::parse(eye_colour.as_str()).is_ok() [INFO] [stdout] 147 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 145 - && passport.ecl.clone().map_or(false, |eye_colour| { [INFO] [stdout] 145 + && passport.ecl.clone().is_some_and(|eye_colour| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/bin/day4.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 148 | && passport [INFO] [stdout] | ____________^ [INFO] [stdout] 149 | | .pid [INFO] [stdout] 150 | | .clone() [INFO] [stdout] 151 | | .map_or(false, |p| PID::parse(p.as_str()).is_ok()) [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 151 - .map_or(false, |p| PID::parse(p.as_str()).is_ok()) [INFO] [stdout] 151 + .is_some_and(|p| PID::parse(p.as_str()).is_ok()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.53s [INFO] running `Command { std: "docker" "inspect" "c244a25b9e0ee97ce21f3e5511c30548fedccf73a3a7c65afa14f48feda4ce30", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c244a25b9e0ee97ce21f3e5511c30548fedccf73a3a7c65afa14f48feda4ce30", kill_on_drop: false }` [INFO] [stdout] c244a25b9e0ee97ce21f3e5511c30548fedccf73a3a7c65afa14f48feda4ce30