[INFO] cloning repository https://github.com/tehpsy/advent-of-code-2024 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tehpsy/advent-of-code-2024" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftehpsy%2Fadvent-of-code-2024", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftehpsy%2Fadvent-of-code-2024'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 31b0d226029fdc68b040c018d1dfa5f37071a20e [INFO] linting tehpsy/advent-of-code-2024 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftehpsy%2Fadvent-of-code-2024" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/tehpsy/advent-of-code-2024 [INFO] finished tweaking git repo https://github.com/tehpsy/advent-of-code-2024 [INFO] tweaked toml for git repo https://github.com/tehpsy/advent-of-code-2024 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/tehpsy/advent-of-code-2024 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/tehpsy/advent-of-code-2024 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 469264b16ee469056a0dce1474f33ab019e2b391e16a24538166412dfb75d3da [INFO] running `Command { std: "docker" "start" "-a" "469264b16ee469056a0dce1474f33ab019e2b391e16a24538166412dfb75d3da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "469264b16ee469056a0dce1474f33ab019e2b391e16a24538166412dfb75d3da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "469264b16ee469056a0dce1474f33ab019e2b391e16a24538166412dfb75d3da", kill_on_drop: false }` [INFO] [stdout] 469264b16ee469056a0dce1474f33ab019e2b391e16a24538166412dfb75d3da [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4e188ebee440ffd60664f906f6e5b2fe463403894aaf0be684a053f25d258737 [INFO] running `Command { std: "docker" "start" "-a" "4e188ebee440ffd60664f906f6e5b2fe463403894aaf0be684a053f25d258737", kill_on_drop: false }` [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking advent-of-code-2024 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: value assigned to `end` is never read [INFO] [stdout] --> src/day03.rs:54:23 [INFO] [stdout] | [INFO] [stdout] 54 | let mut end = start; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `start_index` is never read [INFO] [stdout] --> src/day09.rs:98:42 [INFO] [stdout] | [INFO] [stdout] 98 | let mut start_index: Option = None; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `day13::Machine` is more private than the item `day13::intersection_for` [INFO] [stdout] --> src/day13.rs:74:1 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn intersection_for(machine: &Machine) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `day13::intersection_for` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `day13::Machine` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/day13.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | struct Machine { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `day13::Machine` is more private than the item `day13::min_tickets` [INFO] [stdout] --> src/day13.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn min_tickets(machine: &Machine) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `day13::min_tickets` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `day13::Machine` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/day13.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | struct Machine { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `letter` is never read [INFO] [stdout] --> src/day12.rs:108:5 [INFO] [stdout] | [INFO] [stdout] 107 | struct Region { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 108 | letter: char, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Region` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day02.rs:11:23 [INFO] [stdout] | [INFO] [stdout] 11 | input.lines().map(|line| parse_report(line)).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `parse_report` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/day02.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 36 | if direction == None && *level != previous_level { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `direction.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:60:34 [INFO] [stdout] | [INFO] [stdout] 60 | Direction::Increasing => return first < second && (first - second).abs() <= threshold, [INFO] [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] 60 - Direction::Increasing => return first < second && (first - second).abs() <= threshold, [INFO] [stdout] 60 + Direction::Increasing => first < second && (first - second).abs() <= threshold, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:61:34 [INFO] [stdout] | [INFO] [stdout] 61 | Direction::Decreasing => return first > second && (first - second).abs() <= threshold, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 61 - Direction::Decreasing => return first > second && (first - second).abs() <= threshold, [INFO] [stdout] 61 + Direction::Decreasing => first > second && (first - second).abs() <= threshold, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day03.rs:32:34 [INFO] [stdout] | [INFO] [stdout] 32 | do_dont_instruction_offsets: &Vec<(usize, usize)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 32 - do_dont_instruction_offsets: &Vec<(usize, usize)>, [INFO] [stdout] 32 + do_dont_instruction_offsets: &[(usize, usize)], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day04.rs:18:16 [INFO] [stdout] | [INFO] [stdout] 18 | x: self.x as i32 + offset.0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.x` [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 (`i32` -> `i32`) [INFO] [stdout] --> src/day04.rs:19:16 [INFO] [stdout] | [INFO] [stdout] 19 | y: self.y as i32 + offset.1, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day04.rs:132:11 [INFO] [stdout] | [INFO] [stdout] 132 | grid: &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] 132 - grid: &Vec>, [INFO] [stdout] 132 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day04.rs:149:31 [INFO] [stdout] | [INFO] [stdout] 149 | if !check_character(grid, &position, Character::X) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `position` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day04.rs:181:31 [INFO] [stdout] | [INFO] [stdout] 181 | if !check_character(grid, &position, Character::A) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `position` [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: value assigned to `end` is never read [INFO] [stdout] --> src/day03.rs:54:23 [INFO] [stdout] | [INFO] [stdout] 54 | let mut end = start; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/day05.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | / rules [INFO] [stdout] 108 | | .get(&first_number) [INFO] [stdout] 109 | | .map_or(false, |set| set.contains(&second_number)) [INFO] [stdout] | |__________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 109 - .map_or(false, |set| set.contains(&second_number)) [INFO] [stdout] 109 + .is_some_and(|set| set.contains(&second_number)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day05.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | / if i != j { [INFO] [stdout] 120 | | if !has_rule(rules, update[i], update[j] as Page) { [INFO] [stdout] 121 | | return false; [INFO] [stdout] 122 | | } [INFO] [stdout] 123 | | } [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] 119 ~ if i != j [INFO] [stdout] 120 ~ && !has_rule(rules, update[i], update[j] as Page) { [INFO] [stdout] 121 | return false; [INFO] [stdout] 122 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day06.rs:10:16 [INFO] [stdout] | [INFO] [stdout] 10 | x: self.x as i32 + direction.offset().0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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 (`i32` -> `i32`) [INFO] [stdout] --> src/day06.rs:11:16 [INFO] [stdout] | [INFO] [stdout] 11 | y: self.y as i32 + direction.offset().1, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: this boolean expression can be simplified [INFO] [stdout] --> src/day06.rs:224:24 [INFO] [stdout] | [INFO] [stdout] 224 | .filter(|cell| !cell.last_exited.is_none()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cell.last_exited.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day07.rs:41:21 [INFO] [stdout] | [INFO] [stdout] 41 | .filter_map(|line| parse_equation(line)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `parse_equation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:56:13 [INFO] [stdout] | [INFO] [stdout] 56 | return operand1 * 10u64.pow(operand2_num_digits as u32) + operand2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 56 - return operand1 * 10u64.pow(operand2_num_digits as u32) + operand2; [INFO] [stdout] 56 + operand1 * 10u64.pow(operand2_num_digits as u32) + operand2 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day08.rs:57:16 [INFO] [stdout] | [INFO] [stdout] 57 | x: self.x as i32 - other.x, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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 (`i32` -> `i32`) [INFO] [stdout] --> src/day08.rs:58:16 [INFO] [stdout] | [INFO] [stdout] 58 | y: self.y as i32 - other.y, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: you seem to want to iterate on a map's values [INFO] [stdout] --> src/day08.rs:108:35 [INFO] [stdout] | [INFO] [stdout] 108 | for (_, positions_hashset) in &antennas { [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] 108 - for (_, positions_hashset) in &antennas { [INFO] [stdout] 108 + for positions_hashset in antennas.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/day08.rs:150:35 [INFO] [stdout] | [INFO] [stdout] 150 | for (_, positions_hashset) in &antennas { [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] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 150 - for (_, positions_hashset) in &antennas { [INFO] [stdout] 150 + for positions_hashset in antennas.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/day09.rs:40:33 [INFO] [stdout] | [INFO] [stdout] 40 | disk_entries.extend(iter::repeat(Block::Empty).take(data_size as usize)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(Block::Empty, data_size as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day09.rs:123:16 [INFO] [stdout] | [INFO] [stdout] 123 | if !current_file_id.is_none() && current_file_id == Some(file_id) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current_file_id.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day09.rs:127:16 [INFO] [stdout] | [INFO] [stdout] 127 | if !current_file_id.is_none() && current_file_id != Some(file_id) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current_file_id.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day09.rs:145:5 [INFO] [stdout] | [INFO] [stdout] 145 | return Some((start_index.unwrap(), end_index.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 Some((start_index.unwrap(), end_index.unwrap())); [INFO] [stdout] 145 + Some((start_index.unwrap(), end_index.unwrap())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/day09.rs:103:16 [INFO] [stdout] | [INFO] [stdout] 103 | if current_file_id == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `current_file_id.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day10.rs:10:16 [INFO] [stdout] | [INFO] [stdout] 10 | x: self.x as i32 + direction.offset().0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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 (`i32` -> `i32`) [INFO] [stdout] --> src/day10.rs:11:16 [INFO] [stdout] | [INFO] [stdout] 11 | y: self.y as i32 + direction.offset().1, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: value assigned to `start_index` is never read [INFO] [stdout] --> src/day09.rs:98:42 [INFO] [stdout] | [INFO] [stdout] 98 | let mut start_index: Option = None; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Cell` which implements the `Copy` trait [INFO] [stdout] --> src/day10.rs:113:28 [INFO] [stdout] | [INFO] [stdout] 113 | let mut cell = grid[y][x].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `grid[y][x]` [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: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/day11.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | if num_digits % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace with: `num_digits.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day11.rs:45:10 [INFO] [stdout] | [INFO] [stdout] 45 | 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] 45 - vec: &Vec, [INFO] [stdout] 45 + vec: &[Number], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day12.rs:12:16 [INFO] [stdout] | [INFO] [stdout] 12 | x: self.x as i32 + direction.offset().0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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 (`i32` -> `i32`) [INFO] [stdout] --> src/day12.rs:13:16 [INFO] [stdout] | [INFO] [stdout] 13 | y: self.y as i32 + direction.offset().1, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: using `clone` on type `Position` which implements the `Copy` trait [INFO] [stdout] --> src/day12.rs:275:20 [INFO] [stdout] | [INFO] [stdout] 275 | visited.insert(position.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `position` [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/day13.rs:56:13 [INFO] [stdout] | [INFO] [stdout] 56 | / return Machine { [INFO] [stdout] 57 | | offset_a: parse_offset(machine_string.lines().nth(0).unwrap()), [INFO] [stdout] 58 | | offset_b: parse_offset(machine_string.lines().nth(1).unwrap()), [INFO] [stdout] 59 | | target: parse_target(machine_string.lines().nth(2).unwrap(), append_extra), [INFO] [stdout] 60 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 56 ~ Machine { [INFO] [stdout] 57 + offset_a: parse_offset(machine_string.lines().nth(0).unwrap()), [INFO] [stdout] 58 + offset_b: parse_offset(machine_string.lines().nth(1).unwrap()), [INFO] [stdout] 59 + target: parse_target(machine_string.lines().nth(2).unwrap(), append_extra), [INFO] [stdout] 60 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/day13.rs:57:40 [INFO] [stdout] | [INFO] [stdout] 57 | offset_a: parse_offset(machine_string.lines().nth(0).unwrap()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `machine_string.lines().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/day13.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | y_intersection as f64 * machine.offset_a.x as f64 / machine.offset_a.y as f64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `y_intersection` [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 operation has no effect [INFO] [stdout] --> src/day13.rs:104:25 [INFO] [stdout] | [INFO] [stdout] 104 | let num_tickets_b = num_b.round() as u64 * 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider reducing it to: `num_b.round() as u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day13.rs:111:21 [INFO] [stdout] | [INFO] [stdout] 111 | .filter_map(|machine| min_tickets(machine)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `min_tickets` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day13.rs:118:21 [INFO] [stdout] | [INFO] [stdout] 118 | .filter_map(|machine| min_tickets(machine)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `min_tickets` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `day13::Machine` is more private than the item `day13::intersection_for` [INFO] [stdout] --> src/day13.rs:74:1 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn intersection_for(machine: &Machine) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `day13::intersection_for` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `day13::Machine` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/day13.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | struct Machine { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `day13::Machine` is more private than the item `day13::min_tickets` [INFO] [stdout] --> src/day13.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn min_tickets(machine: &Machine) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `day13::min_tickets` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `day13::Machine` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/day13.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | struct Machine { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `letter` is never read [INFO] [stdout] --> src/day12.rs:108:5 [INFO] [stdout] | [INFO] [stdout] 107 | struct Region { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 108 | letter: char, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Region` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day01.rs:84:40 [INFO] [stdout] | [INFO] [stdout] 84 | assert_eq!(solve_sum_distances(&TEST_INPUT), 11); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `TEST_INPUT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day01.rs:89:37 [INFO] [stdout] | [INFO] [stdout] 89 | assert_eq!(solve_similarity(&TEST_INPUT), 31); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `TEST_INPUT` [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: redundant closure [INFO] [stdout] --> src/day02.rs:11:23 [INFO] [stdout] | [INFO] [stdout] 11 | input.lines().map(|line| parse_report(line)).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `parse_report` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/day02.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 36 | if direction == None && *level != previous_level { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `direction.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:60:34 [INFO] [stdout] | [INFO] [stdout] 60 | Direction::Increasing => return first < second && (first - second).abs() <= threshold, [INFO] [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] 60 - Direction::Increasing => return first < second && (first - second).abs() <= threshold, [INFO] [stdout] 60 + Direction::Increasing => first < second && (first - second).abs() <= threshold, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day02.rs:61:34 [INFO] [stdout] | [INFO] [stdout] 61 | Direction::Decreasing => return first > second && (first - second).abs() <= threshold, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 61 - Direction::Decreasing => return first > second && (first - second).abs() <= threshold, [INFO] [stdout] 61 + Direction::Decreasing => first > second && (first - second).abs() <= threshold, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day02.rs:109:26 [INFO] [stdout] | [INFO] [stdout] 109 | assert_eq!(part1(&TEST_INPUT), 2); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `TEST_INPUT` [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/day02.rs:114:26 [INFO] [stdout] | [INFO] [stdout] 114 | assert_eq!(part2(&TEST_INPUT), 4); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `TEST_INPUT` [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/day03.rs:32:34 [INFO] [stdout] | [INFO] [stdout] 32 | do_dont_instruction_offsets: &Vec<(usize, usize)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 32 - do_dont_instruction_offsets: &Vec<(usize, usize)>, [INFO] [stdout] 32 + do_dont_instruction_offsets: &[(usize, 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/day03.rs:90:32 [INFO] [stdout] | [INFO] [stdout] 90 | assert_eq!(solve_part1(&test_input), 161); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `test_input` [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/day03.rs:98:32 [INFO] [stdout] | [INFO] [stdout] 98 | assert_eq!(solve_part2(&test_input), 48); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `test_input` [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: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day04.rs:18:16 [INFO] [stdout] | [INFO] [stdout] 18 | x: self.x as i32 + offset.0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.x` [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 (`i32` -> `i32`) [INFO] [stdout] --> src/day04.rs:19:16 [INFO] [stdout] | [INFO] [stdout] 19 | y: self.y as i32 + offset.1, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day04.rs:132:11 [INFO] [stdout] | [INFO] [stdout] 132 | grid: &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] 132 - grid: &Vec>, [INFO] [stdout] 132 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day04.rs:149:31 [INFO] [stdout] | [INFO] [stdout] 149 | if !check_character(grid, &position, Character::X) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `position` [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/day04.rs:181:31 [INFO] [stdout] | [INFO] [stdout] 181 | if !check_character(grid, &position, Character::A) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `position` [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/day04.rs:220:32 [INFO] [stdout] | [INFO] [stdout] 220 | assert_eq!(solve_part1(&TEST_INPUT), 18); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `TEST_INPUT` [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/day04.rs:225:32 [INFO] [stdout] | [INFO] [stdout] 225 | assert_eq!(solve_part2(&TEST_INPUT), 9); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `TEST_INPUT` [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 `map_or` can be simplified [INFO] [stdout] --> src/day05.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | / rules [INFO] [stdout] 108 | | .get(&first_number) [INFO] [stdout] 109 | | .map_or(false, |set| set.contains(&second_number)) [INFO] [stdout] | |__________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 109 - .map_or(false, |set| set.contains(&second_number)) [INFO] [stdout] 109 + .is_some_and(|set| set.contains(&second_number)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/day05.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | / if i != j { [INFO] [stdout] 120 | | if !has_rule(rules, update[i], update[j] as Page) { [INFO] [stdout] 121 | | return false; [INFO] [stdout] 122 | | } [INFO] [stdout] 123 | | } [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] 119 ~ if i != j [INFO] [stdout] 120 ~ && !has_rule(rules, update[i], update[j] as Page) { [INFO] [stdout] 121 | return false; [INFO] [stdout] 122 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day06.rs:10:16 [INFO] [stdout] | [INFO] [stdout] 10 | x: self.x as i32 + direction.offset().0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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 (`i32` -> `i32`) [INFO] [stdout] --> src/day06.rs:11:16 [INFO] [stdout] | [INFO] [stdout] 11 | y: self.y as i32 + direction.offset().1, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: this boolean expression can be simplified [INFO] [stdout] --> src/day06.rs:224:24 [INFO] [stdout] | [INFO] [stdout] 224 | .filter(|cell| !cell.last_exited.is_none()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cell.last_exited.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/day06.rs:313:32 [INFO] [stdout] | [INFO] [stdout] 313 | assert_eq!(solve_part1(&TEST_INPUT), 41); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `TEST_INPUT` [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/day06.rs:318:32 [INFO] [stdout] | [INFO] [stdout] 318 | assert_eq!(solve_part2(&TEST_INPUT), 6); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `TEST_INPUT` [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: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/day06.rs:328:9 [INFO] [stdout] | [INFO] [stdout] 328 | assert_eq!(has_loop(&mut grid), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 328 - assert_eq!(has_loop(&mut grid), true); [INFO] [stdout] 328 + assert!(has_loop(&mut grid)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day07.rs:41:21 [INFO] [stdout] | [INFO] [stdout] 41 | .filter_map(|line| parse_equation(line)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `parse_equation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day07.rs:56:13 [INFO] [stdout] | [INFO] [stdout] 56 | return operand1 * 10u64.pow(operand2_num_digits as u32) + operand2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 56 - return operand1 * 10u64.pow(operand2_num_digits as u32) + operand2; [INFO] [stdout] 56 + operand1 * 10u64.pow(operand2_num_digits as u32) + operand2 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day08.rs:57:16 [INFO] [stdout] | [INFO] [stdout] 57 | x: self.x as i32 - other.x, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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 (`i32` -> `i32`) [INFO] [stdout] --> src/day08.rs:58:16 [INFO] [stdout] | [INFO] [stdout] 58 | y: self.y as i32 - other.y, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: you seem to want to iterate on a map's values [INFO] [stdout] --> src/day08.rs:108:35 [INFO] [stdout] | [INFO] [stdout] 108 | for (_, positions_hashset) in &antennas { [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] 108 - for (_, positions_hashset) in &antennas { [INFO] [stdout] 108 + for positions_hashset in antennas.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/day08.rs:150:35 [INFO] [stdout] | [INFO] [stdout] 150 | for (_, positions_hashset) in &antennas { [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] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 150 - for (_, positions_hashset) in &antennas { [INFO] [stdout] 150 + for positions_hashset in antennas.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/day09.rs:40:33 [INFO] [stdout] | [INFO] [stdout] 40 | disk_entries.extend(iter::repeat(Block::Empty).take(data_size as usize)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(Block::Empty, data_size as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day09.rs:123:16 [INFO] [stdout] | [INFO] [stdout] 123 | if !current_file_id.is_none() && current_file_id == Some(file_id) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current_file_id.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/day09.rs:127:16 [INFO] [stdout] | [INFO] [stdout] 127 | if !current_file_id.is_none() && current_file_id != Some(file_id) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current_file_id.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/day09.rs:145:5 [INFO] [stdout] | [INFO] [stdout] 145 | return Some((start_index.unwrap(), end_index.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 Some((start_index.unwrap(), end_index.unwrap())); [INFO] [stdout] 145 + Some((start_index.unwrap(), end_index.unwrap())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/day09.rs:103:16 [INFO] [stdout] | [INFO] [stdout] 103 | if current_file_id == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `current_file_id.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day10.rs:10:16 [INFO] [stdout] | [INFO] [stdout] 10 | x: self.x as i32 + direction.offset().0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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 (`i32` -> `i32`) [INFO] [stdout] --> src/day10.rs:11:16 [INFO] [stdout] | [INFO] [stdout] 11 | y: self.y as i32 + direction.offset().1, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: using `clone` on type `Cell` which implements the `Copy` trait [INFO] [stdout] --> src/day10.rs:113:28 [INFO] [stdout] | [INFO] [stdout] 113 | let mut cell = grid[y][x].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `grid[y][x]` [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: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/day11.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | if num_digits % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace with: `num_digits.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/day11.rs:45:10 [INFO] [stdout] | [INFO] [stdout] 45 | 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] 45 - vec: &Vec, [INFO] [stdout] 45 + vec: &[Number], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/day12.rs:12:16 [INFO] [stdout] | [INFO] [stdout] 12 | x: self.x as i32 + direction.offset().0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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 (`i32` -> `i32`) [INFO] [stdout] --> src/day12.rs:13:16 [INFO] [stdout] | [INFO] [stdout] 13 | y: self.y as i32 + direction.offset().1, [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `self.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: using `clone` on type `Position` which implements the `Copy` trait [INFO] [stdout] --> src/day12.rs:275:20 [INFO] [stdout] | [INFO] [stdout] 275 | visited.insert(position.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `position` [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/day13.rs:56:13 [INFO] [stdout] | [INFO] [stdout] 56 | / return Machine { [INFO] [stdout] 57 | | offset_a: parse_offset(machine_string.lines().nth(0).unwrap()), [INFO] [stdout] 58 | | offset_b: parse_offset(machine_string.lines().nth(1).unwrap()), [INFO] [stdout] 59 | | target: parse_target(machine_string.lines().nth(2).unwrap(), append_extra), [INFO] [stdout] 60 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 56 ~ Machine { [INFO] [stdout] 57 + offset_a: parse_offset(machine_string.lines().nth(0).unwrap()), [INFO] [stdout] 58 + offset_b: parse_offset(machine_string.lines().nth(1).unwrap()), [INFO] [stdout] 59 + target: parse_target(machine_string.lines().nth(2).unwrap(), append_extra), [INFO] [stdout] 60 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/day13.rs:57:40 [INFO] [stdout] | [INFO] [stdout] 57 | offset_a: parse_offset(machine_string.lines().nth(0).unwrap()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `machine_string.lines().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/day13.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | y_intersection as f64 * machine.offset_a.x as f64 / machine.offset_a.y as f64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `y_intersection` [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 operation has no effect [INFO] [stdout] --> src/day13.rs:104:25 [INFO] [stdout] | [INFO] [stdout] 104 | let num_tickets_b = num_b.round() as u64 * 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider reducing it to: `num_b.round() as u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day13.rs:111:21 [INFO] [stdout] | [INFO] [stdout] 111 | .filter_map(|machine| min_tickets(machine)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `min_tickets` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/day13.rs:118:21 [INFO] [stdout] | [INFO] [stdout] 118 | .filter_map(|machine| min_tickets(machine)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `min_tickets` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.05s [INFO] running `Command { std: "docker" "inspect" "4e188ebee440ffd60664f906f6e5b2fe463403894aaf0be684a053f25d258737", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4e188ebee440ffd60664f906f6e5b2fe463403894aaf0be684a053f25d258737", kill_on_drop: false }` [INFO] [stdout] 4e188ebee440ffd60664f906f6e5b2fe463403894aaf0be684a053f25d258737