[INFO] cloning repository https://github.com/leonardoCorti/AoC2023 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/leonardoCorti/AoC2023" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FleonardoCorti%2FAoC2023", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FleonardoCorti%2FAoC2023'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 5c663d288d1645038cc000328ffe2222ee968efc [INFO] linting leonardoCorti/AoC2023 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FleonardoCorti%2FAoC2023" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/leonardoCorti/AoC2023 [INFO] finished tweaking git repo https://github.com/leonardoCorti/AoC2023 [INFO] tweaked toml for git repo https://github.com/leonardoCorti/AoC2023 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/leonardoCorti/AoC2023 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/leonardoCorti/AoC2023 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] ddcf3c6622575d6c31a9b1a28651dfa3d94b88f7d51fce5b007ba733c553fbbc [INFO] running `Command { std: "docker" "start" "-a" "ddcf3c6622575d6c31a9b1a28651dfa3d94b88f7d51fce5b007ba733c553fbbc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ddcf3c6622575d6c31a9b1a28651dfa3d94b88f7d51fce5b007ba733c553fbbc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ddcf3c6622575d6c31a9b1a28651dfa3d94b88f7d51fce5b007ba733c553fbbc", kill_on_drop: false }` [INFO] [stdout] ddcf3c6622575d6c31a9b1a28651dfa3d94b88f7d51fce5b007ba733c553fbbc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 2b978f27a1fe809a89ea560f39becf00138d3b078ccb14de9db5690e0722706e [INFO] running `Command { std: "docker" "start" "-a" "2b978f27a1fe809a89ea560f39becf00138d3b078ccb14de9db5690e0722706e", kill_on_drop: false }` [INFO] [stderr] Checking aoc_2023 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day01.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | return result.to_string(); [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] 23 - return result.to_string(); [INFO] [stdout] 23 + result.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day01.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | return first*10 + last; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 21 - return first*10 + last; [INFO] [stdout] 21 + first*10 + last [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option<&i32>` which implements the `Copy` trait [INFO] [stdout] --> src/day01.rs:18:25 [INFO] [stdout] | [INFO] [stdout] 18 | let first = digits.iter().next().clone().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `digits.iter().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.iter().next()` on an array [INFO] [stdout] --> src/day01.rs:18:25 [INFO] [stdout] | [INFO] [stdout] 18 | let first = digits.iter().next().clone().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try calling: `digits.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_next_slice [INFO] [stdout] = note: `#[warn(clippy::iter_next_slice)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option<&i32>` which implements the `Copy` trait [INFO] [stdout] --> src/day01.rs:19:24 [INFO] [stdout] | [INFO] [stdout] 19 | let last = digits.iter().last().clone().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `digits.iter().last()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day01.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | return part_1(new_input) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 57 - return part_1(new_input) [INFO] [stdout] 57 + part_1(new_input) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | return sum_of_ids.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 59 - return sum_of_ids.to_string(); [INFO] [stdout] 59 + sum_of_ids.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 110 | return result.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 110 - return result.to_string(); [INFO] [stdout] 110 + result.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:106:9 [INFO] [stdout] | [INFO] [stdout] 106 | return green_min*blue_min*red_min; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 106 - return green_min*blue_min*red_min; [INFO] [stdout] 106 + green_min*blue_min*red_min [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day03.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 61 - return false; [INFO] [stdout] 61 + false [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/day03.rs:18:43 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn is_adjacent_to(&self, symbols: &Vec<(usize,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] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 18 - pub fn is_adjacent_to(&self, symbols: &Vec<(usize,usize)>) -> bool{ [INFO] [stdout] 18 + pub fn is_adjacent_to(&self, symbols: &[(usize,usize)]) -> bool{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day03.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | !(character_of_line=='.'){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(character_of_line != '.')` [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/day03.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | / if !in_number || index_of_line==(line.len()-1) { [INFO] [stdout] 90 | | [INFO] [stdout] 91 | | if !current_number.is_empty() { [INFO] [stdout] 92 | | let value: usize = current_number.iter() [INFO] [stdout] ... | [INFO] [stdout] 108 | | } [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] 89 ~ if (!in_number || index_of_line==(line.len()-1)) { [INFO] [stdout] 90 | [INFO] [stdout] 91 ~ && !current_number.is_empty() { [INFO] [stdout] 92 | let value: usize = current_number.iter() [INFO] [stdout] ... [INFO] [stdout] 105 | current_number = Vec::new(); [INFO] [stdout] 106 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day03.rs:137:13 [INFO] [stdout] | [INFO] [stdout] 137 | !(character_of_line=='.')&& [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(character_of_line != '.')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day03.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | / if !in_number || index_of_line==(line.len()-1) { [INFO] [stdout] 149 | | [INFO] [stdout] 150 | | if !current_number.is_empty() { [INFO] [stdout] 151 | | let value: usize = current_number.iter() [INFO] [stdout] ... | [INFO] [stdout] 167 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 148 ~ if (!in_number || index_of_line==(line.len()-1)) { [INFO] [stdout] 149 | [INFO] [stdout] 150 ~ && !current_number.is_empty() { [INFO] [stdout] 151 | let value: usize = current_number.iter() [INFO] [stdout] ... [INFO] [stdout] 164 | current_number = Vec::new(); [INFO] [stdout] 165 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day03.rs:199:9 [INFO] [stdout] | [INFO] [stdout] 199 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 199 - return true; [INFO] [stdout] 199 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, usize)` which implements the `Copy` trait [INFO] [stdout] --> src/day03.rs:189:20 [INFO] [stdout] | [INFO] [stdout] 189 | coord_vec.push(coord.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/day03.rs:188:5 [INFO] [stdout] | [INFO] [stdout] 188 | / let mut coord_vec: Vec<(usize,usize)> = Vec::new(); [INFO] [stdout] 189 | | coord_vec.push(coord.clone()); [INFO] [stdout] | |__________________________________^ help: consider using the `vec![]` macro: `let coord_vec: Vec<(usize,usize)> = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` 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/day03.rs:206:53 [INFO] [stdout] | [INFO] [stdout] 206 | fn gear_ratio( coord: &(usize,usize), part_numbers: &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] 206 - fn gear_ratio( coord: &(usize,usize), part_numbers: &Vec) -> usize { [INFO] [stdout] 206 + fn gear_ratio( coord: &(usize,usize), part_numbers: &[Numbers]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, usize)` which implements the `Copy` trait [INFO] [stdout] --> src/day03.rs:209:20 [INFO] [stdout] | [INFO] [stdout] 209 | coord_vec.push(coord.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/day03.rs:208:5 [INFO] [stdout] | [INFO] [stdout] 208 | / let mut coord_vec: Vec<(usize,usize)> = Vec::new(); [INFO] [stdout] 209 | | coord_vec.push(coord.clone()); [INFO] [stdout] | |__________________________________^ help: consider using the `vec![]` macro: `let coord_vec: Vec<(usize,usize)> = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/day03.rs:210:5 [INFO] [stdout] | [INFO] [stdout] 210 | let mult: usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 211 | [INFO] [stdout] 212 | / mult = part_numbers.iter() [INFO] [stdout] 213 | | .filter(|pn| pn.is_adjacent_to(&coord_vec)) [INFO] [stdout] 214 | | .map(|pn| pn.value) [INFO] [stdout] 215 | | .reduce(|a,b| a*b).unwrap(); [INFO] [stdout] | |___________________________________^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `mult` here [INFO] [stdout] | [INFO] [stdout] 210 ~ [INFO] [stdout] 211 | [INFO] [stdout] 212 ~ let mult: usize = part_numbers.iter() [INFO] [stdout] 213 + .filter(|pn| pn.is_adjacent_to(&coord_vec)) [INFO] [stdout] 214 + .map(|pn| pn.value) [INFO] [stdout] 215 ~ .reduce(|a,b| a*b).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day05.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | while let Some(map) = input_parts.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for map in input_parts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day05.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | while let Some(ranges_string) = lines.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for ranges_string in lines` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day05.rs:84:41 [INFO] [stdout] | [INFO] [stdout] 84 | fn seed_to_location(seed: &usize, maps: &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] 84 - fn seed_to_location(seed: &usize, maps: &Vec) -> usize { [INFO] [stdout] 84 + fn seed_to_location(seed: &usize, maps: &[Map]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/day05.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | start.clone() [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/day05.rs:156:31 [INFO] [stdout] | [INFO] [stdout] 156 | seeds_intervals.push((start.clone(),length.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/day05.rs:156:45 [INFO] [stdout] | [INFO] [stdout] 156 | seeds_intervals.push((start.clone(),length.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*length` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day05.rs:159:5 [INFO] [stdout] | [INFO] [stdout] 159 | while let Some(map) = input_parts.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for map in input_parts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day05.rs:174:9 [INFO] [stdout] | [INFO] [stdout] 174 | while let Some(ranges_string) = lines.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for ranges_string in lines` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day06.rs:32:14 [INFO] [stdout] | [INFO] [stdout] 32 | .map(|r| elaboration_race(r)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `elaboration_race` [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: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/day06.rs:42:20 [INFO] [stdout] | [INFO] [stdout] 42 | let duration = race_input.0.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `race_input.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/day06.rs:43:18 [INFO] [stdout] | [INFO] [stdout] 43 | let record = race_input.1.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `race_input.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day06.rs:82:14 [INFO] [stdout] | [INFO] [stdout] 82 | .map(|r| elaboration_race(r)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `elaboration_race` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day07.rs:39:33 [INFO] [stdout] | [INFO] [stdout] 39 | let hand = convert_hand(&hand_raw); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `hand_raw` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | return Ordering::Greater; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 55 - return Ordering::Greater; [INFO] [stdout] 55 + Ordering::Greater [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:58:13 [INFO] [stdout] | [INFO] [stdout] 58 | return Ordering::Less; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 58 - return Ordering::Less; [INFO] [stdout] 58 + Ordering::Less [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | return compare_hands_raw(a,b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 62 - return compare_hands_raw(a,b); [INFO] [stdout] 62 + compare_hands_raw(a,b) [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/day07.rs:46:21 [INFO] [stdout] | [INFO] [stdout] 46 | fn compare_hands(a: &Vec, b: &Vec) -> Ordering { [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] 46 - fn compare_hands(a: &Vec, b: &Vec) -> Ordering { [INFO] [stdout] 46 + fn compare_hands(a: &[u32], b: &Vec) -> Ordering { [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/day07.rs:46:35 [INFO] [stdout] | [INFO] [stdout] 46 | fn compare_hands(a: &Vec, b: &Vec) -> Ordering { [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] 46 - fn compare_hands(a: &Vec, b: &Vec) -> Ordering { [INFO] [stdout] 46 + fn compare_hands(a: &Vec, b: &[u32]) -> Ordering { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | return Ordering::Equal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 81 - return Ordering::Equal; [INFO] [stdout] 81 + Ordering::Equal [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | return FIVE_OF_A_KIND; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 108 - return FIVE_OF_A_KIND; [INFO] [stdout] 108 + FIVE_OF_A_KIND [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:115:13 [INFO] [stdout] | [INFO] [stdout] 115 | return FOUR_OF_A_KIND; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 115 - return FOUR_OF_A_KIND; [INFO] [stdout] 115 + FOUR_OF_A_KIND [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:117:13 [INFO] [stdout] | [INFO] [stdout] 117 | return FULL_HOUSE; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 117 - return FULL_HOUSE; [INFO] [stdout] 117 + FULL_HOUSE [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:126:13 [INFO] [stdout] | [INFO] [stdout] 126 | return THREE_OF_A_KIND; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 126 - return THREE_OF_A_KIND; [INFO] [stdout] 126 + THREE_OF_A_KIND [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:128:13 [INFO] [stdout] | [INFO] [stdout] 128 | return TWO_PAIR; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 - return TWO_PAIR; [INFO] [stdout] 128 + TWO_PAIR [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:134:9 [INFO] [stdout] | [INFO] [stdout] 134 | return ONE_PAIR; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 134 - return ONE_PAIR; [INFO] [stdout] 134 + ONE_PAIR [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | return HIGH_CARD; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 137 - return HIGH_CARD; [INFO] [stdout] 137 + HIGH_CARD [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/day07.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | let hand: Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `hand` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 193 ~ [INFO] [stdout] 194 | [INFO] [stdout] 195 ~ let hand: Vec = if hand_raw.contains("J"){ [INFO] [stdout] 196 ~ max_value_variation(&hand_raw) [INFO] [stdout] 197 | } [INFO] [stdout] 198 | else { [INFO] [stdout] 199 ~ convert_hand_part2(&hand_raw) [INFO] [stdout] 200 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day07.rs:196:40 [INFO] [stdout] | [INFO] [stdout] 196 | hand = max_value_variation(&hand_raw); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `hand_raw` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day07.rs:199:39 [INFO] [stdout] | [INFO] [stdout] 199 | hand = convert_hand_part2(&hand_raw); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `hand_raw` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:226:5 [INFO] [stdout] | [INFO] [stdout] 226 | return vec; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 226 - return vec; [INFO] [stdout] 226 + vec [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day08.rs:23:11 [INFO] [stdout] | [INFO] [stdout] 23 | while !(current_node=="ZZZ") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `(current_node != "ZZZ")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day08.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | while let Some(line) = lines.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for line in lines` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day08.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | .reduce(|a,b| lcm(a,b)) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the function itself: `lcm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day08.rs:100:90 [INFO] [stdout] | [INFO] [stdout] 100 | fn part2_z(map: &HashMap, starting_node: String, instructions: &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] 100 - fn part2_z(map: &HashMap, starting_node: String, instructions: &Vec ) -> usize { [INFO] [stdout] 100 + fn part2_z(map: &HashMap, starting_node: String, instructions: &[char] ) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day08.rs:106:25 [INFO] [stdout] | [INFO] [stdout] 106 | while !(is_end_node(¤t_node)){ [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `current_node` [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: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/day08.rs:135:28 [INFO] [stdout] | [INFO] [stdout] 135 | fn is_last_character(node: &String, character: char) -> 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] 135 - fn is_last_character(node: &String, character: char) -> bool{ [INFO] [stdout] 135 + fn is_last_character(node: &str, character: char) -> bool{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day09.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | .map(|sequence| extrapolate_new_number_right(sequence)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `extrapolate_new_number_right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day09.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | .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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day09.rs:31:14 [INFO] [stdout] | [INFO] [stdout] 31 | .map(|sequence| extrapolate_new_number_left(sequence)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `extrapolate_new_number_left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day09.rs:30:14 [INFO] [stdout] | [INFO] [stdout] 30 | .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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day09.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | new_number = new_number + *last_number; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `new_number += *last_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day01.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | return result.to_string(); [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] 23 - return result.to_string(); [INFO] [stdout] 23 + result.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day01.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | return first*10 + last; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 21 - return first*10 + last; [INFO] [stdout] 21 + first*10 + last [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option<&i32>` which implements the `Copy` trait [INFO] [stdout] --> src/day01.rs:18:25 [INFO] [stdout] | [INFO] [stdout] 18 | let first = digits.iter().next().clone().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `digits.iter().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.iter().next()` on an array [INFO] [stdout] --> src/day01.rs:18:25 [INFO] [stdout] | [INFO] [stdout] 18 | let first = digits.iter().next().clone().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try calling: `digits.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_next_slice [INFO] [stdout] = note: `#[warn(clippy::iter_next_slice)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option<&i32>` which implements the `Copy` trait [INFO] [stdout] --> src/day01.rs:19:24 [INFO] [stdout] | [INFO] [stdout] 19 | let last = digits.iter().last().clone().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `digits.iter().last()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day01.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | return part_1(new_input) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 57 - return part_1(new_input) [INFO] [stdout] 57 + part_1(new_input) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | return sum_of_ids.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 59 - return sum_of_ids.to_string(); [INFO] [stdout] 59 + sum_of_ids.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 110 | return result.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 110 - return result.to_string(); [INFO] [stdout] 110 + result.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:106:9 [INFO] [stdout] | [INFO] [stdout] 106 | return green_min*blue_min*red_min; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 106 - return green_min*blue_min*red_min; [INFO] [stdout] 106 + green_min*blue_min*red_min [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day03.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 61 - return false; [INFO] [stdout] 61 + false [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/day03.rs:18:43 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn is_adjacent_to(&self, symbols: &Vec<(usize,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] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 18 - pub fn is_adjacent_to(&self, symbols: &Vec<(usize,usize)>) -> bool{ [INFO] [stdout] 18 + pub fn is_adjacent_to(&self, symbols: &[(usize,usize)]) -> bool{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day03.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | !(character_of_line=='.'){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(character_of_line != '.')` [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/day03.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | / if !in_number || index_of_line==(line.len()-1) { [INFO] [stdout] 90 | | [INFO] [stdout] 91 | | if !current_number.is_empty() { [INFO] [stdout] 92 | | let value: usize = current_number.iter() [INFO] [stdout] ... | [INFO] [stdout] 108 | | } [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] 89 ~ if (!in_number || index_of_line==(line.len()-1)) { [INFO] [stdout] 90 | [INFO] [stdout] 91 ~ && !current_number.is_empty() { [INFO] [stdout] 92 | let value: usize = current_number.iter() [INFO] [stdout] ... [INFO] [stdout] 105 | current_number = Vec::new(); [INFO] [stdout] 106 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day03.rs:137:13 [INFO] [stdout] | [INFO] [stdout] 137 | !(character_of_line=='.')&& [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(character_of_line != '.')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day03.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | / if !in_number || index_of_line==(line.len()-1) { [INFO] [stdout] 149 | | [INFO] [stdout] 150 | | if !current_number.is_empty() { [INFO] [stdout] 151 | | let value: usize = current_number.iter() [INFO] [stdout] ... | [INFO] [stdout] 167 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 148 ~ if (!in_number || index_of_line==(line.len()-1)) { [INFO] [stdout] 149 | [INFO] [stdout] 150 ~ && !current_number.is_empty() { [INFO] [stdout] 151 | let value: usize = current_number.iter() [INFO] [stdout] ... [INFO] [stdout] 164 | current_number = Vec::new(); [INFO] [stdout] 165 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day03.rs:199:9 [INFO] [stdout] | [INFO] [stdout] 199 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 199 - return true; [INFO] [stdout] 199 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, usize)` which implements the `Copy` trait [INFO] [stdout] --> src/day03.rs:189:20 [INFO] [stdout] | [INFO] [stdout] 189 | coord_vec.push(coord.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/day03.rs:188:5 [INFO] [stdout] | [INFO] [stdout] 188 | / let mut coord_vec: Vec<(usize,usize)> = Vec::new(); [INFO] [stdout] 189 | | coord_vec.push(coord.clone()); [INFO] [stdout] | |__________________________________^ help: consider using the `vec![]` macro: `let coord_vec: Vec<(usize,usize)> = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` 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/day03.rs:206:53 [INFO] [stdout] | [INFO] [stdout] 206 | fn gear_ratio( coord: &(usize,usize), part_numbers: &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] 206 - fn gear_ratio( coord: &(usize,usize), part_numbers: &Vec) -> usize { [INFO] [stdout] 206 + fn gear_ratio( coord: &(usize,usize), part_numbers: &[Numbers]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, usize)` which implements the `Copy` trait [INFO] [stdout] --> src/day03.rs:209:20 [INFO] [stdout] | [INFO] [stdout] 209 | coord_vec.push(coord.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*coord` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/day03.rs:208:5 [INFO] [stdout] | [INFO] [stdout] 208 | / let mut coord_vec: Vec<(usize,usize)> = Vec::new(); [INFO] [stdout] 209 | | coord_vec.push(coord.clone()); [INFO] [stdout] | |__________________________________^ help: consider using the `vec![]` macro: `let coord_vec: Vec<(usize,usize)> = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/day03.rs:210:5 [INFO] [stdout] | [INFO] [stdout] 210 | let mult: usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 211 | [INFO] [stdout] 212 | / mult = part_numbers.iter() [INFO] [stdout] 213 | | .filter(|pn| pn.is_adjacent_to(&coord_vec)) [INFO] [stdout] 214 | | .map(|pn| pn.value) [INFO] [stdout] 215 | | .reduce(|a,b| a*b).unwrap(); [INFO] [stdout] | |___________________________________^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `mult` here [INFO] [stdout] | [INFO] [stdout] 210 ~ [INFO] [stdout] 211 | [INFO] [stdout] 212 ~ let mult: usize = part_numbers.iter() [INFO] [stdout] 213 + .filter(|pn| pn.is_adjacent_to(&coord_vec)) [INFO] [stdout] 214 + .map(|pn| pn.value) [INFO] [stdout] 215 ~ .reduce(|a,b| a*b).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day05.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | while let Some(map) = input_parts.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for map in input_parts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day05.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | while let Some(ranges_string) = lines.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for ranges_string in lines` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day05.rs:84:41 [INFO] [stdout] | [INFO] [stdout] 84 | fn seed_to_location(seed: &usize, maps: &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] 84 - fn seed_to_location(seed: &usize, maps: &Vec) -> usize { [INFO] [stdout] 84 + fn seed_to_location(seed: &usize, maps: &[Map]) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/day05.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | start.clone() [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/day05.rs:156:31 [INFO] [stdout] | [INFO] [stdout] 156 | seeds_intervals.push((start.clone(),length.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/day05.rs:156:45 [INFO] [stdout] | [INFO] [stdout] 156 | seeds_intervals.push((start.clone(),length.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*length` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day05.rs:159:5 [INFO] [stdout] | [INFO] [stdout] 159 | while let Some(map) = input_parts.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for map in input_parts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day05.rs:174:9 [INFO] [stdout] | [INFO] [stdout] 174 | while let Some(ranges_string) = lines.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for ranges_string in lines` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day06.rs:32:14 [INFO] [stdout] | [INFO] [stdout] 32 | .map(|r| elaboration_race(r)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `elaboration_race` [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: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/day06.rs:42:20 [INFO] [stdout] | [INFO] [stdout] 42 | let duration = race_input.0.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `race_input.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/day06.rs:43:18 [INFO] [stdout] | [INFO] [stdout] 43 | let record = race_input.1.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `race_input.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day06.rs:82:14 [INFO] [stdout] | [INFO] [stdout] 82 | .map(|r| elaboration_race(r)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `elaboration_race` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day07.rs:39:33 [INFO] [stdout] | [INFO] [stdout] 39 | let hand = convert_hand(&hand_raw); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `hand_raw` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | return Ordering::Greater; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 55 - return Ordering::Greater; [INFO] [stdout] 55 + Ordering::Greater [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:58:13 [INFO] [stdout] | [INFO] [stdout] 58 | return Ordering::Less; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 58 - return Ordering::Less; [INFO] [stdout] 58 + Ordering::Less [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | return compare_hands_raw(a,b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 62 - return compare_hands_raw(a,b); [INFO] [stdout] 62 + compare_hands_raw(a,b) [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/day07.rs:46:21 [INFO] [stdout] | [INFO] [stdout] 46 | fn compare_hands(a: &Vec, b: &Vec) -> Ordering { [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] 46 - fn compare_hands(a: &Vec, b: &Vec) -> Ordering { [INFO] [stdout] 46 + fn compare_hands(a: &[u32], b: &Vec) -> Ordering { [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/day07.rs:46:35 [INFO] [stdout] | [INFO] [stdout] 46 | fn compare_hands(a: &Vec, b: &Vec) -> Ordering { [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] 46 - fn compare_hands(a: &Vec, b: &Vec) -> Ordering { [INFO] [stdout] 46 + fn compare_hands(a: &Vec, b: &[u32]) -> Ordering { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | return Ordering::Equal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 81 - return Ordering::Equal; [INFO] [stdout] 81 + Ordering::Equal [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | return FIVE_OF_A_KIND; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 108 - return FIVE_OF_A_KIND; [INFO] [stdout] 108 + FIVE_OF_A_KIND [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:115:13 [INFO] [stdout] | [INFO] [stdout] 115 | return FOUR_OF_A_KIND; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 115 - return FOUR_OF_A_KIND; [INFO] [stdout] 115 + FOUR_OF_A_KIND [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:117:13 [INFO] [stdout] | [INFO] [stdout] 117 | return FULL_HOUSE; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 117 - return FULL_HOUSE; [INFO] [stdout] 117 + FULL_HOUSE [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:126:13 [INFO] [stdout] | [INFO] [stdout] 126 | return THREE_OF_A_KIND; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 126 - return THREE_OF_A_KIND; [INFO] [stdout] 126 + THREE_OF_A_KIND [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:128:13 [INFO] [stdout] | [INFO] [stdout] 128 | return TWO_PAIR; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 - return TWO_PAIR; [INFO] [stdout] 128 + TWO_PAIR [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:134:9 [INFO] [stdout] | [INFO] [stdout] 134 | return ONE_PAIR; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 134 - return ONE_PAIR; [INFO] [stdout] 134 + ONE_PAIR [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | return HIGH_CARD; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 137 - return HIGH_CARD; [INFO] [stdout] 137 + HIGH_CARD [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/day07.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | let hand: Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `hand` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 193 ~ [INFO] [stdout] 194 | [INFO] [stdout] 195 ~ let hand: Vec = if hand_raw.contains("J"){ [INFO] [stdout] 196 ~ max_value_variation(&hand_raw) [INFO] [stdout] 197 | } [INFO] [stdout] 198 | else { [INFO] [stdout] 199 ~ convert_hand_part2(&hand_raw) [INFO] [stdout] 200 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day07.rs:196:40 [INFO] [stdout] | [INFO] [stdout] 196 | hand = max_value_variation(&hand_raw); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `hand_raw` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day07.rs:199:39 [INFO] [stdout] | [INFO] [stdout] 199 | hand = convert_hand_part2(&hand_raw); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `hand_raw` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:226:5 [INFO] [stdout] | [INFO] [stdout] 226 | return vec; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 226 - return vec; [INFO] [stdout] 226 + vec [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day08.rs:23:11 [INFO] [stdout] | [INFO] [stdout] 23 | while !(current_node=="ZZZ") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `(current_node != "ZZZ")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/day08.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | while let Some(line) = lines.next(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for line in lines` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day08.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | .reduce(|a,b| lcm(a,b)) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the function itself: `lcm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day08.rs:100:90 [INFO] [stdout] | [INFO] [stdout] 100 | fn part2_z(map: &HashMap, starting_node: String, instructions: &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] 100 - fn part2_z(map: &HashMap, starting_node: String, instructions: &Vec ) -> usize { [INFO] [stdout] 100 + fn part2_z(map: &HashMap, starting_node: String, instructions: &[char] ) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day08.rs:106:25 [INFO] [stdout] | [INFO] [stdout] 106 | while !(is_end_node(¤t_node)){ [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `current_node` [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: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/day08.rs:135:28 [INFO] [stdout] | [INFO] [stdout] 135 | fn is_last_character(node: &String, character: char) -> 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] 135 - fn is_last_character(node: &String, character: char) -> bool{ [INFO] [stdout] 135 + fn is_last_character(node: &str, character: char) -> bool{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day09.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | .map(|sequence| extrapolate_new_number_right(sequence)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `extrapolate_new_number_right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day09.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | .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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day09.rs:31:14 [INFO] [stdout] | [INFO] [stdout] 31 | .map(|sequence| extrapolate_new_number_left(sequence)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `extrapolate_new_number_left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day09.rs:30:14 [INFO] [stdout] | [INFO] [stdout] 30 | .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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/day09.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | new_number = new_number + *last_number; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `new_number += *last_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.55s [INFO] running `Command { std: "docker" "inspect" "2b978f27a1fe809a89ea560f39becf00138d3b078ccb14de9db5690e0722706e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2b978f27a1fe809a89ea560f39becf00138d3b078ccb14de9db5690e0722706e", kill_on_drop: false }` [INFO] [stdout] 2b978f27a1fe809a89ea560f39becf00138d3b078ccb14de9db5690e0722706e