[INFO] cloning repository https://github.com/aimkey/advent-of-code-2019 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/aimkey/advent-of-code-2019" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faimkey%2Fadvent-of-code-2019", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faimkey%2Fadvent-of-code-2019'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c14fdfbc016eb7358e35ad09a09cc59c3267b3bb [INFO] linting aimkey/advent-of-code-2019 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faimkey%2Fadvent-of-code-2019" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/aimkey/advent-of-code-2019 [INFO] finished tweaking git repo https://github.com/aimkey/advent-of-code-2019 [INFO] tweaked toml for git repo https://github.com/aimkey/advent-of-code-2019 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/aimkey/advent-of-code-2019 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/aimkey/advent-of-code-2019 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-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 7401994b57a8b8f5e27916d9eada8b6a80f889b03766b4d5fa444cc500636d53 [INFO] running `Command { std: "docker" "start" "-a" "7401994b57a8b8f5e27916d9eada8b6a80f889b03766b4d5fa444cc500636d53", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "7401994b57a8b8f5e27916d9eada8b6a80f889b03766b4d5fa444cc500636d53", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7401994b57a8b8f5e27916d9eada8b6a80f889b03766b4d5fa444cc500636d53", kill_on_drop: false }` [INFO] [stdout] 7401994b57a8b8f5e27916d9eada8b6a80f889b03766b4d5fa444cc500636d53 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 1c40b838f3e8fbe4c66fd39c9cddf41f0ed33473c44a88d392334e1c35f8c2a4 [INFO] running `Command { std: "docker" "start" "-a" "1c40b838f3e8fbe4c66fd39c9cddf41f0ed33473c44a88d392334e1c35f8c2a4", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.0.0 [INFO] [stderr] Compiling num-traits v0.2.11 [INFO] [stderr] Compiling num-integer v0.1.42 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Checking advent-of-code-2019 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/d10.rs:89:42 [INFO] [stdout] | [INFO] [stdout] 89 | let station_tmp = Point { x, y: y }; [INFO] [stdout] | ^^^^ help: replace it with: `y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/d4.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | if *gap - 1 >= 0 && IntCodeCPU::dig(&(*perm as i64), &(*gap - 1)) == target { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change it to: `*gap > 0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] = note: `#[warn(clippy::int_plus_one)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/d8.rs:73:18 [INFO] [stdout] | [INFO] [stdout] 73 | .map(|c| (c.to_digit(10).unwrap() as u8)) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 73 - .map(|c| (c.to_digit(10).unwrap() as u8)) [INFO] [stdout] 73 + .map(|c| c.to_digit(10).unwrap() as u8 ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/d10.rs:89:42 [INFO] [stdout] | [INFO] [stdout] 89 | let station_tmp = Point { x, y: y }; [INFO] [stdout] | ^^^^ help: replace it with: `y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/d4.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | if *gap - 1 >= 0 && IntCodeCPU::dig(&(*perm as i64), &(*gap - 1)) == target { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change it to: `*gap > 0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] = note: `#[warn(clippy::int_plus_one)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/d8.rs:73:18 [INFO] [stdout] | [INFO] [stdout] 73 | .map(|c| (c.to_digit(10).unwrap() as u8)) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 73 - .map(|c| (c.to_digit(10).unwrap() as u8)) [INFO] [stdout] 73 + .map(|c| c.to_digit(10).unwrap() as u8 ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/d6.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | let mut node = &mut storage.get_mut(lut[node_id]).unwrap(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/d6.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | let mut node = &mut storage.get_mut(lut[node_id]).unwrap(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | return common(fuel_required); [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] 5 - return common(fuel_required); [INFO] [stdout] 5 + common(fuel_required) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | return common(recursive_fuel_required); [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] 9 - return common(recursive_fuel_required); [INFO] [stdout] 9 + common(recursive_fuel_required) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | return module_mass / 3 - 2; [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] 13 - return module_mass / 3 - 2; [INFO] [stdout] 13 + module_mass / 3 - 2 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | return current + recursive_fuel_required(¤t); [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 current + recursive_fuel_required(¤t); [INFO] [stdout] 21 + current + recursive_fuel_required(¤t) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | return Ok(sum); [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] 34 - return Ok(sum); [INFO] [stdout] 34 + Ok(sum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d1.rs:28:36 [INFO] [stdout] | [INFO] [stdout] 28 | for (_, line) in reader.lines().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] = note: `#[warn(clippy::unused_enumerate_index)]` on by default [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 28 - for (_, line) in reader.lines().enumerate() { [INFO] [stdout] 28 + for line in reader.lines() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | return Ok(visible_asteroids); [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] 14 - return Ok(visible_asteroids); [INFO] [stdout] 14 + Ok(visible_asteroids) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | return Ok(pt.x * 100 + pt.y); [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 Ok(pt.x * 100 + pt.y); [INFO] [stdout] 21 + Ok(pt.x * 100 + pt.y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | return spin(lut, &f32_keys, index_of_q1, target); [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] 37 - return spin(lut, &f32_keys, index_of_q1, target); [INFO] [stdout] 37 + spin(lut, &f32_keys, index_of_q1, target) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `fire_res` after checking its variant with `is_some` [INFO] [stdout] --> src/d10.rs:53:28 [INFO] [stdout] | [INFO] [stdout] 50 | if fire_res.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = fire_res` [INFO] [stdout] ... [INFO] [stdout] 53 | return fire_res.unwrap(); [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: called `unwrap` on `fire_res` after checking its variant with `is_some` [INFO] [stdout] --> src/d10.rs:62:28 [INFO] [stdout] | [INFO] [stdout] 59 | if fire_res.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = fire_res` [INFO] [stdout] ... [INFO] [stdout] 62 | return fire_res.unwrap(); [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] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d10.rs:42:15 [INFO] [stdout] | [INFO] [stdout] 42 | f32_keys: &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] 42 - f32_keys: &Vec, [INFO] [stdout] 42 + f32_keys: &[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d10.rs:71:8 [INFO] [stdout] | [INFO] [stdout] 71 | if heap.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!heap.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: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:99:5 [INFO] [stdout] | [INFO] [stdout] 99 | return (station, max_visible, lut); [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] 99 - return (station, max_visible, lut); [INFO] [stdout] 99 + (station, max_visible, lut) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d10.rs:80:10 [INFO] [stdout] | [INFO] [stdout] 80 | img: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 80 ~ img: &mut [u8], [INFO] [stdout] 81 | w: &i32, [INFO] [stdout] ... [INFO] [stdout] 89 | let station_tmp = Point { x, y: y }; [INFO] [stdout] 90 ~ let asteroid_lookup = asteroid_metadata(&mut img.to_owned(), *w, *h, &station_tmp); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 110 | return asteroid_lut; [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 asteroid_lut; [INFO] [stdout] 110 + asteroid_lut [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d10.rs:131:37 [INFO] [stdout] | [INFO] [stdout] 131 | let angle = center.angle_to(¤t).to_string(); [INFO] [stdout] | ^^^^^^^^ help: change this to: `current` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d10.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | / if !asteroid_lut.contains_key(&angle) { [INFO] [stdout] 133 | | let mut heap = BinaryHeap::::new(); [INFO] [stdout] 134 | | heap.push(PointDist { [INFO] [stdout] 135 | | point: current.clone(), [INFO] [stdout] ... | [INFO] [stdout] 143 | | }); [INFO] [stdout] 144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d10.rs:135:24 [INFO] [stdout] | [INFO] [stdout] 135 | point: current.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*current` [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 `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d10.rs:141:24 [INFO] [stdout] | [INFO] [stdout] 141 | point: current.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*current` [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/d10.rs:210:5 [INFO] [stdout] | [INFO] [stdout] 210 | return Ok((img, w as i32, h as i32)); [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] 210 - return Ok((img, w as i32, h as i32)); [INFO] [stdout] 210 + Ok((img, w as i32, h as i32)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d11.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | return Ok(paint("input/d11.txt", 0).unwrap().keys().len() as i32); [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] 7 - return Ok(paint("input/d11.txt", 0).unwrap().keys().len() as i32); [INFO] [stdout] 7 + Ok(paint("input/d11.txt", 0).unwrap().keys().len() as i32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d11.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | return Ok(visual_image(&img).iter().collect()); [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] 44 - return Ok(visual_image(&img).iter().collect()); [INFO] [stdout] 44 + Ok(visual_image(&img).iter().collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d11.rs:12:21 [INFO] [stdout] | [INFO] [stdout] 12 | let mut x_min = i32::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 12 - let mut x_min = i32::max_value(); [INFO] [stdout] 12 + let mut x_min = i32::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d11.rs:13:21 [INFO] [stdout] | [INFO] [stdout] 13 | let mut x_max = i32::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 13 - let mut x_max = i32::min_value(); [INFO] [stdout] 13 + let mut x_max = i32::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d11.rs:14:21 [INFO] [stdout] | [INFO] [stdout] 14 | let mut y_min = i32::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 14 - let mut y_min = i32::max_value(); [INFO] [stdout] 14 + let mut y_min = i32::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d11.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | let mut y_max = i32::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 15 - let mut y_max = i32::min_value(); [INFO] [stdout] 15 + let mut y_max = i32::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/d11.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | relative_pt.x = relative_pt.x + x_min.abs(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `relative_pt.x += x_min.abs()` [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: manual implementation of an assign operation [INFO] [stdout] --> src/d11.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | relative_pt.y = relative_pt.y + y_min.abs(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `relative_pt.y += y_min.abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d11.rs:106:17 [INFO] [stdout] | [INFO] [stdout] 106 | / if pixels.contains_key(&str_rep) { [INFO] [stdout] 107 | | current_px = pixels[&str_rep]; [INFO] [stdout] 108 | | } else { [INFO] [stdout] 109 | | pixels.insert(str_rep, 0); [INFO] [stdout] 110 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | / return Body { [INFO] [stdout] 14 | | p: [0; 3], [INFO] [stdout] 15 | | v: [0; 3], [INFO] [stdout] 16 | | }; [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] 13 ~ Body { [INFO] [stdout] 14 + p: [0; 3], [INFO] [stdout] 15 + v: [0; 3], [INFO] [stdout] 16 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: items after a test module [INFO] [stdout] --> src/main.rs:32:1 [INFO] [stdout] | [INFO] [stdout] 32 | mod tests { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 358 | fn main() { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_test_module [INFO] [stdout] = note: `#[warn(clippy::items_after_test_module)]` on by default [INFO] [stdout] = help: move the items to before the test module was defined [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | return common(fuel_required); [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] 5 - return common(fuel_required); [INFO] [stdout] 5 + common(fuel_required) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | return common(recursive_fuel_required); [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] 9 - return common(recursive_fuel_required); [INFO] [stdout] 9 + common(recursive_fuel_required) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | return module_mass / 3 - 2; [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] 13 - return module_mass / 3 - 2; [INFO] [stdout] 13 + module_mass / 3 - 2 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | return current + recursive_fuel_required(¤t); [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 current + recursive_fuel_required(¤t); [INFO] [stdout] 21 + current + recursive_fuel_required(¤t) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d1.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | return Ok(sum); [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] 34 - return Ok(sum); [INFO] [stdout] 34 + Ok(sum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d1.rs:28:36 [INFO] [stdout] | [INFO] [stdout] 28 | for (_, line) in reader.lines().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] = note: `#[warn(clippy::unused_enumerate_index)]` on by default [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 28 - for (_, line) in reader.lines().enumerate() { [INFO] [stdout] 28 + for line in reader.lines() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | return Ok(visible_asteroids); [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] 14 - return Ok(visible_asteroids); [INFO] [stdout] 14 + Ok(visible_asteroids) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | return Ok(energy_sum); [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] 31 - return Ok(energy_sum); [INFO] [stdout] 31 + Ok(energy_sum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `state` doesn't need a mutable reference [INFO] [stdout] --> src/d12.rs:37:34 [INFO] [stdout] | [INFO] [stdout] 37 | let x_state_original = state(&mut bodies, 0); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 37 - let x_state_original = state(&mut bodies, 0); [INFO] [stdout] 37 + let x_state_original = state(&bodies, 0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `state` doesn't need a mutable reference [INFO] [stdout] --> src/d12.rs:38:34 [INFO] [stdout] | [INFO] [stdout] 38 | let y_state_original = state(&mut bodies, 1); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 38 - let y_state_original = state(&mut bodies, 1); [INFO] [stdout] 38 + let y_state_original = state(&bodies, 1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `state` doesn't need a mutable reference [INFO] [stdout] --> src/d12.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | let z_state_original = state(&mut bodies, 2); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 39 - let z_state_original = state(&mut bodies, 2); [INFO] [stdout] 39 + let z_state_original = state(&bodies, 2); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | return (x * y).abs() / gcd(x, y); [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] 77 - return (x * y).abs() / gcd(x, y); [INFO] [stdout] 77 + (x * y).abs() / gcd(x, y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | return res; [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] 88 - return res; [INFO] [stdout] 88 + res [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d12.rs:84:22 [INFO] [stdout] | [INFO] [stdout] 84 | res.push_str(&","); [INFO] [stdout] | ^^^^ help: change this to: `","` [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/d12.rs:86:22 [INFO] [stdout] | [INFO] [stdout] 86 | res.push_str(&","); [INFO] [stdout] | ^^^^ help: change this to: `","` [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 `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d12.rs:101:23 [INFO] [stdout] | [INFO] [stdout] 101 | fn grav_inner(bodies: &mut Vec, i: usize, j: usize, c: 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] 101 - fn grav_inner(bodies: &mut Vec, i: usize, j: usize, c: usize) { [INFO] [stdout] 101 + fn grav_inner(bodies: &mut [Body], i: usize, j: usize, c: usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | return Ok(pt.x * 100 + pt.y); [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 Ok(pt.x * 100 + pt.y); [INFO] [stdout] 21 + Ok(pt.x * 100 + pt.y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | return spin(lut, &f32_keys, index_of_q1, target); [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] 37 - return spin(lut, &f32_keys, index_of_q1, target); [INFO] [stdout] 37 + spin(lut, &f32_keys, index_of_q1, target) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:139:5 [INFO] [stdout] | [INFO] [stdout] 139 | return Ok(bodies); [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] 139 - return Ok(bodies); [INFO] [stdout] 139 + Ok(bodies) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d12.rs:123:36 [INFO] [stdout] | [INFO] [stdout] 123 | for (_, line) in reader.lines().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 123 - for (_, line) in reader.lines().enumerate() { [INFO] [stdout] 123 + for line in reader.lines() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `fire_res` after checking its variant with `is_some` [INFO] [stdout] --> src/d10.rs:53:28 [INFO] [stdout] | [INFO] [stdout] 50 | if fire_res.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = fire_res` [INFO] [stdout] ... [INFO] [stdout] 53 | return fire_res.unwrap(); [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: called `unwrap` on `fire_res` after checking its variant with `is_some` [INFO] [stdout] --> src/d10.rs:62:28 [INFO] [stdout] | [INFO] [stdout] 59 | if fire_res.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = fire_res` [INFO] [stdout] ... [INFO] [stdout] 62 | return fire_res.unwrap(); [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d12.rs:129:13 [INFO] [stdout] | [INFO] [stdout] 129 | let res: i32; [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] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `res` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 129 ~ [INFO] [stdout] 130 ~ let res: i32 = if index == 2 { [INFO] [stdout] 131 ~ coord[(eq + 1)..(coord.len() - 1)].parse::().unwrap() [INFO] [stdout] 132 | } else { [INFO] [stdout] 133 ~ coord[(eq + 1)..].parse::().unwrap() [INFO] [stdout] 134 ~ }; [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/d10.rs:42:15 [INFO] [stdout] | [INFO] [stdout] 42 | f32_keys: &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] 42 - f32_keys: &Vec, [INFO] [stdout] 42 + f32_keys: &[f32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d13.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | return Ok(img.iter().filter(|&v| *v == 2).count() as i32); [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] 9 - return Ok(img.iter().filter(|&v| *v == 2).count() as i32); [INFO] [stdout] 9 + Ok(img.iter().filter(|&v| *v == 2).count() as i32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d10.rs:71:8 [INFO] [stdout] | [INFO] [stdout] 71 | if heap.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!heap.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: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:99:5 [INFO] [stdout] | [INFO] [stdout] 99 | return (station, max_visible, lut); [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] 99 - return (station, max_visible, lut); [INFO] [stdout] 99 + (station, max_visible, lut) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d10.rs:80:10 [INFO] [stdout] | [INFO] [stdout] 80 | img: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 80 ~ img: &mut [u8], [INFO] [stdout] 81 | w: &i32, [INFO] [stdout] ... [INFO] [stdout] 89 | let station_tmp = Point { x, y: y }; [INFO] [stdout] 90 ~ let asteroid_lookup = asteroid_metadata(&mut img.to_owned(), *w, *h, &station_tmp); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d10.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 110 | return asteroid_lut; [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 asteroid_lut; [INFO] [stdout] 110 + asteroid_lut [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/d13.rs:23:42 [INFO] [stdout] | [INFO] [stdout] 23 | print_image(&visual_image(&img), w as usize, h as usize); [INFO] [stdout] | ^^^^^^^^^^ help: try: `w` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/d13.rs:23:54 [INFO] [stdout] | [INFO] [stdout] 23 | print_image(&visual_image(&img), w as usize, h as usize); [INFO] [stdout] | ^^^^^^^^^^ help: try: `h` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d13.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | / return ( [INFO] [stdout] 82 | | img, [INFO] [stdout] 83 | | w as usize, [INFO] [stdout] 84 | | h as usize, [INFO] [stdout] 85 | | ball_x as usize, [INFO] [stdout] 86 | | paddle_x as usize, [INFO] [stdout] 87 | | ); [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 ~ ( [INFO] [stdout] 82 + img, [INFO] [stdout] 83 + w as usize, [INFO] [stdout] 84 + h as usize, [INFO] [stdout] 85 + ball_x as usize, [INFO] [stdout] 86 + paddle_x as usize, [INFO] [stdout] 87 ~ ) [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/d13.rs:46:24 [INFO] [stdout] | [INFO] [stdout] 46 | fn build_image(output: &Vec, last_score: &mut i64) -> (Vec, usize, usize, usize, usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 46 - fn build_image(output: &Vec, last_score: &mut i64) -> (Vec, usize, usize, usize, usize) { [INFO] [stdout] 46 + fn build_image(output: &[i64], last_score: &mut i64) -> (Vec, usize, usize, usize, usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d13.rs:47:21 [INFO] [stdout] | [INFO] [stdout] 47 | let mut x_max = i64::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 47 - let mut x_max = i64::min_value(); [INFO] [stdout] 47 + let mut x_max = i64::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d13.rs:48:21 [INFO] [stdout] | [INFO] [stdout] 48 | let mut y_max = i64::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 48 - let mut y_max = i64::min_value(); [INFO] [stdout] 48 + let mut y_max = i64::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d10.rs:131:37 [INFO] [stdout] | [INFO] [stdout] 131 | let angle = center.angle_to(¤t).to_string(); [INFO] [stdout] | ^^^^^^^^ help: change this to: `current` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d10.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | / if !asteroid_lut.contains_key(&angle) { [INFO] [stdout] 133 | | let mut heap = BinaryHeap::::new(); [INFO] [stdout] 134 | | heap.push(PointDist { [INFO] [stdout] 135 | | point: current.clone(), [INFO] [stdout] ... | [INFO] [stdout] 143 | | }); [INFO] [stdout] 144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d14.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | return Ok(res); [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] 25 - return Ok(res); [INFO] [stdout] 25 + Ok(res) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d14.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | return binary_search(&reactions, low, midpoint, target); [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] 36 - return binary_search(&reactions, low, midpoint, target); [INFO] [stdout] 36 + binary_search(&reactions, low, midpoint, target) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d14.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | return binary_search(&reactions, midpoint, hi, target); [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] 38 - return binary_search(&reactions, midpoint, hi, target); [INFO] [stdout] 38 + binary_search(&reactions, midpoint, hi, target) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d14.rs:33:26 [INFO] [stdout] | [INFO] [stdout] 33 | let qtys = calc_qtys(&reactions, &mut HashMap::new(), midpoint); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `reactions` [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/d14.rs:36:30 [INFO] [stdout] | [INFO] [stdout] 36 | return binary_search(&reactions, low, midpoint, target); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `reactions` [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/d14.rs:38:30 [INFO] [stdout] | [INFO] [stdout] 38 | return binary_search(&reactions, midpoint, hi, target); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `reactions` [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/d14.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 54 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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 creates an owned instance just for comparison [INFO] [stdout] --> src/d14.rs:58:27 [INFO] [stdout] | [INFO] [stdout] 58 | if current.key == "ORE".to_owned() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ORE"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d10.rs:135:24 [INFO] [stdout] | [INFO] [stdout] 135 | point: current.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*current` [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: unneeded `return` statement [INFO] [stdout] --> src/d14.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 148 | return Ok(res); [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] 148 - return Ok(res); [INFO] [stdout] 148 + Ok(res) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d14.rs:127:36 [INFO] [stdout] | [INFO] [stdout] 127 | for (_, line) in reader.lines().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 127 - for (_, line) in reader.lines().enumerate() { [INFO] [stdout] 127 + for line in reader.lines() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d10.rs:141:24 [INFO] [stdout] | [INFO] [stdout] 141 | point: current.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*current` [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/d10.rs:210:5 [INFO] [stdout] | [INFO] [stdout] 210 | return Ok((img, w as i32, h as i32)); [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] 210 - return Ok((img, w as i32, h as i32)); [INFO] [stdout] 210 + Ok((img, w as i32, h as i32)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `lhs_split` [INFO] [stdout] --> src/d14.rs:139:18 [INFO] [stdout] | [INFO] [stdout] 139 | for i in 0..lhs_split.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 139 - for i in 0..lhs_split.len() { [INFO] [stdout] 139 + for in &lhs_split { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d15.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | / return Meta { [INFO] [stdout] 15 | | snapshot, [INFO] [stdout] 16 | | val, [INFO] [stdout] 17 | | depth, [INFO] [stdout] 18 | | }; [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] 14 ~ Meta { [INFO] [stdout] 15 + snapshot, [INFO] [stdout] 16 + val, [INFO] [stdout] 17 + depth, [INFO] [stdout] 18 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d15.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | return Ok(depth); [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] 24 - return Ok(depth); [INFO] [stdout] 24 + Ok(depth) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d15.rs:30:21 [INFO] [stdout] | [INFO] [stdout] 30 | q.push_back((0, oxy_sys_pos.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `oxy_sys_pos` [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/d11.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | return Ok(paint("input/d11.txt", 0).unwrap().keys().len() as i32); [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] 7 - return Ok(paint("input/d11.txt", 0).unwrap().keys().len() as i32); [INFO] [stdout] 7 + Ok(paint("input/d11.txt", 0).unwrap().keys().len() as i32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d11.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | return Ok(visual_image(&img).iter().collect()); [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] 44 - return Ok(visual_image(&img).iter().collect()); [INFO] [stdout] 44 + Ok(visual_image(&img).iter().collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d15.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: usage of a legacy numeric method [INFO] [stdout] --> src/d11.rs:12:21 [INFO] [stdout] | [INFO] [stdout] 12 | let mut x_min = i32::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 12 - let mut x_min = i32::max_value(); [INFO] [stdout] 12 + let mut x_min = i32::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d11.rs:13:21 [INFO] [stdout] | [INFO] [stdout] 13 | let mut x_max = i32::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 13 - let mut x_max = i32::min_value(); [INFO] [stdout] 13 + let mut x_max = i32::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d11.rs:14:21 [INFO] [stdout] | [INFO] [stdout] 14 | let mut y_min = i32::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 14 - let mut y_min = i32::max_value(); [INFO] [stdout] 14 + let mut y_min = i32::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d11.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | let mut y_max = i32::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 15 - let mut y_max = i32::min_value(); [INFO] [stdout] 15 + let mut y_max = i32::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/d11.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | relative_pt.x = relative_pt.x + x_min.abs(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `relative_pt.x += x_min.abs()` [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: length comparison to zero [INFO] [stdout] --> src/d15.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: manual implementation of an assign operation [INFO] [stdout] --> src/d11.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | relative_pt.y = relative_pt.y + y_min.abs(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `relative_pt.y += y_min.abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/d15.rs:94:1 [INFO] [stdout] | [INFO] [stdout] 94 | / fn test_pt( [INFO] [stdout] 95 | | current_move: &(i64, Point), [INFO] [stdout] 96 | | q: &mut VecDeque<(i64, Point)>, [INFO] [stdout] 97 | | cache: &mut HashMap, [INFO] [stdout] ... | [INFO] [stdout] 102 | | oxy_sys_pos: &mut Point, [INFO] [stdout] 103 | | ) -> bool { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d15.rs:140:5 [INFO] [stdout] | [INFO] [stdout] 140 | 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] 140 - return false; [INFO] [stdout] 140 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d15.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | let test_pt: Point; [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 `test_pt` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 104 ~ [INFO] [stdout] 105 ~ let test_pt: Point = match direction { [INFO] [stdout] 106 | 1 => { [INFO] [stdout] 107 ~ Point::new(current_move.1.x, current_move.1.y - 1) [INFO] [stdout] 108 | } [INFO] [stdout] 109 | 2 => { [INFO] [stdout] 110 ~ Point::new(current_move.1.x, current_move.1.y + 1) [INFO] [stdout] 111 | } [INFO] [stdout] 112 | 3 => { [INFO] [stdout] 113 ~ Point::new(current_move.1.x - 1, current_move.1.y) [INFO] [stdout] 114 | } [INFO] [stdout] 115 | 4 => { [INFO] [stdout] 116 ~ Point::new(current_move.1.x + 1, current_move.1.y) [INFO] [stdout] 117 | } [INFO] [stdout] 118 | _ => panic!("Illegal direction"), [INFO] [stdout] 119 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d15.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | / if !cache.contains_key(&test_pt.to_string()) { [INFO] [stdout] 121 | | cpu.enqueue_input(direction); [INFO] [stdout] 122 | | cpu.execute(); [INFO] [stdout] 123 | | let pixel = cpu.last_output.unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 138 | | cpu.load_snapshot(before_test_snap.snapshot()); [INFO] [stdout] 139 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 120 ~ if let std::collections::hash_map::Entry::Vacant(e) = cache.entry(test_pt.to_string()) { [INFO] [stdout] 121 + cpu.enqueue_input(direction); [INFO] [stdout] 122 + cpu.execute(); [INFO] [stdout] 123 + let pixel = cpu.last_output.unwrap(); [INFO] [stdout] 124 + e.insert(Meta::new(cpu.snapshot(), pixel, current_move.0)); [INFO] [stdout] 125 + if pixel == 1 { [INFO] [stdout] 126 + // space [INFO] [stdout] 127 + q.push_front((current_move.0 + 1, test_pt.clone())); [INFO] [stdout] 128 + } else if pixel == 2 { [INFO] [stdout] 129 + // oxygen sys [INFO] [stdout] 130 + *oxy_sys_pos = test_pt.clone(); [INFO] [stdout] 131 + if greedy_exit { [INFO] [stdout] 132 + return true; [INFO] [stdout] 133 + } [INFO] [stdout] 134 + } [INFO] [stdout] 135 + cpu.load_snapshot(before_test_snap.snapshot()); [INFO] [stdout] 136 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d11.rs:106:17 [INFO] [stdout] | [INFO] [stdout] 106 | / if pixels.contains_key(&str_rep) { [INFO] [stdout] 107 | | current_px = pixels[&str_rep]; [INFO] [stdout] 108 | | } else { [INFO] [stdout] 109 | | pixels.insert(str_rep, 0); [INFO] [stdout] 110 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | / return Body { [INFO] [stdout] 14 | | p: [0; 3], [INFO] [stdout] 15 | | v: [0; 3], [INFO] [stdout] 16 | | }; [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] 13 ~ Body { [INFO] [stdout] 14 + p: [0; 3], [INFO] [stdout] 15 + v: [0; 3], [INFO] [stdout] 16 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | return Ok(energy_sum); [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] 31 - return Ok(energy_sum); [INFO] [stdout] 31 + Ok(energy_sum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d15.rs:130:47 [INFO] [stdout] | [INFO] [stdout] 130 | q.push_front((current_move.0 + 1, test_pt.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `test_pt` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d15.rs:133:28 [INFO] [stdout] | [INFO] [stdout] 133 | *oxy_sys_pos = test_pt.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `test_pt` [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 expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/d16.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | Ok((&output_str[..8]).to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `output_str[..8]` [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: the function `state` doesn't need a mutable reference [INFO] [stdout] --> src/d12.rs:37:34 [INFO] [stdout] | [INFO] [stdout] 37 | let x_state_original = state(&mut bodies, 0); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 37 - let x_state_original = state(&mut bodies, 0); [INFO] [stdout] 37 + let x_state_original = state(&bodies, 0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stdout] --> src/d16.rs:29:67 [INFO] [stdout] | [INFO] [stdout] 29 | let mut segment: Vec = big_input[offset..big_input.len()].iter().cloned().collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stdout] = note: `#[warn(clippy::iter_cloned_collect)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `state` doesn't need a mutable reference [INFO] [stdout] --> src/d12.rs:38:34 [INFO] [stdout] | [INFO] [stdout] 38 | let y_state_original = state(&mut bodies, 1); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 38 - let y_state_original = state(&mut bodies, 1); [INFO] [stdout] 38 + let y_state_original = state(&bodies, 1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `state` doesn't need a mutable reference [INFO] [stdout] --> src/d12.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | let z_state_original = state(&mut bodies, 2); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 39 - let z_state_original = state(&mut bodies, 2); [INFO] [stdout] 39 + let z_state_original = state(&bodies, 2); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> src/d16.rs:32:52 [INFO] [stdout] | [INFO] [stdout] 32 | let mut last_sum = segment.iter().cloned().fold(0, |acc, x| acc + x); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [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: manual implementation of an assign operation [INFO] [stdout] --> src/d16.rs:35:13 [INFO] [stdout] | [INFO] [stdout] 35 | last_sum = last_sum - segment[depth - 1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `last_sum -= segment[depth - 1]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `segment` [INFO] [stdout] --> src/d16.rs:42:14 [INFO] [stdout] | [INFO] [stdout] 42 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 42 - for i in 0..8 { [INFO] [stdout] 42 + for in segment.iter().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | return (x * y).abs() / gcd(x, y); [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] 77 - return (x * y).abs() / gcd(x, y); [INFO] [stdout] 77 + (x * y).abs() / gcd(x, y) [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/d16.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | fn phase(input: &Vec) -> 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] 48 - fn phase(input: &Vec) -> Vec { [INFO] [stdout] 48 + fn phase(input: &[char]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | return res; [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] 88 - return res; [INFO] [stdout] 88 + res [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d12.rs:84:22 [INFO] [stdout] | [INFO] [stdout] 84 | res.push_str(&","); [INFO] [stdout] | ^^^^ help: change this to: `","` [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/d12.rs:86:22 [INFO] [stdout] | [INFO] [stdout] 86 | res.push_str(&","); [INFO] [stdout] | ^^^^ help: change this to: `","` [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: manual implementation of an assign operation [INFO] [stdout] --> src/d16.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | sign = sign * -1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `sign *= -1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/d16.rs:63:20 [INFO] [stdout] | [INFO] [stdout] 63 | sign = sign * -1; [INFO] [stdout] | ^^^^^^^^^ help: consider using: `-sign` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d12.rs:101:23 [INFO] [stdout] | [INFO] [stdout] 101 | fn grav_inner(bodies: &mut Vec, i: usize, j: usize, c: 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] 101 - fn grav_inner(bodies: &mut Vec, i: usize, j: usize, c: usize) { [INFO] [stdout] 101 + fn grav_inner(bodies: &mut [Body], i: usize, j: usize, c: usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | return Ok(res); [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] 15 - return Ok(res); [INFO] [stdout] 15 + Ok(res) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d12.rs:139:5 [INFO] [stdout] | [INFO] [stdout] 139 | return Ok(bodies); [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] 139 - return Ok(bodies); [INFO] [stdout] 139 + Ok(bodies) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d12.rs:123:36 [INFO] [stdout] | [INFO] [stdout] 123 | for (_, line) in reader.lines().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 123 - for (_, line) in reader.lines().enumerate() { [INFO] [stdout] 123 + for line in reader.lines() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d12.rs:129:13 [INFO] [stdout] | [INFO] [stdout] 129 | let res: i32; [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] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `res` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 129 ~ [INFO] [stdout] 130 ~ let res: i32 = if index == 2 { [INFO] [stdout] 131 ~ coord[(eq + 1)..(coord.len() - 1)].parse::().unwrap() [INFO] [stdout] 132 | } else { [INFO] [stdout] 133 ~ coord[(eq + 1)..].parse::().unwrap() [INFO] [stdout] 134 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/d17.rs:56:23 [INFO] [stdout] | [INFO] [stdout] 56 | fn condense(sequence: &String, parts: &Vec) -> String { [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] 56 - fn condense(sequence: &String, parts: &Vec) -> String { [INFO] [stdout] 56 + fn condense(sequence: &str, parts: &Vec) -> String { [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/d17.rs:56:39 [INFO] [stdout] | [INFO] [stdout] 56 | fn condense(sequence: &String, parts: &Vec) -> String { [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] 56 - fn condense(sequence: &String, parts: &Vec) -> String { [INFO] [stdout] 56 + fn condense(sequence: &String, parts: &[String]) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d13.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | return Ok(img.iter().filter(|&v| *v == 2).count() as i32); [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] 9 - return Ok(img.iter().filter(|&v| *v == 2).count() as i32); [INFO] [stdout] 9 + Ok(img.iter().filter(|&v| *v == 2).count() as i32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:156:5 [INFO] [stdout] | [INFO] [stdout] 156 | return (parts, current_sequence); [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] 156 - return (parts, current_sequence); [INFO] [stdout] 156 + (parts, current_sequence) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d17.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | let range: std::ops::Range; [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 `range` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 86 ~ [INFO] [stdout] 87 ~ let range: std::ops::Range = match part { [INFO] [stdout] 88 | 0 => { [INFO] [stdout] 89 ~ a..sorted_substrs.len() [INFO] [stdout] 90 | } [INFO] [stdout] 91 | 1 => { [INFO] [stdout] 92 ~ b..sorted_substrs.len() [INFO] [stdout] 93 | } [INFO] [stdout] 94 | 2 => { [INFO] [stdout] 95 ~ c..sorted_substrs.len() [INFO] [stdout] 96 | } [INFO] [stdout] 97 | _ => panic!("wtf"), [INFO] [stdout] 98 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/d13.rs:23:42 [INFO] [stdout] | [INFO] [stdout] 23 | print_image(&visual_image(&img), w as usize, h as usize); [INFO] [stdout] | ^^^^^^^^^^ help: try: `w` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/d13.rs:23:54 [INFO] [stdout] | [INFO] [stdout] 23 | print_image(&visual_image(&img), w as usize, h as usize); [INFO] [stdout] | ^^^^^^^^^^ help: try: `h` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d13.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | / return ( [INFO] [stdout] 82 | | img, [INFO] [stdout] 83 | | w as usize, [INFO] [stdout] 84 | | h as usize, [INFO] [stdout] 85 | | ball_x as usize, [INFO] [stdout] 86 | | paddle_x as usize, [INFO] [stdout] 87 | | ); [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 ~ ( [INFO] [stdout] 82 + img, [INFO] [stdout] 83 + w as usize, [INFO] [stdout] 84 + h as usize, [INFO] [stdout] 85 + ball_x as usize, [INFO] [stdout] 86 + paddle_x as usize, [INFO] [stdout] 87 ~ ) [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/d13.rs:46:24 [INFO] [stdout] | [INFO] [stdout] 46 | fn build_image(output: &Vec, last_score: &mut i64) -> (Vec, usize, usize, usize, usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 46 - fn build_image(output: &Vec, last_score: &mut i64) -> (Vec, usize, usize, usize, usize) { [INFO] [stdout] 46 + fn build_image(output: &[i64], last_score: &mut i64) -> (Vec, usize, usize, usize, usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d13.rs:47:21 [INFO] [stdout] | [INFO] [stdout] 47 | let mut x_max = i64::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 47 - let mut x_max = i64::min_value(); [INFO] [stdout] 47 + let mut x_max = i64::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d13.rs:48:21 [INFO] [stdout] | [INFO] [stdout] 48 | let mut y_max = i64::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 48 - let mut y_max = i64::min_value(); [INFO] [stdout] 48 + let mut y_max = i64::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d14.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | return Ok(res); [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] 25 - return Ok(res); [INFO] [stdout] 25 + Ok(res) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/d17.rs:159:22 [INFO] [stdout] | [INFO] [stdout] 159 | fn asciify(sequence: &String) -> 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] 159 - fn asciify(sequence: &String) -> Vec { [INFO] [stdout] 159 + fn asciify(sequence: &str) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/d17.rs:190:5 [INFO] [stdout] | [INFO] [stdout] 190 | / match val { [INFO] [stdout] 191 | | 76 | 82 | 65 | 66 | 67 => true, [INFO] [stdout] 192 | | _ => false, [INFO] [stdout] 193 | | } [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] 190 - match val { [INFO] [stdout] 191 - 76 | 82 | 65 | 66 | 67 => true, [INFO] [stdout] 192 - _ => false, [INFO] [stdout] 193 - } [INFO] [stdout] 190 + matches!(val, 76 | 82 | 65 | 66 | 67) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d14.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | return binary_search(&reactions, low, midpoint, target); [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] 36 - return binary_search(&reactions, low, midpoint, target); [INFO] [stdout] 36 + binary_search(&reactions, low, midpoint, target) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d14.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | return binary_search(&reactions, midpoint, hi, target); [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] 38 - return binary_search(&reactions, midpoint, hi, target); [INFO] [stdout] 38 + binary_search(&reactions, midpoint, hi, target) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d14.rs:33:26 [INFO] [stdout] | [INFO] [stdout] 33 | let qtys = calc_qtys(&reactions, &mut HashMap::new(), midpoint); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `reactions` [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/d14.rs:36:30 [INFO] [stdout] | [INFO] [stdout] 36 | return binary_search(&reactions, low, midpoint, target); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `reactions` [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/d17.rs:250:5 [INFO] [stdout] | [INFO] [stdout] 250 | return sorted_subs; [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] 250 - return sorted_subs; [INFO] [stdout] 250 + sorted_subs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d14.rs:38:30 [INFO] [stdout] | [INFO] [stdout] 38 | return binary_search(&reactions, midpoint, hi, target); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `reactions` [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/d17.rs:215:28 [INFO] [stdout] | [INFO] [stdout] 215 | fn longest_repeated(input: &String, min_len: usize, max_len: usize) -> 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] 215 - fn longest_repeated(input: &String, min_len: usize, max_len: usize) -> Vec { [INFO] [stdout] 215 + fn longest_repeated(input: &str, min_len: usize, max_len: usize) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d14.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 54 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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 creates an owned instance just for comparison [INFO] [stdout] --> src/d14.rs:58:27 [INFO] [stdout] | [INFO] [stdout] 58 | if current.key == "ORE".to_owned() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ORE"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:331:5 [INFO] [stdout] | [INFO] [stdout] 331 | return str_rep; [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] 331 - return str_rep; [INFO] [stdout] 331 + str_rep [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d14.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 148 | return Ok(res); [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] 148 - return Ok(res); [INFO] [stdout] 148 + Ok(res) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d17.rs:310:38 [INFO] [stdout] | [INFO] [stdout] 310 | while let Some(step_char) = step(&img, w, h, &mut pos, &mut dir) { [INFO] [stdout] | ^^^^ help: change this to: `img` [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: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d14.rs:127:36 [INFO] [stdout] | [INFO] [stdout] 127 | for (_, line) in reader.lines().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 127 - for (_, line) in reader.lines().enumerate() { [INFO] [stdout] 127 + for line in reader.lines() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:374:9 [INFO] [stdout] | [INFO] [stdout] 374 | return Some('F'); [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] 374 - return Some('F'); [INFO] [stdout] 374 + Some('F') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:387:17 [INFO] [stdout] | [INFO] [stdout] 387 | return None; [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] 387 - return None; [INFO] [stdout] 387 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `lhs_split` [INFO] [stdout] --> src/d14.rs:139:18 [INFO] [stdout] | [INFO] [stdout] 139 | for i in 0..lhs_split.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 139 - for i in 0..lhs_split.len() { [INFO] [stdout] 139 + for in &lhs_split { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:399:17 [INFO] [stdout] | [INFO] [stdout] 399 | return None; [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] 399 - return None; [INFO] [stdout] 399 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:411:17 [INFO] [stdout] | [INFO] [stdout] 411 | return None; [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] 411 - return None; [INFO] [stdout] 411 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:423:17 [INFO] [stdout] | [INFO] [stdout] 423 | return None; [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] 423 - return None; [INFO] [stdout] 423 + None [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/d17.rs:334:14 [INFO] [stdout] | [INFO] [stdout] 334 | fn step(img: &Vec, w: usize, h: usize, pos: &mut Point, dir: &mut i32) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 334 - fn step(img: &Vec, w: usize, h: usize, pos: &mut Point, dir: &mut i32) -> Option { [INFO] [stdout] 334 + fn step(img: &[i64], w: usize, h: usize, pos: &mut Point, dir: &mut i32) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d15.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | / return Meta { [INFO] [stdout] 15 | | snapshot, [INFO] [stdout] 16 | | val, [INFO] [stdout] 17 | | depth, [INFO] [stdout] 18 | | }; [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] 14 ~ Meta { [INFO] [stdout] 15 + snapshot, [INFO] [stdout] 16 + val, [INFO] [stdout] 17 + depth, [INFO] [stdout] 18 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d15.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | return Ok(depth); [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] 24 - return Ok(depth); [INFO] [stdout] 24 + Ok(depth) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d15.rs:30:21 [INFO] [stdout] | [INFO] [stdout] 30 | q.push_back((0, oxy_sys_pos.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `oxy_sys_pos` [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: length comparison to zero [INFO] [stdout] --> src/d15.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: unneeded late initialization [INFO] [stdout] --> src/d17.rs:351:5 [INFO] [stdout] | [INFO] [stdout] 351 | let forward: Point; [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 `forward` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 351 ~ [INFO] [stdout] 352 ~ let forward: Point = match dir { [INFO] [stdout] 353 | // up [INFO] [stdout] 354 | 0 => { [INFO] [stdout] 355 ~ u [INFO] [stdout] 356 | } [INFO] [stdout] 357 | // right [INFO] [stdout] 358 | 1 | -3 => { [INFO] [stdout] 359 ~ r [INFO] [stdout] 360 | } [INFO] [stdout] 361 | // down [INFO] [stdout] 362 | 2 | -2 => { [INFO] [stdout] 363 ~ d [INFO] [stdout] 364 | } [INFO] [stdout] 365 | // left [INFO] [stdout] 366 | 3 | -1 => { [INFO] [stdout] 367 ~ l [INFO] [stdout] 368 | } [INFO] [stdout] 369 | _ => panic!("wtf"), [INFO] [stdout] 370 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d17.rs:373:16 [INFO] [stdout] | [INFO] [stdout] 373 | *pos = forward.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `forward` [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: length comparison to zero [INFO] [stdout] --> src/d15.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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 function has too many arguments (8/7) [INFO] [stdout] --> src/d15.rs:94:1 [INFO] [stdout] | [INFO] [stdout] 94 | / fn test_pt( [INFO] [stdout] 95 | | current_move: &(i64, Point), [INFO] [stdout] 96 | | q: &mut VecDeque<(i64, Point)>, [INFO] [stdout] 97 | | cache: &mut HashMap, [INFO] [stdout] ... | [INFO] [stdout] 102 | | oxy_sys_pos: &mut Point, [INFO] [stdout] 103 | | ) -> bool { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d15.rs:140:5 [INFO] [stdout] | [INFO] [stdout] 140 | 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] 140 - return false; [INFO] [stdout] 140 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d15.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | let test_pt: Point; [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 `test_pt` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 104 ~ [INFO] [stdout] 105 ~ let test_pt: Point = match direction { [INFO] [stdout] 106 | 1 => { [INFO] [stdout] 107 ~ Point::new(current_move.1.x, current_move.1.y - 1) [INFO] [stdout] 108 | } [INFO] [stdout] 109 | 2 => { [INFO] [stdout] 110 ~ Point::new(current_move.1.x, current_move.1.y + 1) [INFO] [stdout] 111 | } [INFO] [stdout] 112 | 3 => { [INFO] [stdout] 113 ~ Point::new(current_move.1.x - 1, current_move.1.y) [INFO] [stdout] 114 | } [INFO] [stdout] 115 | 4 => { [INFO] [stdout] 116 ~ Point::new(current_move.1.x + 1, current_move.1.y) [INFO] [stdout] 117 | } [INFO] [stdout] 118 | _ => panic!("Illegal direction"), [INFO] [stdout] 119 ~ }; [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/d17.rs:430:23 [INFO] [stdout] | [INFO] [stdout] 430 | fn intersections(img: &Vec, w: usize, h: usize) -> 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] 430 - fn intersections(img: &Vec, w: usize, h: usize) -> Vec { [INFO] [stdout] 430 + fn intersections(img: &[i64], w: usize, h: usize) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d15.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | / if !cache.contains_key(&test_pt.to_string()) { [INFO] [stdout] 121 | | cpu.enqueue_input(direction); [INFO] [stdout] 122 | | cpu.execute(); [INFO] [stdout] 123 | | let pixel = cpu.last_output.unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 138 | | cpu.load_snapshot(before_test_snap.snapshot()); [INFO] [stdout] 139 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 120 ~ if let std::collections::hash_map::Entry::Vacant(e) = cache.entry(test_pt.to_string()) { [INFO] [stdout] 121 + cpu.enqueue_input(direction); [INFO] [stdout] 122 + cpu.execute(); [INFO] [stdout] 123 + let pixel = cpu.last_output.unwrap(); [INFO] [stdout] 124 + e.insert(Meta::new(cpu.snapshot(), pixel, current_move.0)); [INFO] [stdout] 125 + if pixel == 1 { [INFO] [stdout] 126 + // space [INFO] [stdout] 127 + q.push_front((current_move.0 + 1, test_pt.clone())); [INFO] [stdout] 128 + } else if pixel == 2 { [INFO] [stdout] 129 + // oxygen sys [INFO] [stdout] 130 + *oxy_sys_pos = test_pt.clone(); [INFO] [stdout] 131 + if greedy_exit { [INFO] [stdout] 132 + return true; [INFO] [stdout] 133 + } [INFO] [stdout] 134 + } [INFO] [stdout] 135 + cpu.load_snapshot(before_test_snap.snapshot()); [INFO] [stdout] 136 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d15.rs:130:47 [INFO] [stdout] | [INFO] [stdout] 130 | q.push_front((current_move.0 + 1, test_pt.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `test_pt` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d15.rs:133:28 [INFO] [stdout] | [INFO] [stdout] 133 | *oxy_sys_pos = test_pt.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `test_pt` [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 expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/d16.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | Ok((&output_str[..8]).to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `output_str[..8]` [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: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stdout] --> src/d16.rs:29:67 [INFO] [stdout] | [INFO] [stdout] 29 | let mut segment: Vec = big_input[offset..big_input.len()].iter().cloned().collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stdout] = note: `#[warn(clippy::iter_cloned_collect)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | / return MapSequence { [INFO] [stdout] 28 | | cost: 0, [INFO] [stdout] 29 | | keys: HashSet::new(), [INFO] [stdout] 30 | | }; [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] 27 ~ MapSequence { [INFO] [stdout] 28 + cost: 0, [INFO] [stdout] 29 + keys: HashSet::new(), [INFO] [stdout] 30 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | 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] 39 - return true; [INFO] [stdout] 39 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | 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] 48 - return true; [INFO] [stdout] 48 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> src/d16.rs:32:52 [INFO] [stdout] | [INFO] [stdout] 32 | let mut last_sum = segment.iter().cloned().fold(0, |acc, x| acc + x); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d18.rs:44:36 [INFO] [stdout] | [INFO] [stdout] 44 | if !self.keys.contains(&k) { [INFO] [stdout] | ^^ help: change this to: `k` [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: manual implementation of an assign operation [INFO] [stdout] --> src/d16.rs:35:13 [INFO] [stdout] | [INFO] [stdout] 35 | last_sum = last_sum - segment[depth - 1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `last_sum -= segment[depth - 1]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's keys [INFO] [stdout] --> src/d18.rs:61:25 [INFO] [stdout] | [INFO] [stdout] 61 | for (key, _) in &map_path.keys { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 61 - for (key, _) in &map_path.keys { [INFO] [stdout] 61 + for key in map_path.keys.keys() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `segment` [INFO] [stdout] --> src/d16.rs:42:14 [INFO] [stdout] | [INFO] [stdout] 42 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 42 - for i in 0..8 { [INFO] [stdout] 42 + for in segment.iter().take(8) { [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/d16.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | fn phase(input: &Vec) -> 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] 48 - fn phase(input: &Vec) -> Vec { [INFO] [stdout] 48 + fn phase(input: &[char]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/d16.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | sign = sign * -1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `sign *= -1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/d16.rs:63:20 [INFO] [stdout] | [INFO] [stdout] 63 | sign = sign * -1; [INFO] [stdout] | ^^^^^^^^^ help: consider using: `-sign` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | / return MapPath { [INFO] [stdout] 83 | | from, [INFO] [stdout] 84 | | to, [INFO] [stdout] 85 | | cost: 0, [INFO] [stdout] 86 | | keys: HashMap::new(), [INFO] [stdout] 87 | | doors: HashMap::new(), [INFO] [stdout] 88 | | }; [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] 82 ~ MapPath { [INFO] [stdout] 83 + from, [INFO] [stdout] 84 + to, [INFO] [stdout] 85 + cost: 0, [INFO] [stdout] 86 + keys: HashMap::new(), [INFO] [stdout] 87 + doors: HashMap::new(), [INFO] [stdout] 88 ~ } [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/d18.rs:93:16 [INFO] [stdout] | [INFO] [stdout] 93 | imgs_luts: &Vec<(Vec, HashMap)>, [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] 93 - imgs_luts: &Vec<(Vec, HashMap)>, [INFO] [stdout] 93 + imgs_luts: &[(Vec, HashMap)], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/d18.rs:128:78 [INFO] [stdout] | [INFO] [stdout] 128 | let mut indexable_keys: Vec = imgs_luts[quad].1.keys().cloned().map(|x| x).collect(); [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: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | return Ok(res); [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] 15 - return Ok(res); [INFO] [stdout] 15 + Ok(res) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/d18.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 155 | positions.push('@'); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec!['@';SIZE]` [INFO] [stdout] = help: or `positions.extend(std::iter::repeat_n('@', SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] = note: `#[warn(clippy::same_item_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/d17.rs:56:23 [INFO] [stdout] | [INFO] [stdout] 56 | fn condense(sequence: &String, parts: &Vec) -> String { [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] 56 - fn condense(sequence: &String, parts: &Vec) -> String { [INFO] [stdout] 56 + fn condense(sequence: &str, parts: &Vec) -> String { [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/d17.rs:56:39 [INFO] [stdout] | [INFO] [stdout] 56 | fn condense(sequence: &String, parts: &Vec) -> String { [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] 56 - fn condense(sequence: &String, parts: &Vec) -> String { [INFO] [stdout] 56 + fn condense(sequence: &String, parts: &[String]) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d18.rs:173:25 [INFO] [stdout] | [INFO] [stdout] 173 | min_sequence.cost = usize::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 173 - min_sequence.cost = usize::max_value(); [INFO] [stdout] 173 + min_sequence.cost = usize::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d18.rs:176:12 [INFO] [stdout] | [INFO] [stdout] 176 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:156:5 [INFO] [stdout] | [INFO] [stdout] 156 | return (parts, current_sequence); [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] 156 - return (parts, current_sequence); [INFO] [stdout] 156 + (parts, current_sequence) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d17.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | let range: std::ops::Range; [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 `range` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 86 ~ [INFO] [stdout] 87 ~ let range: std::ops::Range = match part { [INFO] [stdout] 88 | 0 => { [INFO] [stdout] 89 ~ a..sorted_substrs.len() [INFO] [stdout] 90 | } [INFO] [stdout] 91 | 1 => { [INFO] [stdout] 92 ~ b..sorted_substrs.len() [INFO] [stdout] 93 | } [INFO] [stdout] 94 | 2 => { [INFO] [stdout] 95 ~ c..sorted_substrs.len() [INFO] [stdout] 96 | } [INFO] [stdout] 97 | _ => panic!("wtf"), [INFO] [stdout] 98 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `quad` is only used to index `positions` [INFO] [stdout] --> src/d18.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | for quad in 0..4 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 202 - for quad in 0..4 { [INFO] [stdout] 202 + for in positions.iter().take(4) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d18.rs:218:47 [INFO] [stdout] | [INFO] [stdout] 218 | if !current_seq.keys.contains(&destination) { [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `destination` [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/d17.rs:159:22 [INFO] [stdout] | [INFO] [stdout] 159 | fn asciify(sequence: &String) -> 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] 159 - fn asciify(sequence: &String) -> Vec { [INFO] [stdout] 159 + fn asciify(sequence: &str) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/d17.rs:190:5 [INFO] [stdout] | [INFO] [stdout] 190 | / match val { [INFO] [stdout] 191 | | 76 | 82 | 65 | 66 | 67 => true, [INFO] [stdout] 192 | | _ => false, [INFO] [stdout] 193 | | } [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] 190 - match val { [INFO] [stdout] 191 - 76 | 82 | 65 | 66 | 67 => true, [INFO] [stdout] 192 - _ => false, [INFO] [stdout] 193 - } [INFO] [stdout] 190 + matches!(val, 76 | 82 | 65 | 66 | 67) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d18.rs:267:56 [INFO] [stdout] | [INFO] [stdout] 267 | path_memo.insert(start_from_to_key, calc_paths(&img, w, h, lut, from, to)); [INFO] [stdout] | ^^^^ help: change this to: `img` [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/d18.rs:272:64 [INFO] [stdout] | [INFO] [stdout] 272 | path_memo.insert(from_to_key(from, to), calc_paths(&img, w, h, lut, from, to)); [INFO] [stdout] | ^^^^ help: change this to: `img` [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/d17.rs:250:5 [INFO] [stdout] | [INFO] [stdout] 250 | return sorted_subs; [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] 250 - return sorted_subs; [INFO] [stdout] 250 + sorted_subs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/d17.rs:215:28 [INFO] [stdout] | [INFO] [stdout] 215 | fn longest_repeated(input: &String, min_len: usize, max_len: usize) -> 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] 215 - fn longest_repeated(input: &String, min_len: usize, max_len: usize) -> Vec { [INFO] [stdout] 215 + fn longest_repeated(input: &str, min_len: usize, max_len: usize) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d18.rs:285:25 [INFO] [stdout] | [INFO] [stdout] 285 | min_sequence.cost = usize::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 285 - min_sequence.cost = usize::max_value(); [INFO] [stdout] 285 + min_sequence.cost = usize::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d18.rs:288:12 [INFO] [stdout] | [INFO] [stdout] 288 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d18.rs:322:43 [INFO] [stdout] | [INFO] [stdout] 322 | if !current_seq.keys.contains(&destination) { [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `destination` [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/d17.rs:331:5 [INFO] [stdout] | [INFO] [stdout] 331 | return str_rep; [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] 331 - return str_rep; [INFO] [stdout] 331 + str_rep [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/d18.rs:363:12 [INFO] [stdout] | [INFO] [stdout] 363 | if (!has_key_to_door && !key_on_path) [INFO] [stdout] | ____________^ [INFO] [stdout] 364 | | || (!has_key_to_door && key_on_path && door_before_key) [INFO] [stdout] | |___________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 363 - if (!has_key_to_door && !key_on_path) [INFO] [stdout] 364 - || (!has_key_to_door && key_on_path && door_before_key) [INFO] [stdout] 363 + if !(has_key_to_door || key_on_path && !door_before_key) [INFO] [stdout] | [INFO] [stdout] 363 - if (!has_key_to_door && !key_on_path) [INFO] [stdout] 364 - || (!has_key_to_door && key_on_path && door_before_key) [INFO] [stdout] 363 + if !has_key_to_door && !key_on_path || !has_key_to_door && door_before_key [INFO] [stdout] | [INFO] [stdout] 363 - if (!has_key_to_door && !key_on_path) [INFO] [stdout] 364 - || (!has_key_to_door && key_on_path && door_before_key) [INFO] [stdout] 363 + if (door_before_key || !key_on_path) && !has_key_to_door [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:369:5 [INFO] [stdout] | [INFO] [stdout] 369 | 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] 369 - return true; [INFO] [stdout] 369 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d17.rs:310:38 [INFO] [stdout] | [INFO] [stdout] 310 | while let Some(step_char) = step(&img, w, h, &mut pos, &mut dir) { [INFO] [stdout] | ^^^^ help: change this to: `img` [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/d18.rs:375:5 [INFO] [stdout] | [INFO] [stdout] 375 | return from_to_key_c(from_c, to_c); [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] 375 - return from_to_key_c(from_c, to_c); [INFO] [stdout] 375 + from_to_key_c(from_c, to_c) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:383:5 [INFO] [stdout] | [INFO] [stdout] 383 | return from_to_key; [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] 383 - return from_to_key; [INFO] [stdout] 383 + from_to_key [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/d18.rs:387:10 [INFO] [stdout] | [INFO] [stdout] 387 | img: &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] 387 - img: &Vec, [INFO] [stdout] 387 + img: &[char], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:374:9 [INFO] [stdout] | [INFO] [stdout] 374 | return Some('F'); [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] 374 - return Some('F'); [INFO] [stdout] 374 + Some('F') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:387:17 [INFO] [stdout] | [INFO] [stdout] 387 | return None; [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] 387 - return None; [INFO] [stdout] 387 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:399:17 [INFO] [stdout] | [INFO] [stdout] 399 | return None; [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] 399 - return None; [INFO] [stdout] 399 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d17.rs:411:17 [INFO] [stdout] | [INFO] [stdout] 411 | return None; [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] 411 - return None; [INFO] [stdout] 411 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d18.rs:400:46 [INFO] [stdout] | [INFO] [stdout] 400 | q.push_back((MapPath::new(from_c, to_c), from_pt.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `from_pt` [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/d17.rs:423:17 [INFO] [stdout] | [INFO] [stdout] 423 | return None; [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] 423 - return None; [INFO] [stdout] 423 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d18.rs:402:12 [INFO] [stdout] | [INFO] [stdout] 402 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d17.rs:334:14 [INFO] [stdout] | [INFO] [stdout] 334 | fn step(img: &Vec, w: usize, h: usize, pos: &mut Point, dir: &mut i32) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 334 - fn step(img: &Vec, w: usize, h: usize, pos: &mut Point, dir: &mut i32) -> Option { [INFO] [stdout] 334 + fn step(img: &[i64], w: usize, h: usize, pos: &mut Point, dir: &mut i32) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/d18.rs:411:9 [INFO] [stdout] | [INFO] [stdout] 411 | / if is_upper(current_c) { [INFO] [stdout] 412 | | if !current_state.0.doors.contains_key(¤t_c) { [INFO] [stdout] 413 | | current_state [INFO] [stdout] 414 | | .0 [INFO] [stdout] ... | [INFO] [stdout] 418 | | } [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] 411 ~ if is_upper(current_c) [INFO] [stdout] 412 ~ && !current_state.0.doors.contains_key(¤t_c) { [INFO] [stdout] 413 | current_state [INFO] [stdout] ... [INFO] [stdout] 416 | .insert(current_c, current_state.0.cost); [INFO] [stdout] 417 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d17.rs:351:5 [INFO] [stdout] | [INFO] [stdout] 351 | let forward: Point; [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 `forward` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 351 ~ [INFO] [stdout] 352 ~ let forward: Point = match dir { [INFO] [stdout] 353 | // up [INFO] [stdout] 354 | 0 => { [INFO] [stdout] 355 ~ u [INFO] [stdout] 356 | } [INFO] [stdout] 357 | // right [INFO] [stdout] 358 | 1 | -3 => { [INFO] [stdout] 359 ~ r [INFO] [stdout] 360 | } [INFO] [stdout] 361 | // down [INFO] [stdout] 362 | 2 | -2 => { [INFO] [stdout] 363 ~ d [INFO] [stdout] 364 | } [INFO] [stdout] 365 | // left [INFO] [stdout] 366 | 3 | -1 => { [INFO] [stdout] 367 ~ l [INFO] [stdout] 368 | } [INFO] [stdout] 369 | _ => panic!("wtf"), [INFO] [stdout] 370 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/d18.rs:419:9 [INFO] [stdout] | [INFO] [stdout] 419 | / if is_lower(current_c) { [INFO] [stdout] 420 | | if !current_state.0.keys.contains_key(¤t_c) { [INFO] [stdout] 421 | | current_state.0.keys.insert(current_c, current_state.0.cost); [INFO] [stdout] 422 | | } [INFO] [stdout] 423 | | } [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] 419 ~ if is_lower(current_c) [INFO] [stdout] 420 ~ && !current_state.0.keys.contains_key(¤t_c) { [INFO] [stdout] 421 | current_state.0.keys.insert(current_c, current_state.0.cost); [INFO] [stdout] 422 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d17.rs:373:16 [INFO] [stdout] | [INFO] [stdout] 373 | *pos = forward.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `forward` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/d18.rs:463:6 [INFO] [stdout] | [INFO] [stdout] 463 | ) -> Result<(Vec<(Vec, HashMap)>, usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:483:5 [INFO] [stdout] | [INFO] [stdout] 483 | return Ok((res_imgs, w / 2 + 1, h / 2 + 1)); [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] 483 - return Ok((res_imgs, w / 2 + 1, h / 2 + 1)); [INFO] [stdout] 483 + Ok((res_imgs, w / 2 + 1, h / 2 + 1)) [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/d17.rs:430:23 [INFO] [stdout] | [INFO] [stdout] 430 | fn intersections(img: &Vec, w: usize, h: usize) -> 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] 430 - fn intersections(img: &Vec, w: usize, h: usize) -> Vec { [INFO] [stdout] 430 + fn intersections(img: &[i64], w: usize, h: usize) -> 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/d18.rs:487:10 [INFO] [stdout] | [INFO] [stdout] 487 | img: &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] 487 - img: &Vec, [INFO] [stdout] 487 + img: &[char], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/d18.rs:508:37 [INFO] [stdout] | [INFO] [stdout] 508 | pub fn read(input: &'static str) -> Result<(Vec, usize, usize, HashMap)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | / return MapSequence { [INFO] [stdout] 28 | | cost: 0, [INFO] [stdout] 29 | | keys: HashSet::new(), [INFO] [stdout] 30 | | }; [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] 27 ~ MapSequence { [INFO] [stdout] 28 + cost: 0, [INFO] [stdout] 29 + keys: HashSet::new(), [INFO] [stdout] 30 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | 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] 39 - return true; [INFO] [stdout] 39 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d19.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | return Ok(count); [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] 17 - return Ok(count); [INFO] [stdout] 17 + Ok(count) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | 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] 48 - return true; [INFO] [stdout] 48 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d18.rs:44:36 [INFO] [stdout] | [INFO] [stdout] 44 | if !self.keys.contains(&k) { [INFO] [stdout] | ^^ help: change this to: `k` [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/d19.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | return Ok(x * 10000 + y); [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] 25 - return Ok(x * 10000 + y); [INFO] [stdout] 25 + Ok(x * 10000 + y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's keys [INFO] [stdout] --> src/d18.rs:61:25 [INFO] [stdout] | [INFO] [stdout] 61 | for (key, _) in &map_path.keys { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 61 - for (key, _) in &map_path.keys { [INFO] [stdout] 61 + for key in map_path.keys.keys() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/d19.rs:32:31 [INFO] [stdout] | [INFO] [stdout] 32 | cpu.enqueue_input(x as i64); [INFO] [stdout] | ^^^^^^^^ help: try: `x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/d19.rs:33:31 [INFO] [stdout] | [INFO] [stdout] 33 | cpu.enqueue_input(y as i64); [INFO] [stdout] | ^^^^^^^^ help: try: `y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | / return MapPath { [INFO] [stdout] 83 | | from, [INFO] [stdout] 84 | | to, [INFO] [stdout] 85 | | cost: 0, [INFO] [stdout] 86 | | keys: HashMap::new(), [INFO] [stdout] 87 | | doors: HashMap::new(), [INFO] [stdout] 88 | | }; [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] 82 ~ MapPath { [INFO] [stdout] 83 + from, [INFO] [stdout] 84 + to, [INFO] [stdout] 85 + cost: 0, [INFO] [stdout] 86 + keys: HashMap::new(), [INFO] [stdout] 87 + doors: HashMap::new(), [INFO] [stdout] 88 ~ } [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/d18.rs:93:16 [INFO] [stdout] | [INFO] [stdout] 93 | imgs_luts: &Vec<(Vec, HashMap)>, [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] 93 - imgs_luts: &Vec<(Vec, HashMap)>, [INFO] [stdout] 93 + imgs_luts: &[(Vec, HashMap)], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d2.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | return Ok(cpu.get_mem_at(0)); [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] 12 - return Ok(cpu.get_mem_at(0)); [INFO] [stdout] 12 + Ok(cpu.get_mem_at(0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/d18.rs:128:78 [INFO] [stdout] | [INFO] [stdout] 128 | let mut indexable_keys: Vec = imgs_luts[quad].1.keys().cloned().map(|x| x).collect(); [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: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:12:26 [INFO] [stdout] | [INFO] [stdout] 12 | q.push_back((p.clone(), 1)); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: length comparison to zero [INFO] [stdout] --> src/d20.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/d18.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 155 | positions.push('@'); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec!['@';SIZE]` [INFO] [stdout] = help: or `positions.extend(std::iter::repeat_n('@', SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] = note: `#[warn(clippy::same_item_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:29:30 [INFO] [stdout] | [INFO] [stdout] 29 | q.push_back((p.clone(), current.1 + 1)); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:32:30 [INFO] [stdout] | [INFO] [stdout] 32 | q.push_back((dest.clone(), current.1 + 1)); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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: usage of a legacy numeric method [INFO] [stdout] --> src/d18.rs:173:25 [INFO] [stdout] | [INFO] [stdout] 173 | min_sequence.cost = usize::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 173 - min_sequence.cost = usize::max_value(); [INFO] [stdout] 173 + min_sequence.cost = usize::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d18.rs:176:12 [INFO] [stdout] | [INFO] [stdout] 176 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | q.push_back((p.clone(), 1, 0)); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: length comparison to zero [INFO] [stdout] --> src/d20.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `quad` is only used to index `positions` [INFO] [stdout] --> src/d18.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | for quad in 0..4 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 202 - for quad in 0..4 { [INFO] [stdout] 202 + for in positions.iter().take(4) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:73:30 [INFO] [stdout] | [INFO] [stdout] 73 | q.push_back((p.clone(), step_depth + 1, maze_level)); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d18.rs:218:47 [INFO] [stdout] | [INFO] [stdout] 218 | if !current_seq.keys.contains(&destination) { [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `destination` [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: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:81:38 [INFO] [stdout] | [INFO] [stdout] 81 | q.push_back((dest.clone(), step_depth + 1, maze_level + 1)); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:85:38 [INFO] [stdout] | [INFO] [stdout] 85 | q.push_back((dest.clone(), current.1 + 1, maze_level + 1)); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:87:38 [INFO] [stdout] | [INFO] [stdout] 87 | q.push_back((dest.clone(), current.1 + 1, maze_level - 1)); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/d20.rs:101:6 [INFO] [stdout] | [INFO] [stdout] 101 | ) -> Result<( [INFO] [stdout] | ______^ [INFO] [stdout] 102 | | Vec, [INFO] [stdout] 103 | | usize, [INFO] [stdout] 104 | | usize, [INFO] [stdout] ... | [INFO] [stdout] 107 | | Point, [INFO] [stdout] 108 | | )> { [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d18.rs:267:56 [INFO] [stdout] | [INFO] [stdout] 267 | path_memo.insert(start_from_to_key, calc_paths(&img, w, h, lut, from, to)); [INFO] [stdout] | ^^^^ help: change this to: `img` [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/d18.rs:272:64 [INFO] [stdout] | [INFO] [stdout] 272 | path_memo.insert(from_to_key(from, to), calc_paths(&img, w, h, lut, from, to)); [INFO] [stdout] | ^^^^ help: change this to: `img` [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: usage of a legacy numeric method [INFO] [stdout] --> src/d18.rs:285:25 [INFO] [stdout] | [INFO] [stdout] 285 | min_sequence.cost = usize::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 285 - min_sequence.cost = usize::max_value(); [INFO] [stdout] 285 + min_sequence.cost = usize::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d18.rs:288:12 [INFO] [stdout] | [INFO] [stdout] 288 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:157:33 [INFO] [stdout] | [INFO] [stdout] 157 | if label == "AA".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"AA"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d18.rs:322:43 [INFO] [stdout] | [INFO] [stdout] 322 | if !current_seq.keys.contains(&destination) { [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `destination` [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: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:158:33 [INFO] [stdout] | [INFO] [stdout] 158 | start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:160:33 [INFO] [stdout] | [INFO] [stdout] 160 | if label == "ZZ".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ZZ"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:161:31 [INFO] [stdout] | [INFO] [stdout] 161 | end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d20.rs:163:21 [INFO] [stdout] | [INFO] [stdout] 163 | / if !portals_inverse.contains_key(&label) { [INFO] [stdout] 164 | | portals_inverse.insert(label, p); [INFO] [stdout] 165 | | } else { [INFO] [stdout] 166 | | let dest = portals_inverse[&label]; [INFO] [stdout] 167 | | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] 168 | | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] 169 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:167:55 [INFO] [stdout] | [INFO] [stdout] 167 | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 boolean expression can be simplified [INFO] [stdout] --> src/d18.rs:363:12 [INFO] [stdout] | [INFO] [stdout] 363 | if (!has_key_to_door && !key_on_path) [INFO] [stdout] | ____________^ [INFO] [stdout] 364 | | || (!has_key_to_door && key_on_path && door_before_key) [INFO] [stdout] | |___________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 363 - if (!has_key_to_door && !key_on_path) [INFO] [stdout] 364 - || (!has_key_to_door && key_on_path && door_before_key) [INFO] [stdout] 363 + if !(has_key_to_door || key_on_path && !door_before_key) [INFO] [stdout] | [INFO] [stdout] 363 - if (!has_key_to_door && !key_on_path) [INFO] [stdout] 364 - || (!has_key_to_door && key_on_path && door_before_key) [INFO] [stdout] 363 + if !has_key_to_door && !key_on_path || !has_key_to_door && door_before_key [INFO] [stdout] | [INFO] [stdout] 363 - if (!has_key_to_door && !key_on_path) [INFO] [stdout] 364 - || (!has_key_to_door && key_on_path && door_before_key) [INFO] [stdout] 363 + if (door_before_key || !key_on_path) && !has_key_to_door [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:168:58 [INFO] [stdout] | [INFO] [stdout] 168 | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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/d18.rs:369:5 [INFO] [stdout] | [INFO] [stdout] 369 | 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] 369 - return true; [INFO] [stdout] 369 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:177:33 [INFO] [stdout] | [INFO] [stdout] 177 | if label == "AA".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"AA"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:178:33 [INFO] [stdout] | [INFO] [stdout] 178 | start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:180:33 [INFO] [stdout] | [INFO] [stdout] 180 | if label == "ZZ".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ZZ"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:181:31 [INFO] [stdout] | [INFO] [stdout] 181 | end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d20.rs:183:21 [INFO] [stdout] | [INFO] [stdout] 183 | / if !portals_inverse.contains_key(&label) { [INFO] [stdout] 184 | | portals_inverse.insert(label, p); [INFO] [stdout] 185 | | } else { [INFO] [stdout] 186 | | let dest = portals_inverse[&label]; [INFO] [stdout] 187 | | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] 188 | | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] 189 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:375:5 [INFO] [stdout] | [INFO] [stdout] 375 | return from_to_key_c(from_c, to_c); [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] 375 - return from_to_key_c(from_c, to_c); [INFO] [stdout] 375 + from_to_key_c(from_c, to_c) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:187:55 [INFO] [stdout] | [INFO] [stdout] 187 | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:188:58 [INFO] [stdout] | [INFO] [stdout] 188 | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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/d18.rs:383:5 [INFO] [stdout] | [INFO] [stdout] 383 | return from_to_key; [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] 383 - return from_to_key; [INFO] [stdout] 383 + from_to_key [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:197:33 [INFO] [stdout] | [INFO] [stdout] 197 | if label == "AA".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"AA"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:198:33 [INFO] [stdout] | [INFO] [stdout] 198 | start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d18.rs:387:10 [INFO] [stdout] | [INFO] [stdout] 387 | img: &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] 387 - img: &Vec, [INFO] [stdout] 387 + img: &[char], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:200:33 [INFO] [stdout] | [INFO] [stdout] 200 | if label == "ZZ".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ZZ"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d18.rs:400:46 [INFO] [stdout] | [INFO] [stdout] 400 | q.push_back((MapPath::new(from_c, to_c), from_pt.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `from_pt` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:201:31 [INFO] [stdout] | [INFO] [stdout] 201 | end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: length comparison to zero [INFO] [stdout] --> src/d18.rs:402:12 [INFO] [stdout] | [INFO] [stdout] 402 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d20.rs:203:21 [INFO] [stdout] | [INFO] [stdout] 203 | / if !portals_inverse.contains_key(&label) { [INFO] [stdout] 204 | | portals_inverse.insert(label, p); [INFO] [stdout] 205 | | } else { [INFO] [stdout] 206 | | let dest = portals_inverse[&label]; [INFO] [stdout] 207 | | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] 208 | | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] 209 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:207:55 [INFO] [stdout] | [INFO] [stdout] 207 | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `if` statement can be collapsed [INFO] [stdout] --> src/d18.rs:411:9 [INFO] [stdout] | [INFO] [stdout] 411 | / if is_upper(current_c) { [INFO] [stdout] 412 | | if !current_state.0.doors.contains_key(¤t_c) { [INFO] [stdout] 413 | | current_state [INFO] [stdout] 414 | | .0 [INFO] [stdout] ... | [INFO] [stdout] 418 | | } [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] 411 ~ if is_upper(current_c) [INFO] [stdout] 412 ~ && !current_state.0.doors.contains_key(¤t_c) { [INFO] [stdout] 413 | current_state [INFO] [stdout] ... [INFO] [stdout] 416 | .insert(current_c, current_state.0.cost); [INFO] [stdout] 417 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:208:58 [INFO] [stdout] | [INFO] [stdout] 208 | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:217:33 [INFO] [stdout] | [INFO] [stdout] 217 | if label == "AA".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"AA"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/d18.rs:419:9 [INFO] [stdout] | [INFO] [stdout] 419 | / if is_lower(current_c) { [INFO] [stdout] 420 | | if !current_state.0.keys.contains_key(¤t_c) { [INFO] [stdout] 421 | | current_state.0.keys.insert(current_c, current_state.0.cost); [INFO] [stdout] 422 | | } [INFO] [stdout] 423 | | } [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] 419 ~ if is_lower(current_c) [INFO] [stdout] 420 ~ && !current_state.0.keys.contains_key(¤t_c) { [INFO] [stdout] 421 | current_state.0.keys.insert(current_c, current_state.0.cost); [INFO] [stdout] 422 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:218:33 [INFO] [stdout] | [INFO] [stdout] 218 | start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/d18.rs:463:6 [INFO] [stdout] | [INFO] [stdout] 463 | ) -> Result<(Vec<(Vec, HashMap)>, usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:220:33 [INFO] [stdout] | [INFO] [stdout] 220 | if label == "ZZ".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ZZ"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d18.rs:483:5 [INFO] [stdout] | [INFO] [stdout] 483 | return Ok((res_imgs, w / 2 + 1, h / 2 + 1)); [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] 483 - return Ok((res_imgs, w / 2 + 1, h / 2 + 1)); [INFO] [stdout] 483 + Ok((res_imgs, w / 2 + 1, h / 2 + 1)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:221:31 [INFO] [stdout] | [INFO] [stdout] 221 | end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d18.rs:487:10 [INFO] [stdout] | [INFO] [stdout] 487 | img: &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] 487 - img: &Vec, [INFO] [stdout] 487 + img: &[char], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/d18.rs:508:37 [INFO] [stdout] | [INFO] [stdout] 508 | pub fn read(input: &'static str) -> Result<(Vec, usize, usize, HashMap)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d20.rs:223:21 [INFO] [stdout] | [INFO] [stdout] 223 | / if !portals_inverse.contains_key(&label) { [INFO] [stdout] 224 | | portals_inverse.insert(label, p); [INFO] [stdout] 225 | | } else { [INFO] [stdout] 226 | | let dest = portals_inverse[&label]; [INFO] [stdout] 227 | | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] 228 | | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] 229 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d19.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | return Ok(count); [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] 17 - return Ok(count); [INFO] [stdout] 17 + Ok(count) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:227:55 [INFO] [stdout] | [INFO] [stdout] 227 | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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/d19.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | return Ok(x * 10000 + y); [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] 25 - return Ok(x * 10000 + y); [INFO] [stdout] 25 + Ok(x * 10000 + y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:228:58 [INFO] [stdout] | [INFO] [stdout] 228 | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/d19.rs:32:31 [INFO] [stdout] | [INFO] [stdout] 32 | cpu.enqueue_input(x as i64); [INFO] [stdout] | ^^^^^^^^ help: try: `x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/d19.rs:33:31 [INFO] [stdout] | [INFO] [stdout] 33 | cpu.enqueue_input(y as i64); [INFO] [stdout] | ^^^^^^^^ help: try: `y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d2.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | return Ok(cpu.get_mem_at(0)); [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] 12 - return Ok(cpu.get_mem_at(0)); [INFO] [stdout] 12 + Ok(cpu.get_mem_at(0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:12:26 [INFO] [stdout] | [INFO] [stdout] 12 | q.push_back((p.clone(), 1)); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: length comparison to zero [INFO] [stdout] --> src/d20.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:29:30 [INFO] [stdout] | [INFO] [stdout] 29 | q.push_back((p.clone(), current.1 + 1)); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:32:30 [INFO] [stdout] | [INFO] [stdout] 32 | q.push_back((dest.clone(), current.1 + 1)); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | q.push_back((p.clone(), 1, 0)); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: length comparison to zero [INFO] [stdout] --> src/d20.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:73:30 [INFO] [stdout] | [INFO] [stdout] 73 | q.push_back((p.clone(), step_depth + 1, maze_level)); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:81:38 [INFO] [stdout] | [INFO] [stdout] 81 | q.push_back((dest.clone(), step_depth + 1, maze_level + 1)); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:85:38 [INFO] [stdout] | [INFO] [stdout] 85 | q.push_back((dest.clone(), current.1 + 1, maze_level + 1)); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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/d22.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | / return Deck { [INFO] [stdout] 19 | | size: BigInt::from(size), [INFO] [stdout] 20 | | slope: BigInt::from(1), [INFO] [stdout] 21 | | intercept: BigInt::from(0), [INFO] [stdout] 22 | | repetitions: BigInt::from(1), [INFO] [stdout] 23 | | }; [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] 18 ~ Deck { [INFO] [stdout] 19 + size: BigInt::from(size), [INFO] [stdout] 20 + slope: BigInt::from(1), [INFO] [stdout] 21 + intercept: BigInt::from(0), [INFO] [stdout] 22 + repetitions: BigInt::from(1), [INFO] [stdout] 23 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:87:38 [INFO] [stdout] | [INFO] [stdout] 87 | q.push_back((dest.clone(), current.1 + 1, maze_level - 1)); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d22.rs:84:43 [INFO] [stdout] | [INFO] [stdout] 84 | fn execute(deck: &mut Deck, instructions: &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] 84 - fn execute(deck: &mut Deck, instructions: &Vec) { [INFO] [stdout] 84 + fn execute(deck: &mut Deck, instructions: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/d20.rs:101:6 [INFO] [stdout] | [INFO] [stdout] 101 | ) -> Result<( [INFO] [stdout] | ______^ [INFO] [stdout] 102 | | Vec, [INFO] [stdout] 103 | | usize, [INFO] [stdout] 104 | | usize, [INFO] [stdout] ... | [INFO] [stdout] 107 | | Point, [INFO] [stdout] 108 | | )> { [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d24.rs:44:25 [INFO] [stdout] | [INFO] [stdout] 44 | fn minute_layered(imgs: &mut Vec, w: usize, h: usize) -> 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] 44 ~ fn minute_layered(imgs: &mut [i32], w: usize, h: usize) -> Vec { [INFO] [stdout] 45 ~ let mut res = imgs.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/d24.rs:59:36 [INFO] [stdout] | [INFO] [stdout] 59 | let neighbor_pwr = (neighbor.0.y * (w as i32) + neighbor.0.x) as i32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(neighbor.0.y * (w as i32) + neighbor.0.x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d24.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | let near = neighbors(&p); [INFO] [stdout] | ^^ help: change this to: `p` [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: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d24.rs:84:23 [INFO] [stdout] | [INFO] [stdout] 84 | res.push((neighbor.clone(), img_idx)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `neighbor` [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: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/d24.rs:145:32 [INFO] [stdout] | [INFO] [stdout] 145 | let neighbor_pwr = (neighbor.y * (w as i32) + neighbor.x) as i32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(neighbor.y * (w as i32) + neighbor.x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:157:33 [INFO] [stdout] | [INFO] [stdout] 157 | if label == "AA".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"AA"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:158:33 [INFO] [stdout] | [INFO] [stdout] 158 | start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:160:33 [INFO] [stdout] | [INFO] [stdout] 160 | if label == "ZZ".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ZZ"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:161:31 [INFO] [stdout] | [INFO] [stdout] 161 | end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d20.rs:163:21 [INFO] [stdout] | [INFO] [stdout] 163 | / if !portals_inverse.contains_key(&label) { [INFO] [stdout] 164 | | portals_inverse.insert(label, p); [INFO] [stdout] 165 | | } else { [INFO] [stdout] 166 | | let dest = portals_inverse[&label]; [INFO] [stdout] 167 | | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] 168 | | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] 169 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:167:55 [INFO] [stdout] | [INFO] [stdout] 167 | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d24.rs:174:35 [INFO] [stdout] | [INFO] [stdout] 174 | for (_, c) in line.chars().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 174 - for (_, c) in line.chars().enumerate() { [INFO] [stdout] 174 + for c in line.chars() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:168:58 [INFO] [stdout] | [INFO] [stdout] 168 | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:177:33 [INFO] [stdout] | [INFO] [stdout] 177 | if label == "AA".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"AA"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:178:33 [INFO] [stdout] | [INFO] [stdout] 178 | start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:180:33 [INFO] [stdout] | [INFO] [stdout] 180 | if label == "ZZ".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ZZ"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:181:31 [INFO] [stdout] | [INFO] [stdout] 181 | end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d20.rs:183:21 [INFO] [stdout] | [INFO] [stdout] 183 | / if !portals_inverse.contains_key(&label) { [INFO] [stdout] 184 | | portals_inverse.insert(label, p); [INFO] [stdout] 185 | | } else { [INFO] [stdout] 186 | | let dest = portals_inverse[&label]; [INFO] [stdout] 187 | | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] 188 | | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] 189 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:187:55 [INFO] [stdout] | [INFO] [stdout] 187 | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:188:58 [INFO] [stdout] | [INFO] [stdout] 188 | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:197:33 [INFO] [stdout] | [INFO] [stdout] 197 | if label == "AA".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"AA"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:198:33 [INFO] [stdout] | [INFO] [stdout] 198 | start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:200:33 [INFO] [stdout] | [INFO] [stdout] 200 | if label == "ZZ".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ZZ"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:201:31 [INFO] [stdout] | [INFO] [stdout] 201 | end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d20.rs:203:21 [INFO] [stdout] | [INFO] [stdout] 203 | / if !portals_inverse.contains_key(&label) { [INFO] [stdout] 204 | | portals_inverse.insert(label, p); [INFO] [stdout] 205 | | } else { [INFO] [stdout] 206 | | let dest = portals_inverse[&label]; [INFO] [stdout] 207 | | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] 208 | | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] 209 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:207:55 [INFO] [stdout] | [INFO] [stdout] 207 | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:208:58 [INFO] [stdout] | [INFO] [stdout] 208 | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:217:33 [INFO] [stdout] | [INFO] [stdout] 217 | if label == "AA".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"AA"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:218:33 [INFO] [stdout] | [INFO] [stdout] 218 | start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d20.rs:220:33 [INFO] [stdout] | [INFO] [stdout] 220 | if label == "ZZ".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `"ZZ"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:221:31 [INFO] [stdout] | [INFO] [stdout] 221 | end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/d20.rs:223:21 [INFO] [stdout] | [INFO] [stdout] 223 | / if !portals_inverse.contains_key(&label) { [INFO] [stdout] 224 | | portals_inverse.insert(label, p); [INFO] [stdout] 225 | | } else { [INFO] [stdout] 226 | | let dest = portals_inverse[&label]; [INFO] [stdout] 227 | | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] 228 | | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] 229 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:227:55 [INFO] [stdout] | [INFO] [stdout] 227 | portals.insert(p.to_string(), dest.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `dest` [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 `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d20.rs:228:58 [INFO] [stdout] | [INFO] [stdout] 228 | portals.insert(dest.to_string(), p.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/d25.rs:135:68 [INFO] [stdout] | [INFO] [stdout] 135 | ... if parts[i] == "typing".to_owned() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `"typing"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d25.rs:152:15 [INFO] [stdout] | [INFO] [stdout] 152 | if res == "".to_owned() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d25.rs:158:49 [INFO] [stdout] | [INFO] [stdout] 158 | fn take_if(cpu: &mut IntCodeCPU, bit: i32, all: &Vec<&str>, index: 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] 158 - fn take_if(cpu: &mut IntCodeCPU, bit: i32, all: &Vec<&str>, index: usize) { [INFO] [stdout] 158 + fn take_if(cpu: &mut IntCodeCPU, bit: i32, all: &[&str], index: usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d3.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | return common(1); [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] 7 - return common(1); [INFO] [stdout] 7 + common(1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d3.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | return common(2); [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] 11 - return common(2); [INFO] [stdout] 11 + common(2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d22.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | / return Deck { [INFO] [stdout] 19 | | size: BigInt::from(size), [INFO] [stdout] 20 | | slope: BigInt::from(1), [INFO] [stdout] 21 | | intercept: BigInt::from(0), [INFO] [stdout] 22 | | repetitions: BigInt::from(1), [INFO] [stdout] 23 | | }; [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] 18 ~ Deck { [INFO] [stdout] 19 + size: BigInt::from(size), [INFO] [stdout] 20 + slope: BigInt::from(1), [INFO] [stdout] 21 + intercept: BigInt::from(0), [INFO] [stdout] 22 + repetitions: BigInt::from(1), [INFO] [stdout] 23 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d3.rs:85:5 [INFO] [stdout] | [INFO] [stdout] 85 | return minimum; [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] 85 - return minimum; [INFO] [stdout] 85 + minimum [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d3.rs:36:28 [INFO] [stdout] | [INFO] [stdout] 36 | let mut minimum: i32 = i32::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 36 - let mut minimum: i32 = i32::max_value(); [INFO] [stdout] 36 + let mut minimum: i32 = i32::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d3.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | let step: (i32, i32); [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 `step` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 41 ~ [INFO] [stdout] 42 ~ let step: (i32, i32) = match dir { [INFO] [stdout] 43 | "U" => { [INFO] [stdout] 44 ~ (0, -1) [INFO] [stdout] 45 | } [INFO] [stdout] 46 | "D" => { [INFO] [stdout] 47 ~ (0, 1) [INFO] [stdout] 48 | } [INFO] [stdout] 49 | "L" => { [INFO] [stdout] 50 ~ (-1, 0) [INFO] [stdout] 51 | } [INFO] [stdout] 52 | "R" => { [INFO] [stdout] 53 ~ (1, 0) [INFO] [stdout] 54 | } [INFO] [stdout] 55 | &_ => panic!("wtf"), [INFO] [stdout] 56 ~ }; [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/d22.rs:84:43 [INFO] [stdout] | [INFO] [stdout] 84 | fn execute(deck: &mut Deck, instructions: &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] 84 - fn execute(deck: &mut Deck, instructions: &Vec) { [INFO] [stdout] 84 + fn execute(deck: &mut Deck, instructions: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/d3.rs:66:17 [INFO] [stdout] | [INFO] [stdout] 66 | / match cache.get(&last.to_string()) { [INFO] [stdout] 67 | | Some(cached_step_count) => { [INFO] [stdout] 68 | | if part == 1 { [INFO] [stdout] 69 | | let dist = manhattan_distance(&Point::origin(), &last); [INFO] [stdout] ... | [INFO] [stdout] 80 | | None => {} [INFO] [stdout] 81 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 66 ~ if let Some(cached_step_count) = cache.get(&last.to_string()) { [INFO] [stdout] 67 + if part == 1 { [INFO] [stdout] 68 + let dist = manhattan_distance(&Point::origin(), &last); [INFO] [stdout] 69 + if dist < minimum { [INFO] [stdout] 70 + minimum = dist; [INFO] [stdout] 71 + } [INFO] [stdout] 72 + } else if part == 2 { [INFO] [stdout] 73 + let sum = cached_step_count + step_count; [INFO] [stdout] 74 + if sum < minimum { [INFO] [stdout] 75 + minimum = sum; [INFO] [stdout] 76 + } [INFO] [stdout] 77 + } [INFO] [stdout] 78 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | return common(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] 8 - return common(false); [INFO] [stdout] 8 + common(false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | return common(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] 12 - return common(true); [INFO] [stdout] 12 + common(true) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | return count; [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] 44 - return count; [INFO] [stdout] 44 + count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | 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] 57 - return true; [INFO] [stdout] 57 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d4.rs:48:51 [INFO] [stdout] | [INFO] [stdout] 48 | let target = IntCodeCPU::dig(&(*perm as i64), &gap); [INFO] [stdout] | ^^^^ help: change this to: `gap` [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/d4.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | / return i * 10i32.pow(5) [INFO] [stdout] 64 | | + i * 10i32.pow(4) [INFO] [stdout] 65 | | + j * 10i32.pow(3) [INFO] [stdout] 66 | | + k * 10i32.pow(2) [INFO] [stdout] 67 | | + l * 10i32.pow(1) [INFO] [stdout] 68 | | + m [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] 63 ~ i * 10i32.pow(5) [INFO] [stdout] 64 + + i * 10i32.pow(4) [INFO] [stdout] 65 + + j * 10i32.pow(3) [INFO] [stdout] 66 + + k * 10i32.pow(2) [INFO] [stdout] 67 + + l * 10i32.pow(1) [INFO] [stdout] 68 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d24.rs:44:25 [INFO] [stdout] | [INFO] [stdout] 44 | fn minute_layered(imgs: &mut Vec, w: usize, h: usize) -> 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] 44 ~ fn minute_layered(imgs: &mut [i32], w: usize, h: usize) -> Vec { [INFO] [stdout] 45 ~ let mut res = imgs.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | / return i * 10i32.pow(5) [INFO] [stdout] 72 | | + j * 10i32.pow(4) [INFO] [stdout] 73 | | + j * 10i32.pow(3) [INFO] [stdout] 74 | | + k * 10i32.pow(2) [INFO] [stdout] 75 | | + l * 10i32.pow(1) [INFO] [stdout] 76 | | + m [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] 71 ~ i * 10i32.pow(5) [INFO] [stdout] 72 + + j * 10i32.pow(4) [INFO] [stdout] 73 + + j * 10i32.pow(3) [INFO] [stdout] 74 + + k * 10i32.pow(2) [INFO] [stdout] 75 + + l * 10i32.pow(1) [INFO] [stdout] 76 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | / return i * 10i32.pow(5) [INFO] [stdout] 80 | | + j * 10i32.pow(4) [INFO] [stdout] 81 | | + k * 10i32.pow(3) [INFO] [stdout] 82 | | + k * 10i32.pow(2) [INFO] [stdout] 83 | | + l * 10i32.pow(1) [INFO] [stdout] 84 | | + m [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] 79 ~ i * 10i32.pow(5) [INFO] [stdout] 80 + + j * 10i32.pow(4) [INFO] [stdout] 81 + + k * 10i32.pow(3) [INFO] [stdout] 82 + + k * 10i32.pow(2) [INFO] [stdout] 83 + + l * 10i32.pow(1) [INFO] [stdout] 84 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/d24.rs:59:36 [INFO] [stdout] | [INFO] [stdout] 59 | let neighbor_pwr = (neighbor.0.y * (w as i32) + neighbor.0.x) as i32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(neighbor.0.y * (w as i32) + neighbor.0.x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | / return i * 10i32.pow(5) [INFO] [stdout] 88 | | + j * 10i32.pow(4) [INFO] [stdout] 89 | | + k * 10i32.pow(3) [INFO] [stdout] 90 | | + l * 10i32.pow(2) [INFO] [stdout] 91 | | + l * 10i32.pow(1) [INFO] [stdout] 92 | | + m [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] 87 ~ i * 10i32.pow(5) [INFO] [stdout] 88 + + j * 10i32.pow(4) [INFO] [stdout] 89 + + k * 10i32.pow(3) [INFO] [stdout] 90 + + l * 10i32.pow(2) [INFO] [stdout] 91 + + l * 10i32.pow(1) [INFO] [stdout] 92 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:95:13 [INFO] [stdout] | [INFO] [stdout] 95 | / return i * 10i32.pow(5) [INFO] [stdout] 96 | | + j * 10i32.pow(4) [INFO] [stdout] 97 | | + k * 10i32.pow(3) [INFO] [stdout] 98 | | + l * 10i32.pow(2) [INFO] [stdout] 99 | | + m * 10i32.pow(1) [INFO] [stdout] 100 | | + m [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] 95 ~ i * 10i32.pow(5) [INFO] [stdout] 96 + + j * 10i32.pow(4) [INFO] [stdout] 97 + + k * 10i32.pow(3) [INFO] [stdout] 98 + + l * 10i32.pow(2) [INFO] [stdout] 99 + + m * 10i32.pow(1) [INFO] [stdout] 100 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d24.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | let near = neighbors(&p); [INFO] [stdout] | ^^ help: change this to: `p` [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: using `clone` on type `Point` which implements the `Copy` trait [INFO] [stdout] --> src/d24.rs:84:23 [INFO] [stdout] | [INFO] [stdout] 84 | res.push((neighbor.clone(), img_idx)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `neighbor` [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/d4.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | return val - (IntCodeCPU::dig(&(*val as i64), pwr) as i32) * 10i32.pow(*pwr as u32); [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] 107 - return val - (IntCodeCPU::dig(&(*val as i64), pwr) as i32) * 10i32.pow(*pwr as u32); [INFO] [stdout] 107 + val - (IntCodeCPU::dig(&(*val as i64), pwr) as i32) * 10i32.pow(*pwr as u32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/d24.rs:145:32 [INFO] [stdout] | [INFO] [stdout] 145 | let neighbor_pwr = (neighbor.y * (w as i32) + neighbor.x) as i32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(neighbor.y * (w as i32) + neighbor.x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | return (low_new, hi_new); [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] 123 - return (low_new, hi_new); [INFO] [stdout] 123 + (low_new, hi_new) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d24.rs:174:35 [INFO] [stdout] | [INFO] [stdout] 174 | for (_, c) in line.chars().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 174 - for (_, c) in line.chars().enumerate() { [INFO] [stdout] 174 + for c in line.chars() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d25.rs:135:68 [INFO] [stdout] | [INFO] [stdout] 135 | ... if parts[i] == "typing".to_owned() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `"typing"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d25.rs:152:15 [INFO] [stdout] | [INFO] [stdout] 152 | if res == "".to_owned() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d4.rs:129:75 [INFO] [stdout] | [INFO] [stdout] 129 | let mut tmp = *dig_min * 10i32.pow(*pwr as u32) + ex_sum(adj_val, &pwr); [INFO] [stdout] | ^^^^ help: change this to: `pwr` [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 `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d25.rs:158:49 [INFO] [stdout] | [INFO] [stdout] 158 | fn take_if(cpu: &mut IntCodeCPU, bit: i32, all: &Vec<&str>, index: 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] 158 - fn take_if(cpu: &mut IntCodeCPU, bit: i32, all: &Vec<&str>, index: usize) { [INFO] [stdout] 158 + fn take_if(cpu: &mut IntCodeCPU, bit: i32, all: &[&str], index: 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/d4.rs:137:61 [INFO] [stdout] | [INFO] [stdout] 137 | tmp = 9 * 10i32.pow(*pwr as u32) + ex_sum(&tmp, &pwr); [INFO] [stdout] | ^^^^ help: change this to: `pwr` [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/d3.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | return common(1); [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] 7 - return common(1); [INFO] [stdout] 7 + common(1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d4.rs:145:69 [INFO] [stdout] | [INFO] [stdout] 145 | *adj_val = 9 * 10i32.pow(*pwr as u32) + ex_sum(adj_val, &pwr); [INFO] [stdout] | ^^^^ help: change this to: `pwr` [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/d3.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | return common(2); [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] 11 - return common(2); [INFO] [stdout] 11 + common(2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d5.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | return Ok(cpu.last_output.unwrap()); [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] 8 - return Ok(cpu.last_output.unwrap()); [INFO] [stdout] 8 + Ok(cpu.last_output.unwrap()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d3.rs:85:5 [INFO] [stdout] | [INFO] [stdout] 85 | return minimum; [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] 85 - return minimum; [INFO] [stdout] 85 + minimum [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d5.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | return Ok(cpu.last_output.unwrap()); [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] 16 - return Ok(cpu.last_output.unwrap()); [INFO] [stdout] 16 + Ok(cpu.last_output.unwrap()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d3.rs:36:28 [INFO] [stdout] | [INFO] [stdout] 36 | let mut minimum: i32 = i32::max_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 36 - let mut minimum: i32 = i32::max_value(); [INFO] [stdout] 36 + let mut minimum: i32 = i32::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/d6.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::usize; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | return Ok(count_orbits(&mut storage, &lut)); [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] 9 - return Ok(count_orbits(&mut storage, &lut)); [INFO] [stdout] 9 + Ok(count_orbits(&mut storage, &lut)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | return Ok(sp.unwrap() as i32); [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] 22 - return Ok(sp.unwrap() as i32); [INFO] [stdout] 22 + Ok(sp.unwrap() as i32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/d3.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | let step: (i32, i32); [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 `step` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 41 ~ [INFO] [stdout] 42 ~ let step: (i32, i32) = match dir { [INFO] [stdout] 43 | "U" => { [INFO] [stdout] 44 ~ (0, -1) [INFO] [stdout] 45 | } [INFO] [stdout] 46 | "D" => { [INFO] [stdout] 47 ~ (0, 1) [INFO] [stdout] 48 | } [INFO] [stdout] 49 | "L" => { [INFO] [stdout] 50 ~ (-1, 0) [INFO] [stdout] 51 | } [INFO] [stdout] 52 | "R" => { [INFO] [stdout] 53 ~ (1, 0) [INFO] [stdout] 54 | } [INFO] [stdout] 55 | &_ => panic!("wtf"), [INFO] [stdout] 56 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 55 | return None; [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 None; [INFO] [stdout] 55 + None [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/d6.rs:26:14 [INFO] [stdout] | [INFO] [stdout] 26 | storage: &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] 26 - storage: &Vec, [INFO] [stdout] 26 + storage: &[UTreeNode], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/d3.rs:66:17 [INFO] [stdout] | [INFO] [stdout] 66 | / match cache.get(&last.to_string()) { [INFO] [stdout] 67 | | Some(cached_step_count) => { [INFO] [stdout] 68 | | if part == 1 { [INFO] [stdout] 69 | | let dist = manhattan_distance(&Point::origin(), &last); [INFO] [stdout] ... | [INFO] [stdout] 80 | | None => {} [INFO] [stdout] 81 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 66 ~ if let Some(cached_step_count) = cache.get(&last.to_string()) { [INFO] [stdout] 67 + if part == 1 { [INFO] [stdout] 68 + let dist = manhattan_distance(&Point::origin(), &last); [INFO] [stdout] 69 + if dist < minimum { [INFO] [stdout] 70 + minimum = dist; [INFO] [stdout] 71 + } [INFO] [stdout] 72 + } else if part == 2 { [INFO] [stdout] 73 + let sum = cached_step_count + step_count; [INFO] [stdout] 74 + if sum < minimum { [INFO] [stdout] 75 + minimum = sum; [INFO] [stdout] 76 + } [INFO] [stdout] 77 + } [INFO] [stdout] 78 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d6.rs:47:27 [INFO] [stdout] | [INFO] [stdout] 47 | if node.parent != "".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | return common(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] 8 - return common(false); [INFO] [stdout] 8 + common(false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d6.rs:60:11 [INFO] [stdout] | [INFO] [stdout] 60 | dist: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 60 - dist: &mut Vec, [INFO] [stdout] 60 + dist: &mut [usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | return common(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] 12 - return common(true); [INFO] [stdout] 12 + common(true) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/d6.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | id: &String, [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] 62 ~ id: &str, [INFO] [stdout] 63 | cost: usize, [INFO] [stdout] 64 | ) { [INFO] [stdout] 65 | let child_cost = cost + 1; [INFO] [stdout] 66 ~ let child_idx = lut[&id.to_owned()]; [INFO] [stdout] 67 | if child_cost < dist[child_idx] { [INFO] [stdout] 68 ~ heap.push(id.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | return count; [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] 44 - return count; [INFO] [stdout] 44 + count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 89 | return count; [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] 89 - return count; [INFO] [stdout] 89 + count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d6.rs:73:26 [INFO] [stdout] | [INFO] [stdout] 73 | fn count_orbits(storage: &mut Vec, lut: &HashMap) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 73 - fn count_orbits(storage: &mut Vec, lut: &HashMap) -> i32 { [INFO] [stdout] 73 + fn count_orbits(storage: &mut [UTreeNode], lut: &HashMap) -> i32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d6.rs:78:11 [INFO] [stdout] | [INFO] [stdout] 78 | while stack.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stack.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: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:129:5 [INFO] [stdout] | [INFO] [stdout] 129 | return Ok((storage, lut)); [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] 129 - return Ok((storage, lut)); [INFO] [stdout] 129 + Ok((storage, lut)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d6.rs:99:36 [INFO] [stdout] | [INFO] [stdout] 99 | for (_, line) in reader.lines().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 99 - for (_, line) in reader.lines().enumerate() { [INFO] [stdout] 99 + for line in reader.lines() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | 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] 57 - return true; [INFO] [stdout] 57 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d7.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | return phase_permutations(0, 4); [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] 5 - return phase_permutations(0, 4); [INFO] [stdout] 5 + phase_permutations(0, 4) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d4.rs:48:51 [INFO] [stdout] | [INFO] [stdout] 48 | let target = IntCodeCPU::dig(&(*perm as i64), &gap); [INFO] [stdout] | ^^^^ help: change this to: `gap` [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/d7.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | return phase_permutations(5, 9); [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] 9 - return phase_permutations(5, 9); [INFO] [stdout] 9 + phase_permutations(5, 9) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | / return i * 10i32.pow(5) [INFO] [stdout] 64 | | + i * 10i32.pow(4) [INFO] [stdout] 65 | | + j * 10i32.pow(3) [INFO] [stdout] 66 | | + k * 10i32.pow(2) [INFO] [stdout] 67 | | + l * 10i32.pow(1) [INFO] [stdout] 68 | | + m [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] 63 ~ i * 10i32.pow(5) [INFO] [stdout] 64 + + i * 10i32.pow(4) [INFO] [stdout] 65 + + j * 10i32.pow(3) [INFO] [stdout] 66 + + k * 10i32.pow(2) [INFO] [stdout] 67 + + l * 10i32.pow(1) [INFO] [stdout] 68 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d7.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | return Ok(max_output); [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] 32 - return Ok(max_output); [INFO] [stdout] 32 + Ok(max_output) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | / return i * 10i32.pow(5) [INFO] [stdout] 72 | | + j * 10i32.pow(4) [INFO] [stdout] 73 | | + j * 10i32.pow(3) [INFO] [stdout] 74 | | + k * 10i32.pow(2) [INFO] [stdout] 75 | | + l * 10i32.pow(1) [INFO] [stdout] 76 | | + m [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] 71 ~ i * 10i32.pow(5) [INFO] [stdout] 72 + + j * 10i32.pow(4) [INFO] [stdout] 73 + + j * 10i32.pow(3) [INFO] [stdout] 74 + + k * 10i32.pow(2) [INFO] [stdout] 75 + + l * 10i32.pow(1) [INFO] [stdout] 76 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d7.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | let mut max_output = i64::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 23 - let mut max_output = i64::min_value(); [INFO] [stdout] 23 + let mut max_output = i64::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | / return i * 10i32.pow(5) [INFO] [stdout] 80 | | + j * 10i32.pow(4) [INFO] [stdout] 81 | | + k * 10i32.pow(3) [INFO] [stdout] 82 | | + k * 10i32.pow(2) [INFO] [stdout] 83 | | + l * 10i32.pow(1) [INFO] [stdout] 84 | | + m [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] 79 ~ i * 10i32.pow(5) [INFO] [stdout] 80 + + j * 10i32.pow(4) [INFO] [stdout] 81 + + k * 10i32.pow(3) [INFO] [stdout] 82 + + k * 10i32.pow(2) [INFO] [stdout] 83 + + l * 10i32.pow(1) [INFO] [stdout] 84 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | / return i * 10i32.pow(5) [INFO] [stdout] 88 | | + j * 10i32.pow(4) [INFO] [stdout] 89 | | + k * 10i32.pow(3) [INFO] [stdout] 90 | | + l * 10i32.pow(2) [INFO] [stdout] 91 | | + l * 10i32.pow(1) [INFO] [stdout] 92 | | + m [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] 87 ~ i * 10i32.pow(5) [INFO] [stdout] 88 + + j * 10i32.pow(4) [INFO] [stdout] 89 + + k * 10i32.pow(3) [INFO] [stdout] 90 + + l * 10i32.pow(2) [INFO] [stdout] 91 + + l * 10i32.pow(1) [INFO] [stdout] 92 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:95:13 [INFO] [stdout] | [INFO] [stdout] 95 | / return i * 10i32.pow(5) [INFO] [stdout] 96 | | + j * 10i32.pow(4) [INFO] [stdout] 97 | | + k * 10i32.pow(3) [INFO] [stdout] 98 | | + l * 10i32.pow(2) [INFO] [stdout] 99 | | + m * 10i32.pow(1) [INFO] [stdout] 100 | | + m [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] 95 ~ i * 10i32.pow(5) [INFO] [stdout] 96 + + j * 10i32.pow(4) [INFO] [stdout] 97 + + k * 10i32.pow(3) [INFO] [stdout] 98 + + l * 10i32.pow(2) [INFO] [stdout] 99 + + m * 10i32.pow(1) [INFO] [stdout] 100 + + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d7.rs:49:33 [INFO] [stdout] | [INFO] [stdout] 49 | fewer_phases.remove(&phase); [INFO] [stdout] | ^^^^^^ help: change this to: `phase` [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/d4.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | return val - (IntCodeCPU::dig(&(*val as i64), pwr) as i32) * 10i32.pow(*pwr as u32); [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] 107 - return val - (IntCodeCPU::dig(&(*val as i64), pwr) as i32) * 10i32.pow(*pwr as u32); [INFO] [stdout] 107 + val - (IntCodeCPU::dig(&(*val as i64), pwr) as i32) * 10i32.pow(*pwr as u32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d4.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | return (low_new, hi_new); [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] 123 - return (low_new, hi_new); [INFO] [stdout] 123 + (low_new, hi_new) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d8.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | return Ok(fewest_zeros.1 * fewest_zeros.2); [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] 19 - return Ok(fewest_zeros.1 * fewest_zeros.2); [INFO] [stdout] 19 + Ok(fewest_zeros.1 * fewest_zeros.2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d8.rs:12:29 [INFO] [stdout] | [INFO] [stdout] 12 | let mut fewest_zeros = (i32::max_value(), 0, 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 12 - let mut fewest_zeros = (i32::max_value(), 0, 0); [INFO] [stdout] 12 + let mut fewest_zeros = (i32::MAX, 0, 0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d4.rs:129:75 [INFO] [stdout] | [INFO] [stdout] 129 | let mut tmp = *dig_min * 10i32.pow(*pwr as u32) + ex_sum(adj_val, &pwr); [INFO] [stdout] | ^^^^ help: change this to: `pwr` [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/d8.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | return Ok(visual_image.iter().collect()); [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] 28 - return Ok(visual_image.iter().collect()); [INFO] [stdout] 28 + Ok(visual_image.iter().collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d4.rs:137:61 [INFO] [stdout] | [INFO] [stdout] 137 | tmp = 9 * 10i32.pow(*pwr as u32) + ex_sum(&tmp, &pwr); [INFO] [stdout] | ^^^^ help: change this to: `pwr` [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/d8.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | return res; [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] 46 - return res; [INFO] [stdout] 46 + res [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d4.rs:145:69 [INFO] [stdout] | [INFO] [stdout] 145 | *adj_val = 9 * 10i32.pow(*pwr as u32) + ex_sum(adj_val, &pwr); [INFO] [stdout] | ^^^^ help: change this to: `pwr` [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 `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d8.rs:31:32 [INFO] [stdout] | [INFO] [stdout] 31 | fn construct_image(image_data: &Vec, w: usize, h: usize) -> 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] 31 - fn construct_image(image_data: &Vec, w: usize, h: usize) -> Vec { [INFO] [stdout] 31 + fn construct_image(image_data: &[u8], w: usize, h: usize) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d5.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | return Ok(cpu.last_output.unwrap()); [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] 8 - return Ok(cpu.last_output.unwrap()); [INFO] [stdout] 8 + Ok(cpu.last_output.unwrap()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d5.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | return Ok(cpu.last_output.unwrap()); [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] 16 - return Ok(cpu.last_output.unwrap()); [INFO] [stdout] 16 + Ok(cpu.last_output.unwrap()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d8.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | return (zero_count, one_count, two_count); [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] 64 - return (zero_count, one_count, two_count); [INFO] [stdout] 64 + (zero_count, one_count, two_count) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/d6.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::usize; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/d8.rs:49:29 [INFO] [stdout] | [INFO] [stdout] 49 | fn count_values(image_data: &Vec, layer: usize, w: usize, h: usize) -> (i32, i32, i32) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 49 - fn count_values(image_data: &Vec, layer: usize, w: usize, h: usize) -> (i32, i32, i32) { [INFO] [stdout] 49 + fn count_values(image_data: &[u8], layer: usize, w: usize, h: usize) -> (i32, i32, i32) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | return Ok(count_orbits(&mut storage, &lut)); [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] 9 - return Ok(count_orbits(&mut storage, &lut)); [INFO] [stdout] 9 + Ok(count_orbits(&mut storage, &lut)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | return Ok(sp.unwrap() as i32); [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] 22 - return Ok(sp.unwrap() as i32); [INFO] [stdout] 22 + Ok(sp.unwrap() as i32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d8.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | return Ok(int_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] 75 - return Ok(int_vec); [INFO] [stdout] 75 + Ok(int_vec) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 55 | return None; [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 None; [INFO] [stdout] 55 + None [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/d6.rs:26:14 [INFO] [stdout] | [INFO] [stdout] 26 | storage: &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] 26 - storage: &Vec, [INFO] [stdout] 26 + storage: &[UTreeNode], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d9.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | return common(1); [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] 4 - return common(1); [INFO] [stdout] 4 + common(1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d9.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | return common(2); [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] 8 - return common(2); [INFO] [stdout] 8 + common(2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d9.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | return Ok(cpu.last_output.unwrap()); [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] 16 - return Ok(cpu.last_output.unwrap()); [INFO] [stdout] 16 + Ok(cpu.last_output.unwrap()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/d6.rs:47:27 [INFO] [stdout] | [INFO] [stdout] 47 | if node.parent != "".to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d6.rs:60:11 [INFO] [stdout] | [INFO] [stdout] 60 | dist: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 60 - dist: &mut Vec, [INFO] [stdout] 60 + dist: &mut [usize], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/d6.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | id: &String, [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] 62 ~ id: &str, [INFO] [stdout] 63 | cost: usize, [INFO] [stdout] 64 | ) { [INFO] [stdout] 65 | let child_cost = cost + 1; [INFO] [stdout] 66 ~ let child_idx = lut[&id.to_owned()]; [INFO] [stdout] 67 | if child_cost < dist[child_idx] { [INFO] [stdout] 68 ~ heap.push(id.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 89 | return count; [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] 89 - return count; [INFO] [stdout] 89 + count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | / return IntCodeCPU { [INFO] [stdout] 30 | | mem: Vec::new(), [INFO] [stdout] 31 | | mem_end: 0, [INFO] [stdout] 32 | | instr_ptr: 0, [INFO] [stdout] ... | [INFO] [stdout] 38 | | debug_log: 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#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 29 ~ IntCodeCPU { [INFO] [stdout] 30 + mem: Vec::new(), [INFO] [stdout] 31 + mem_end: 0, [INFO] [stdout] 32 + instr_ptr: 0, [INFO] [stdout] 33 + relative_base: 0, [INFO] [stdout] 34 + input: VecDeque::new(), [INFO] [stdout] 35 + output: Vec::new(), [INFO] [stdout] 36 + last_output: None, [INFO] [stdout] 37 + state: CPUState::Ready, [INFO] [stdout] 38 + debug_log: false, [INFO] [stdout] 39 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.last_output` after checking its variant with `is_some` [INFO] [stdout] --> src/intcode.rs:45:23 [INFO] [stdout] | [INFO] [stdout] 44 | if self.last_output.is_some() { [INFO] [stdout] | ----------------------------- help: try: `if let Some() = self.last_output` [INFO] [stdout] 45 | lo = Some(self.last_output.unwrap()); [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] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/d6.rs:73:26 [INFO] [stdout] | [INFO] [stdout] 73 | fn count_orbits(storage: &mut Vec, lut: &HashMap) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 73 - fn count_orbits(storage: &mut Vec, lut: &HashMap) -> i32 { [INFO] [stdout] 73 + fn count_orbits(storage: &mut [UTreeNode], lut: &HashMap) -> i32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / return IntCodeCPU { [INFO] [stdout] 50 | | mem: self.mem.clone(), [INFO] [stdout] 51 | | mem_end: self.mem_end, [INFO] [stdout] 52 | | instr_ptr: self.instr_ptr, [INFO] [stdout] ... | [INFO] [stdout] 58 | | debug_log: self.debug_log, [INFO] [stdout] 59 | | }; [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] 49 ~ IntCodeCPU { [INFO] [stdout] 50 + mem: self.mem.clone(), [INFO] [stdout] 51 + mem_end: self.mem_end, [INFO] [stdout] 52 + instr_ptr: self.instr_ptr, [INFO] [stdout] 53 + relative_base: self.relative_base, [INFO] [stdout] 54 + input: self.input.clone(), [INFO] [stdout] 55 + output: self.output.clone(), [INFO] [stdout] 56 + last_output: lo, [INFO] [stdout] 57 + state: self.state, [INFO] [stdout] 58 + debug_log: self.debug_log, [INFO] [stdout] 59 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/d6.rs:78:11 [INFO] [stdout] | [INFO] [stdout] 78 | while stack.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stack.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: unneeded late initialization [INFO] [stdout] --> src/intcode.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | let lo: Option; [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 `lo` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 43 ~ [INFO] [stdout] 44 ~ let lo: Option = if self.last_output.is_some() { [INFO] [stdout] 45 ~ Some(self.last_output.unwrap()) [INFO] [stdout] 46 | } else { [INFO] [stdout] 47 ~ None [INFO] [stdout] 48 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `snap.last_output` after checking its variant with `is_some` [INFO] [stdout] --> src/intcode.rs:65:23 [INFO] [stdout] | [INFO] [stdout] 64 | if snap.last_output.is_some() { [INFO] [stdout] | ----------------------------- help: try: `if let Some() = snap.last_output` [INFO] [stdout] 65 | lo = Some(snap.last_output.unwrap()); [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d6.rs:129:5 [INFO] [stdout] | [INFO] [stdout] 129 | return Ok((storage, lut)); [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] 129 - return Ok((storage, lut)); [INFO] [stdout] 129 + Ok((storage, lut)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/intcode.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | let lo: Option; [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 `lo` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 63 ~ [INFO] [stdout] 64 ~ let lo: Option = if snap.last_output.is_some() { [INFO] [stdout] 65 ~ Some(snap.last_output.unwrap()) [INFO] [stdout] 66 | } else { [INFO] [stdout] 67 ~ None [INFO] [stdout] 68 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/d6.rs:99:36 [INFO] [stdout] | [INFO] [stdout] 99 | for (_, line) in reader.lines().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 99 - for (_, line) in reader.lines().enumerate() { [INFO] [stdout] 99 + for line in reader.lines() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | return Ok(data); [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] 86 - return Ok(data); [INFO] [stdout] 86 + Ok(data) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | return self.mem[index]; [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] 103 - return self.mem[index]; [INFO] [stdout] 103 + self.mem[index] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d7.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | return phase_permutations(0, 4); [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] 5 - return phase_permutations(0, 4); [INFO] [stdout] 5 + phase_permutations(0, 4) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d7.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | return phase_permutations(5, 9); [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] 9 - return phase_permutations(5, 9); [INFO] [stdout] 9 + phase_permutations(5, 9) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d7.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | return Ok(max_output); [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] 32 - return Ok(max_output); [INFO] [stdout] 32 + Ok(max_output) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | return self.input.len() > 0; [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 self.input.len() > 0; [INFO] [stdout] 128 + self.input.len() > 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/intcode.rs:128:16 [INFO] [stdout] | [INFO] [stdout] 128 | return self.input.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.input.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: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | return self.output.len() > 0; [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] 132 - return self.output.len() > 0; [INFO] [stdout] 132 + self.output.len() > 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d7.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | let mut max_output = i64::min_value(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 23 - let mut max_output = i64::min_value(); [INFO] [stdout] 23 + let mut max_output = i64::MIN; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/intcode.rs:132:16 [INFO] [stdout] | [INFO] [stdout] 132 | return self.output.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.output.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: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | return self.input.pop_front().unwrap(); [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] 145 - return self.input.pop_front().unwrap(); [INFO] [stdout] 145 + self.input.pop_front().unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/d7.rs:49:33 [INFO] [stdout] | [INFO] [stdout] 49 | fewer_phases.remove(&phase); [INFO] [stdout] | ^^^^^^ help: change this to: `phase` [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/intcode.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 232 | return if a < b { 1 } else { 0 }; [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] 232 - return if a < b { 1 } else { 0 }; [INFO] [stdout] 232 + if a < b { 1 } else { 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d8.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | return Ok(fewest_zeros.1 * fewest_zeros.2); [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] 19 - return Ok(fewest_zeros.1 * fewest_zeros.2); [INFO] [stdout] 19 + Ok(fewest_zeros.1 * fewest_zeros.2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> src/d8.rs:12:29 [INFO] [stdout] | [INFO] [stdout] 12 | let mut fewest_zeros = (i32::max_value(), 0, 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 12 - let mut fewest_zeros = (i32::max_value(), 0, 0); [INFO] [stdout] 12 + let mut fewest_zeros = (i32::MAX, 0, 0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:239:21 [INFO] [stdout] | [INFO] [stdout] 239 | return if a == b { 1 } else { 0 }; [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] 239 - return if a == b { 1 } else { 0 }; [INFO] [stdout] 239 + if a == b { 1 } else { 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:275:9 [INFO] [stdout] | [INFO] [stdout] 275 | return (param0, param1); [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] 275 - return (param0, param1); [INFO] [stdout] 275 + (param0, param1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d8.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | return Ok(visual_image.iter().collect()); [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] 28 - return Ok(visual_image.iter().collect()); [INFO] [stdout] 28 + Ok(visual_image.iter().collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:282:9 [INFO] [stdout] | [INFO] [stdout] 282 | return (p0, p1, assign_index as usize); [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] 282 - return (p0, p1, assign_index as usize); [INFO] [stdout] 282 + (p0, p1, assign_index as usize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d8.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | return res; [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] 46 - return res; [INFO] [stdout] 46 + res [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/d8.rs:31:32 [INFO] [stdout] | [INFO] [stdout] 31 | fn construct_image(image_data: &Vec, w: usize, h: usize) -> 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] 31 - fn construct_image(image_data: &Vec, w: usize, h: usize) -> Vec { [INFO] [stdout] 31 + fn construct_image(image_data: &[u8], w: usize, h: usize) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:310:9 [INFO] [stdout] | [INFO] [stdout] 310 | / return val [INFO] [stdout] 311 | | - IntCodeCPU::dig(val, &2) * 10i64.pow(2) [INFO] [stdout] 312 | | - IntCodeCPU::dig(val, &3) * 10i64.pow(3) [INFO] [stdout] 313 | | - IntCodeCPU::dig(val, &4) * 10i64.pow(4); [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] 310 ~ val [INFO] [stdout] 311 + - IntCodeCPU::dig(val, &2) * 10i64.pow(2) [INFO] [stdout] 312 + - IntCodeCPU::dig(val, &3) * 10i64.pow(3) [INFO] [stdout] 313 ~ - IntCodeCPU::dig(val, &4) * 10i64.pow(4) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d8.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | return (zero_count, one_count, two_count); [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] 64 - return (zero_count, one_count, two_count); [INFO] [stdout] 64 + (zero_count, one_count, two_count) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:317:9 [INFO] [stdout] | [INFO] [stdout] 317 | return IntCodeCPU::dig(val, &(param + 2)); [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] 317 - return IntCodeCPU::dig(val, &(param + 2)); [INFO] [stdout] 317 + IntCodeCPU::dig(val, &(param + 2)) [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/d8.rs:49:29 [INFO] [stdout] | [INFO] [stdout] 49 | fn count_values(image_data: &Vec, layer: usize, w: usize, h: usize) -> (i32, i32, i32) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 49 - fn count_values(image_data: &Vec, layer: usize, w: usize, h: usize) -> (i32, i32, i32) { [INFO] [stdout] 49 + fn count_values(image_data: &[u8], layer: usize, w: usize, h: usize) -> (i32, i32, i32) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 331 | / return match assign { [INFO] [stdout] 332 | | true => interior, [INFO] [stdout] 333 | | false => self.mem[interior as usize], [INFO] [stdout] 334 | | }; [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] 331 ~ match assign { [INFO] [stdout] 332 + true => interior, [INFO] [stdout] 333 + false => self.mem[interior as usize], [INFO] [stdout] 334 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d8.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | return Ok(int_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] 75 - return Ok(int_vec); [INFO] [stdout] 75 + Ok(int_vec) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:338:9 [INFO] [stdout] | [INFO] [stdout] 338 | return val / 10i64.pow(*pwr as u32) % 10; [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] 338 - return val / 10i64.pow(*pwr as u32) % 10; [INFO] [stdout] 338 + val / 10i64.pow(*pwr as u32) % 10 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d9.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | return common(1); [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] 4 - return common(1); [INFO] [stdout] 4 + common(1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | return Point { x, y }; [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] 12 - return Point { x, y }; [INFO] [stdout] 12 + Point { x, y } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d9.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | return common(2); [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] 8 - return common(2); [INFO] [stdout] 8 + common(2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | return Point { x: 0, y: 0 }; [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] 16 - return Point { x: 0, y: 0 }; [INFO] [stdout] 16 + Point { x: 0, y: 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/d9.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | return Ok(cpu.last_output.unwrap()); [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] 16 - return Ok(cpu.last_output.unwrap()); [INFO] [stdout] 16 + Ok(cpu.last_output.unwrap()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is `Copy`) usually take `self` by value [INFO] [stdout] --> src/shared.rs:19:22 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn to_string(&self) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implementation of inherent method `to_string(&self) -> String` for type `shared::Point` [INFO] [stdout] --> src/shared.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | / pub fn to_string(&self) -> String { [INFO] [stdout] 20 | | return format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()); [INFO] [stdout] 21 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: implement trait `Display` for type `shared::Point` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string [INFO] [stdout] = note: `#[warn(clippy::inherent_to_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | / return IntCodeCPU { [INFO] [stdout] 30 | | mem: Vec::new(), [INFO] [stdout] 31 | | mem_end: 0, [INFO] [stdout] 32 | | instr_ptr: 0, [INFO] [stdout] ... | [INFO] [stdout] 38 | | debug_log: 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#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 29 ~ IntCodeCPU { [INFO] [stdout] 30 + mem: Vec::new(), [INFO] [stdout] 31 + mem_end: 0, [INFO] [stdout] 32 + instr_ptr: 0, [INFO] [stdout] 33 + relative_base: 0, [INFO] [stdout] 34 + input: VecDeque::new(), [INFO] [stdout] 35 + output: Vec::new(), [INFO] [stdout] 36 + last_output: None, [INFO] [stdout] 37 + state: CPUState::Ready, [INFO] [stdout] 38 + debug_log: false, [INFO] [stdout] 39 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | return format!("{}{}{}", self.x.to_string(), ",", self.y.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] 20 - return format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()); [INFO] [stdout] 20 + format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.last_output` after checking its variant with `is_some` [INFO] [stdout] --> src/intcode.rs:45:23 [INFO] [stdout] | [INFO] [stdout] 44 | if self.last_output.is_some() { [INFO] [stdout] | ----------------------------- help: try: `if let Some() = self.last_output` [INFO] [stdout] 45 | lo = Some(self.last_output.unwrap()); [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] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/shared.rs:20:40 [INFO] [stdout] | [INFO] [stdout] 20 | return format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/shared.rs:20:65 [INFO] [stdout] | [INFO] [stdout] 20 | return format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / return IntCodeCPU { [INFO] [stdout] 50 | | mem: self.mem.clone(), [INFO] [stdout] 51 | | mem_end: self.mem_end, [INFO] [stdout] 52 | | instr_ptr: self.instr_ptr, [INFO] [stdout] ... | [INFO] [stdout] 58 | | debug_log: self.debug_log, [INFO] [stdout] 59 | | }; [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] 49 ~ IntCodeCPU { [INFO] [stdout] 50 + mem: self.mem.clone(), [INFO] [stdout] 51 + mem_end: self.mem_end, [INFO] [stdout] 52 + instr_ptr: self.instr_ptr, [INFO] [stdout] 53 + relative_base: self.relative_base, [INFO] [stdout] 54 + input: self.input.clone(), [INFO] [stdout] 55 + output: self.output.clone(), [INFO] [stdout] 56 + last_output: lo, [INFO] [stdout] 57 + state: self.state, [INFO] [stdout] 58 + debug_log: self.debug_log, [INFO] [stdout] 59 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | / return Point { [INFO] [stdout] 30 | | x: pieces[0], [INFO] [stdout] 31 | | y: pieces[1], [INFO] [stdout] 32 | | }; [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] 29 ~ Point { [INFO] [stdout] 30 + x: pieces[0], [INFO] [stdout] 31 + y: pieces[1], [INFO] [stdout] 32 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/intcode.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | let lo: Option; [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 `lo` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 43 ~ [INFO] [stdout] 44 ~ let lo: Option = if self.last_output.is_some() { [INFO] [stdout] 45 ~ Some(self.last_output.unwrap()) [INFO] [stdout] 46 | } else { [INFO] [stdout] 47 ~ None [INFO] [stdout] 48 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/shared.rs:40:21 [INFO] [stdout] | [INFO] [stdout] 40 | rads = ((-1f32 * PI) - rads).abs() + PI; [INFO] [stdout] | ^^^^^^^^^^^^ help: consider using: `-PI` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `snap.last_output` after checking its variant with `is_some` [INFO] [stdout] --> src/intcode.rs:65:23 [INFO] [stdout] | [INFO] [stdout] 64 | if snap.last_output.is_some() { [INFO] [stdout] | ----------------------------- help: try: `if let Some() = snap.last_output` [INFO] [stdout] 65 | lo = Some(snap.last_output.unwrap()); [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/intcode.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | let lo: Option; [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 `lo` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 63 ~ [INFO] [stdout] 64 ~ let lo: Option = if snap.last_output.is_some() { [INFO] [stdout] 65 ~ Some(snap.last_output.unwrap()) [INFO] [stdout] 66 | } else { [INFO] [stdout] 67 ~ None [INFO] [stdout] 68 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | / return UTreeNode { [INFO] [stdout] 91 | | parent, [INFO] [stdout] 92 | | value: val, [INFO] [stdout] 93 | | children: Vec::new(), [INFO] [stdout] 94 | | visited: false, [INFO] [stdout] 95 | | }; [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] 90 ~ UTreeNode { [INFO] [stdout] 91 + parent, [INFO] [stdout] 92 + value: val, [INFO] [stdout] 93 + children: Vec::new(), [INFO] [stdout] 94 + visited: false, [INFO] [stdout] 95 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | return (a.x - b.x).abs() + (a.y - b.y).abs(); [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] 100 - return (a.x - b.x).abs() + (a.y - b.y).abs(); [INFO] [stdout] 100 + (a.x - b.x).abs() + (a.y - b.y).abs() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | return ((x * x + y * y) as f32).sqrt(); [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 ((x * x + y * y) as f32).sqrt(); [INFO] [stdout] 106 + ((x * x + y * y) as f32).sqrt() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 110 | return (distance(a, b) * 1000000f32).floor() as i32; [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 (distance(a, b) * 1000000f32).floor() as i32; [INFO] [stdout] 110 + (distance(a, b) * 1000000f32).floor() as i32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | return Ok(data); [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] 86 - return Ok(data); [INFO] [stdout] 86 + Ok(data) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | return self.mem[index]; [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] 103 - return self.mem[index]; [INFO] [stdout] 103 + self.mem[index] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | return self.input.len() > 0; [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 self.input.len() > 0; [INFO] [stdout] 128 + self.input.len() > 0 [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/shared.rs:113:28 [INFO] [stdout] | [INFO] [stdout] 113 | pub fn print_image(img: &Vec, w: usize, h: 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] 113 - pub fn print_image(img: &Vec, w: usize, h: usize) [INFO] [stdout] 113 + pub fn print_image(img: &[T], w: usize, h: usize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/intcode.rs:128:16 [INFO] [stdout] | [INFO] [stdout] 128 | return self.input.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.input.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: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | return self.output.len() > 0; [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] 132 - return self.output.len() > 0; [INFO] [stdout] 132 + self.output.len() > 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/intcode.rs:132:16 [INFO] [stdout] | [INFO] [stdout] 132 | return self.output.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.output.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `img` [INFO] [stdout] --> src/shared.rs:120:18 [INFO] [stdout] | [INFO] [stdout] 120 | for x in row_start..row_end { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 120 - for x in row_start..row_end { [INFO] [stdout] 120 + for in img.iter().take(row_end).skip(row_start) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | return self.input.pop_front().unwrap(); [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] 145 - return self.input.pop_front().unwrap(); [INFO] [stdout] 145 + self.input.pop_front().unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `print!()` with a format string that ends in a single newline [INFO] [stdout] --> src/shared.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | print!("\n") [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stdout] = note: `#[warn(clippy::print_with_newline)]` on by default [INFO] [stdout] help: use `println!` instead [INFO] [stdout] | [INFO] [stdout] 123 - print!("\n") [INFO] [stdout] 123 + println!() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | / return img [INFO] [stdout] 129 | | .iter() [INFO] [stdout] 130 | | .map(|x| match x { [INFO] [stdout] 131 | | 0 => ' ', [INFO] [stdout] ... | [INFO] [stdout] 137 | | }) [INFO] [stdout] 138 | | .collect(); [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 ~ img [INFO] [stdout] 129 + .iter() [INFO] [stdout] 130 + .map(|x| match x { [INFO] [stdout] 131 + 0 => ' ', [INFO] [stdout] 132 + 1 => '#', [INFO] [stdout] 133 + 2 => '=', [INFO] [stdout] 134 + 3 => '-', [INFO] [stdout] 135 + 4 => 'o', [INFO] [stdout] 136 + _ => ' ', [INFO] [stdout] 137 + }) [INFO] [stdout] 138 ~ .collect() [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/shared.rs:127:26 [INFO] [stdout] | [INFO] [stdout] 127 | pub fn visual_image(img: &Vec) -> 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] 127 - pub fn visual_image(img: &Vec) -> Vec { [INFO] [stdout] 127 + pub fn visual_image(img: &[u8]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 232 | return if a < b { 1 } else { 0 }; [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] 232 - return if a < b { 1 } else { 0 }; [INFO] [stdout] 232 + if a < b { 1 } else { 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:239:21 [INFO] [stdout] | [INFO] [stdout] 239 | return if a == b { 1 } else { 0 }; [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] 239 - return if a == b { 1 } else { 0 }; [INFO] [stdout] 239 + if a == b { 1 } else { 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:293:5 [INFO] [stdout] | [INFO] [stdout] 293 | return (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122); [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] 293 - return (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122); [INFO] [stdout] 293 + (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/shared.rs:293:12 [INFO] [stdout] | [INFO] [stdout] 293 | return (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(65..=90).contains(&c_int)` [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/shared.rs:293:44 [INFO] [stdout] | [INFO] [stdout] 293 | return (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(97..=122).contains(&c_int)` [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: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:275:9 [INFO] [stdout] | [INFO] [stdout] 275 | return (param0, param1); [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] 275 - return (param0, param1); [INFO] [stdout] 275 + (param0, param1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:298:5 [INFO] [stdout] | [INFO] [stdout] 298 | return c_int >= 97 && c_int <= 122; [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] 298 - return c_int >= 97 && c_int <= 122; [INFO] [stdout] 298 + c_int >= 97 && c_int <= 122 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/shared.rs:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | return c_int >= 97 && c_int <= 122; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(97..=122).contains(&c_int)` [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: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:282:9 [INFO] [stdout] | [INFO] [stdout] 282 | return (p0, p1, assign_index as usize); [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] 282 - return (p0, p1, assign_index as usize); [INFO] [stdout] 282 + (p0, p1, assign_index as usize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:303:5 [INFO] [stdout] | [INFO] [stdout] 303 | return c_int >= 65 && c_int <= 90; [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] 303 - return c_int >= 65 && c_int <= 90; [INFO] [stdout] 303 + c_int >= 65 && c_int <= 90 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/shared.rs:303:12 [INFO] [stdout] | [INFO] [stdout] 303 | return c_int >= 65 && c_int <= 90; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(65..=90).contains(&c_int)` [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: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:309:5 [INFO] [stdout] | [INFO] [stdout] 309 | return itoa(c_int - 32); [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] 309 - return itoa(c_int - 32); [INFO] [stdout] 309 + itoa(c_int - 32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:314:5 [INFO] [stdout] | [INFO] [stdout] 314 | return itoa(c_int + 32); [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] 314 - return itoa(c_int + 32); [INFO] [stdout] 314 + itoa(c_int + 32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | return chars.into_iter().collect(); [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] 320 - return chars.into_iter().collect(); [INFO] [stdout] 320 + chars.into_iter().collect() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:310:9 [INFO] [stdout] | [INFO] [stdout] 310 | / return val [INFO] [stdout] 311 | | - IntCodeCPU::dig(val, &2) * 10i64.pow(2) [INFO] [stdout] 312 | | - IntCodeCPU::dig(val, &3) * 10i64.pow(3) [INFO] [stdout] 313 | | - IntCodeCPU::dig(val, &4) * 10i64.pow(4); [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] 310 ~ val [INFO] [stdout] 311 + - IntCodeCPU::dig(val, &2) * 10i64.pow(2) [INFO] [stdout] 312 + - IntCodeCPU::dig(val, &3) * 10i64.pow(3) [INFO] [stdout] 313 ~ - IntCodeCPU::dig(val, &4) * 10i64.pow(4) [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/shared.rs:318:25 [INFO] [stdout] | [INFO] [stdout] 318 | pub fn ascii_image(img: &Vec) -> String { [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] 318 - pub fn ascii_image(img: &Vec) -> String { [INFO] [stdout] 318 + pub fn ascii_image(img: &[i64]) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:317:9 [INFO] [stdout] | [INFO] [stdout] 317 | return IntCodeCPU::dig(val, &(param + 2)); [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] 317 - return IntCodeCPU::dig(val, &(param + 2)); [INFO] [stdout] 317 + IntCodeCPU::dig(val, &(param + 2)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:324:5 [INFO] [stdout] | [INFO] [stdout] 324 | return img[(w * p.y + p.x) as usize]; [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] 324 - return img[(w * p.y + p.x) as usize]; [INFO] [stdout] 324 + img[(w * p.y + p.x) as 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/shared.rs:323:26 [INFO] [stdout] | [INFO] [stdout] 323 | pub fn get_pixel_at(img: &Vec, w: i32, p: &Point) -> u8 { [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] 323 - pub fn get_pixel_at(img: &Vec, w: i32, p: &Point) -> u8 { [INFO] [stdout] 323 + pub fn get_pixel_at(img: &[u8], w: i32, p: &Point) -> u8 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 331 | / return match assign { [INFO] [stdout] 332 | | true => interior, [INFO] [stdout] 333 | | false => self.mem[interior as usize], [INFO] [stdout] 334 | | }; [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] 331 ~ match assign { [INFO] [stdout] 332 + true => interior, [INFO] [stdout] 333 + false => self.mem[interior as usize], [INFO] [stdout] 334 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/shared.rs:327:26 [INFO] [stdout] | [INFO] [stdout] 327 | pub fn set_pixel_at(img: &mut Vec, w: i32, p: &Point, val: u8) { [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] 327 - pub fn set_pixel_at(img: &mut Vec, w: i32, p: &Point, val: u8) { [INFO] [stdout] 327 + pub fn set_pixel_at(img: &mut [u8], w: i32, p: &Point, val: u8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/intcode.rs:338:9 [INFO] [stdout] | [INFO] [stdout] 338 | return val / 10i64.pow(*pwr as u32) % 10; [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] 338 - return val / 10i64.pow(*pwr as u32) % 10; [INFO] [stdout] 338 + val / 10i64.pow(*pwr as u32) % 10 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/shared.rs:336:5 [INFO] [stdout] | [INFO] [stdout] 336 | / let mut res = Vec::new(); [INFO] [stdout] 337 | | // n [INFO] [stdout] 338 | | res.push(Point::new(p.x, p.y - 1)); [INFO] [stdout] ... | [INFO] [stdout] 344 | | res.push(Point::new(p.x - 1, p.y)); [INFO] [stdout] | |_______________________________________^ help: consider using the `vec![]` macro: `let res = 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: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | return Point { x, y }; [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] 12 - return Point { x, y }; [INFO] [stdout] 12 + Point { x, y } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | return Point { x: 0, y: 0 }; [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] 16 - return Point { x: 0, y: 0 }; [INFO] [stdout] 16 + Point { x: 0, y: 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is `Copy`) usually take `self` by value [INFO] [stdout] --> src/shared.rs:19:22 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn to_string(&self) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implementation of inherent method `to_string(&self) -> String` for type `shared::Point` [INFO] [stdout] --> src/shared.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | / pub fn to_string(&self) -> String { [INFO] [stdout] 20 | | return format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()); [INFO] [stdout] 21 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: implement trait `Display` for type `shared::Point` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string [INFO] [stdout] = note: `#[warn(clippy::inherent_to_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | return format!("{}{}{}", self.x.to_string(), ",", self.y.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] 20 - return format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()); [INFO] [stdout] 20 + format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/shared.rs:20:40 [INFO] [stdout] | [INFO] [stdout] 20 | return format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/shared.rs:20:65 [INFO] [stdout] | [INFO] [stdout] 20 | return format!("{}{}{}", self.x.to_string(), ",", self.y.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | / return Point { [INFO] [stdout] 30 | | x: pieces[0], [INFO] [stdout] 31 | | y: pieces[1], [INFO] [stdout] 32 | | }; [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] 29 ~ Point { [INFO] [stdout] 30 + x: pieces[0], [INFO] [stdout] 31 + y: pieces[1], [INFO] [stdout] 32 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/shared.rs:40:21 [INFO] [stdout] | [INFO] [stdout] 40 | rads = ((-1f32 * PI) - rads).abs() + PI; [INFO] [stdout] | ^^^^^^^^^^^^ help: consider using: `-PI` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | / return UTreeNode { [INFO] [stdout] 91 | | parent, [INFO] [stdout] 92 | | value: val, [INFO] [stdout] 93 | | children: Vec::new(), [INFO] [stdout] 94 | | visited: false, [INFO] [stdout] 95 | | }; [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] 90 ~ UTreeNode { [INFO] [stdout] 91 + parent, [INFO] [stdout] 92 + value: val, [INFO] [stdout] 93 + children: Vec::new(), [INFO] [stdout] 94 + visited: false, [INFO] [stdout] 95 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | return (a.x - b.x).abs() + (a.y - b.y).abs(); [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] 100 - return (a.x - b.x).abs() + (a.y - b.y).abs(); [INFO] [stdout] 100 + (a.x - b.x).abs() + (a.y - b.y).abs() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | return ((x * x + y * y) as f32).sqrt(); [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 ((x * x + y * y) as f32).sqrt(); [INFO] [stdout] 106 + ((x * x + y * y) as f32).sqrt() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 110 | return (distance(a, b) * 1000000f32).floor() as i32; [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 (distance(a, b) * 1000000f32).floor() as i32; [INFO] [stdout] 110 + (distance(a, b) * 1000000f32).floor() as i32 [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/shared.rs:113:28 [INFO] [stdout] | [INFO] [stdout] 113 | pub fn print_image(img: &Vec, w: usize, h: 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] 113 - pub fn print_image(img: &Vec, w: usize, h: usize) [INFO] [stdout] 113 + pub fn print_image(img: &[T], w: usize, h: usize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `img` [INFO] [stdout] --> src/shared.rs:120:18 [INFO] [stdout] | [INFO] [stdout] 120 | for x in row_start..row_end { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 120 - for x in row_start..row_end { [INFO] [stdout] 120 + for in img.iter().take(row_end).skip(row_start) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `print!()` with a format string that ends in a single newline [INFO] [stdout] --> src/shared.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | print!("\n") [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stdout] = note: `#[warn(clippy::print_with_newline)]` on by default [INFO] [stdout] help: use `println!` instead [INFO] [stdout] | [INFO] [stdout] 123 - print!("\n") [INFO] [stdout] 123 + println!() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | / return img [INFO] [stdout] 129 | | .iter() [INFO] [stdout] 130 | | .map(|x| match x { [INFO] [stdout] 131 | | 0 => ' ', [INFO] [stdout] ... | [INFO] [stdout] 137 | | }) [INFO] [stdout] 138 | | .collect(); [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 ~ img [INFO] [stdout] 129 + .iter() [INFO] [stdout] 130 + .map(|x| match x { [INFO] [stdout] 131 + 0 => ' ', [INFO] [stdout] 132 + 1 => '#', [INFO] [stdout] 133 + 2 => '=', [INFO] [stdout] 134 + 3 => '-', [INFO] [stdout] 135 + 4 => 'o', [INFO] [stdout] 136 + _ => ' ', [INFO] [stdout] 137 + }) [INFO] [stdout] 138 ~ .collect() [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/shared.rs:127:26 [INFO] [stdout] | [INFO] [stdout] 127 | pub fn visual_image(img: &Vec) -> 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] 127 - pub fn visual_image(img: &Vec) -> Vec { [INFO] [stdout] 127 + pub fn visual_image(img: &[u8]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:293:5 [INFO] [stdout] | [INFO] [stdout] 293 | return (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122); [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] 293 - return (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122); [INFO] [stdout] 293 + (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/shared.rs:293:12 [INFO] [stdout] | [INFO] [stdout] 293 | return (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(65..=90).contains(&c_int)` [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/shared.rs:293:44 [INFO] [stdout] | [INFO] [stdout] 293 | return (c_int >= 65 && c_int <= 90) || (c_int >= 97 && c_int <= 122); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(97..=122).contains(&c_int)` [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: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:298:5 [INFO] [stdout] | [INFO] [stdout] 298 | return c_int >= 97 && c_int <= 122; [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] 298 - return c_int >= 97 && c_int <= 122; [INFO] [stdout] 298 + c_int >= 97 && c_int <= 122 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/shared.rs:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | return c_int >= 97 && c_int <= 122; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(97..=122).contains(&c_int)` [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: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:303:5 [INFO] [stdout] | [INFO] [stdout] 303 | return c_int >= 65 && c_int <= 90; [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] 303 - return c_int >= 65 && c_int <= 90; [INFO] [stdout] 303 + c_int >= 65 && c_int <= 90 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/shared.rs:303:12 [INFO] [stdout] | [INFO] [stdout] 303 | return c_int >= 65 && c_int <= 90; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(65..=90).contains(&c_int)` [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: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:309:5 [INFO] [stdout] | [INFO] [stdout] 309 | return itoa(c_int - 32); [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] 309 - return itoa(c_int - 32); [INFO] [stdout] 309 + itoa(c_int - 32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:314:5 [INFO] [stdout] | [INFO] [stdout] 314 | return itoa(c_int + 32); [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] 314 - return itoa(c_int + 32); [INFO] [stdout] 314 + itoa(c_int + 32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | return chars.into_iter().collect(); [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] 320 - return chars.into_iter().collect(); [INFO] [stdout] 320 + chars.into_iter().collect() [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/shared.rs:318:25 [INFO] [stdout] | [INFO] [stdout] 318 | pub fn ascii_image(img: &Vec) -> String { [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] 318 - pub fn ascii_image(img: &Vec) -> String { [INFO] [stdout] 318 + pub fn ascii_image(img: &[i64]) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/shared.rs:324:5 [INFO] [stdout] | [INFO] [stdout] 324 | return img[(w * p.y + p.x) as usize]; [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] 324 - return img[(w * p.y + p.x) as usize]; [INFO] [stdout] 324 + img[(w * p.y + p.x) as 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/shared.rs:323:26 [INFO] [stdout] | [INFO] [stdout] 323 | pub fn get_pixel_at(img: &Vec, w: i32, p: &Point) -> u8 { [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] 323 - pub fn get_pixel_at(img: &Vec, w: i32, p: &Point) -> u8 { [INFO] [stdout] 323 + pub fn get_pixel_at(img: &[u8], w: i32, p: &Point) -> u8 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/shared.rs:327:26 [INFO] [stdout] | [INFO] [stdout] 327 | pub fn set_pixel_at(img: &mut Vec, w: i32, p: &Point, val: u8) { [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] 327 - pub fn set_pixel_at(img: &mut Vec, w: i32, p: &Point, val: u8) { [INFO] [stdout] 327 + pub fn set_pixel_at(img: &mut [u8], w: i32, p: &Point, val: u8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/shared.rs:336:5 [INFO] [stdout] | [INFO] [stdout] 336 | / let mut res = Vec::new(); [INFO] [stdout] 337 | | // n [INFO] [stdout] 338 | | res.push(Point::new(p.x, p.y - 1)); [INFO] [stdout] ... | [INFO] [stdout] 344 | | res.push(Point::new(p.x - 1, p.y)); [INFO] [stdout] | |_______________________________________^ help: consider using the `vec![]` macro: `let res = 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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.89s [INFO] running `Command { std: "docker" "inspect" "1c40b838f3e8fbe4c66fd39c9cddf41f0ed33473c44a88d392334e1c35f8c2a4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1c40b838f3e8fbe4c66fd39c9cddf41f0ed33473c44a88d392334e1c35f8c2a4", kill_on_drop: false }` [INFO] [stdout] 1c40b838f3e8fbe4c66fd39c9cddf41f0ed33473c44a88d392334e1c35f8c2a4