[INFO] cloning repository https://github.com/y-pakorn/advent-of-code-2024-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/y-pakorn/advent-of-code-2024-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fy-pakorn%2Fadvent-of-code-2024-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fy-pakorn%2Fadvent-of-code-2024-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d25ef2f146c36e119ff2289f11291a8afbed8721 [INFO] linting y-pakorn/advent-of-code-2024-rs against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fy-pakorn%2Fadvent-of-code-2024-rs" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/y-pakorn/advent-of-code-2024-rs [INFO] finished tweaking git repo https://github.com/y-pakorn/advent-of-code-2024-rs [INFO] tweaked toml for git repo https://github.com/y-pakorn/advent-of-code-2024-rs written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/y-pakorn/advent-of-code-2024-rs 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/y-pakorn/advent-of-code-2024-rs already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded wide v0.7.30 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] b565b7ebef7d82541321dcde527ebbdf2662a4a392d9b6b87276bb53a61c7ba1 [INFO] running `Command { std: "docker" "start" "-a" "b565b7ebef7d82541321dcde527ebbdf2662a4a392d9b6b87276bb53a61c7ba1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b565b7ebef7d82541321dcde527ebbdf2662a4a392d9b6b87276bb53a61c7ba1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b565b7ebef7d82541321dcde527ebbdf2662a4a392d9b6b87276bb53a61c7ba1", kill_on_drop: false }` [INFO] [stdout] b565b7ebef7d82541321dcde527ebbdf2662a4a392d9b6b87276bb53a61c7ba1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 04dbf676c13ab6f823c47316e98404f0305e622055826aceab32c176793d7eac [INFO] running `Command { std: "docker" "start" "-a" "04dbf676c13ab6f823c47316e98404f0305e622055826aceab32c176793d7eac", kill_on_drop: false }` [INFO] [stderr] Checking bytemuck v1.20.0 [INFO] [stderr] Compiling matrixmultiply v0.3.9 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Compiling syn v2.0.90 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking safe_arch v0.7.2 [INFO] [stderr] Checking wide v0.7.30 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking simba v0.9.0 [INFO] [stderr] Compiling nalgebra-macros v0.2.2 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking nalgebra v0.33.2 [INFO] [stderr] Checking advent-of-code v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/bin/day-2.rs:29:47 [INFO] [stdout] | [INFO] [stdout] 29 | (o, d) if o == ord && d >= 1 && d <= 3 => {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use: `(1..=3).contains(&d)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/bin/day-2.rs:56:51 [INFO] [stdout] | [INFO] [stdout] 56 | ... (o, d) if o == ord && d >= 1 && d <= 3 => {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use: `(1..=3).contains(&d)` [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: the loop variable `y` is used to index `grid` [INFO] [stdout] --> src/bin/day-8.rs:29:14 [INFO] [stdout] | [INFO] [stdout] 29 | for y in 0..grid_y_size { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 29 - for y in 0..grid_y_size { [INFO] [stdout] 29 + for (y, ) in grid.iter().enumerate().take(grid_y_size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `grid` [INFO] [stdout] --> src/bin/day-8.rs:30:18 [INFO] [stdout] | [INFO] [stdout] 30 | for x in 0..grid_x_size { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 30 - for x in 0..grid_x_size { [INFO] [stdout] 30 + for (x, ) in grid.iter().enumerate().take(grid_x_size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert` to construct default value [INFO] [stdout] --> src/bin/day-8.rs:34:38 [INFO] [stdout] | [INFO] [stdout] 34 | annetas.entry(c).or_insert(Vec::new()).push((x, y)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/bin/day-11.rs:38:19 [INFO] [stdout] | [INFO] [stdout] 38 | } else if stone.to_string().len() % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `stone.to_string().len().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: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/bin/day-10.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | .map(|(y, row)| { [INFO] [stdout] | __________^ [INFO] [stdout] 60 | | row.iter() [INFO] [stdout] 61 | | .enumerate() [INFO] [stdout] 62 | | .filter(|(_, &v)| v == 0) [INFO] [stdout] ... | [INFO] [stdout] 65 | | }) [INFO] [stdout] 66 | | .flatten() [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 59 ~ .flat_map(|(y, row)| { [INFO] [stdout] 60 + row.iter() [INFO] [stdout] 61 + .enumerate() [INFO] [stdout] 62 + .filter(|(_, &v)| v == 0) [INFO] [stdout] 63 + .map(|(x, _)| (x, y)) [INFO] [stdout] 64 + .collect::>() [INFO] [stdout] 65 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day-4.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | / if j + 3 < grid[i].len() { [INFO] [stdout] 27 | | if (grid[i][j] == 'X' [INFO] [stdout] 28 | | && grid[i][j + 1] == 'M' [INFO] [stdout] 29 | | && grid[i][j + 2] == 'A' [INFO] [stdout] ... | [INFO] [stdout] 38 | | } [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] 26 ~ if j + 3 < grid[i].len() [INFO] [stdout] 27 ~ && ((grid[i][j] == 'X' [INFO] [stdout] 28 | && grid[i][j + 1] == 'M' [INFO] [stdout] ... [INFO] [stdout] 33 | && grid[i][j + 2] == 'M' [INFO] [stdout] 34 ~ && grid[i][j + 3] == 'X')) [INFO] [stdout] 35 | { [INFO] [stdout] 36 | count += 1; [INFO] [stdout] 37 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day-4.rs:40:13 [INFO] [stdout] | [INFO] [stdout] 40 | / if i + 3 < grid.len() { [INFO] [stdout] 41 | | if (grid[i][j] == 'X' [INFO] [stdout] 42 | | && grid[i + 1][j] == 'M' [INFO] [stdout] 43 | | && grid[i + 2][j] == 'A' [INFO] [stdout] ... | [INFO] [stdout] 52 | | } [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] 40 ~ if i + 3 < grid.len() [INFO] [stdout] 41 ~ && ((grid[i][j] == 'X' [INFO] [stdout] 42 | && grid[i + 1][j] == 'M' [INFO] [stdout] ... [INFO] [stdout] 47 | && grid[i + 2][j] == 'M' [INFO] [stdout] 48 ~ && grid[i + 3][j] == 'X')) [INFO] [stdout] 49 | { [INFO] [stdout] 50 | count += 1; [INFO] [stdout] 51 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day-4.rs:54:13 [INFO] [stdout] | [INFO] [stdout] 54 | / if i + 3 < grid.len() && j + 3 < grid[i].len() { [INFO] [stdout] 55 | | if (grid[i][j] == 'X' [INFO] [stdout] 56 | | && grid[i + 1][j + 1] == 'M' [INFO] [stdout] 57 | | && grid[i + 2][j + 2] == 'A' [INFO] [stdout] ... | [INFO] [stdout] 66 | | } [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] 54 ~ if i + 3 < grid.len() && j + 3 < grid[i].len() [INFO] [stdout] 55 ~ && ((grid[i][j] == 'X' [INFO] [stdout] 56 | && grid[i + 1][j + 1] == 'M' [INFO] [stdout] ... [INFO] [stdout] 61 | && grid[i + 2][j + 2] == 'M' [INFO] [stdout] 62 ~ && grid[i + 3][j + 3] == 'X')) [INFO] [stdout] 63 | { [INFO] [stdout] 64 | count += 1; [INFO] [stdout] 65 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day-4.rs:68:13 [INFO] [stdout] | [INFO] [stdout] 68 | / if i + 3 < grid.len() && j >= 3 { [INFO] [stdout] 69 | | if (grid[i][j] == 'X' [INFO] [stdout] 70 | | && grid[i + 1][j - 1] == 'M' [INFO] [stdout] 71 | | && grid[i + 2][j - 2] == 'A' [INFO] [stdout] ... | [INFO] [stdout] 82 | | } [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] 68 ~ if i + 3 < grid.len() && j >= 3 [INFO] [stdout] 69 ~ && ((grid[i][j] == 'X' [INFO] [stdout] 70 | && grid[i + 1][j - 1] == 'M' [INFO] [stdout] ... [INFO] [stdout] 77 | && grid[i + 3][j - 3] == 'X' [INFO] [stdout] 78 ~ }) [INFO] [stdout] 79 | { [INFO] [stdout] 80 | count += 1; [INFO] [stdout] 81 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `y` is used to index `grid` [INFO] [stdout] --> src/bin/day-8.rs:29:14 [INFO] [stdout] | [INFO] [stdout] 29 | for y in 0..grid_y_size { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 29 - for y in 0..grid_y_size { [INFO] [stdout] 29 + for (y, ) in grid.iter().enumerate().take(grid_y_size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `grid` [INFO] [stdout] --> src/bin/day-8.rs:30:18 [INFO] [stdout] | [INFO] [stdout] 30 | for x in 0..grid_x_size { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 30 - for x in 0..grid_x_size { [INFO] [stdout] 30 + for (x, ) in grid.iter().enumerate().take(grid_x_size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert` to construct default value [INFO] [stdout] --> src/bin/day-8.rs:34:38 [INFO] [stdout] | [INFO] [stdout] 34 | annetas.entry(c).or_insert(Vec::new()).push((x, y)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day-12.rs:22:15 [INFO] [stdout] | [INFO] [stdout] 22 | 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] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - grid: &Vec>, [INFO] [stdout] 22 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day-12.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 23 | visited: &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] 23 - visited: &mut Vec>, [INFO] [stdout] 23 + visited: &mut [Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/day-9.rs:83:28 [INFO] [stdout] | [INFO] [stdout] 83 | && !wf_chars[current_search_index + last_char_len - 1].is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wf_chars[current_search_index + last_char_len - 1].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: the loop variable `i` is used to index `wf_chars` [INFO] [stdout] --> src/bin/day-9.rs:88:30 [INFO] [stdout] | [INFO] [stdout] 88 | for i in current_search_index..current_search_index + last_char_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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 88 - for i in current_search_index..current_search_index + last_char_len { [INFO] [stdout] 88 + for (i, ) in wf_chars.iter().enumerate().skip(current_search_index).take(last_char_len) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: attempt to mutate range bound within loop [INFO] [stdout] --> src/bin/day-9.rs:92:29 [INFO] [stdout] | [INFO] [stdout] 92 | ... current_search_index = i + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the range of the loop is unchanged [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_range_bound [INFO] [stdout] = note: `#[warn(clippy::mut_range_bound)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/bin/day-2.rs:29:47 [INFO] [stdout] | [INFO] [stdout] 29 | (o, d) if o == ord && d >= 1 && d <= 3 => {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use: `(1..=3).contains(&d)` [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: accessing first element with `used.get(0)` [INFO] [stdout] --> src/bin/day-13.rs:61:16 [INFO] [stdout] | [INFO] [stdout] 61 | sum += used.get(0).unwrap_or(&0); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `used.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/bin/day-2.rs:56:51 [INFO] [stdout] | [INFO] [stdout] 56 | ... (o, d) if o == ord && d >= 1 && d <= 3 => {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use: `(1..=3).contains(&d)` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/bin/day-14.rs:39:35 [INFO] [stdout] | [INFO] [stdout] 39 | let construct_grid = |robots: &[((usize, usize), (isize, isize))]| { [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/bin/day-14.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 47 | let print_grid = |robots: &[((usize, usize), (isize, isize))]| { [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: the loop variable `y` is only used to index `grid` [INFO] [stdout] --> src/bin/day-14.rs:49:18 [INFO] [stdout] | [INFO] [stdout] 49 | for y in 0..y_size { [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] 49 - for y in 0..y_size { [INFO] [stdout] 49 + for in grid.iter().take(y_size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `grid` [INFO] [stdout] --> src/bin/day-14.rs:50:22 [INFO] [stdout] | [INFO] [stdout] 50 | for x in 0..x_size { [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] 50 - for x in 0..x_size { [INFO] [stdout] 50 + for in grid.iter().take(x_size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/bin/day-14.rs:60:25 [INFO] [stdout] | [INFO] [stdout] 60 | let step = |robots: &mut [((usize, usize), (isize, isize))]| { [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: useless use of `vec!` [INFO] [stdout] --> src/bin/day-14.rs:84:25 [INFO] [stdout] | [INFO] [stdout] 84 | let safety_factor = vec![ [INFO] [stdout] | _________________________^ [INFO] [stdout] 85 | | (0..x_size / 2, 0..y_size / 2), [INFO] [stdout] 86 | | (x_size.div_ceil(2)..x_size, 0..y_size / 2), [INFO] [stdout] 87 | | (0..x_size / 2, y_size.div_ceil(2)..y_size), [INFO] [stdout] 88 | | (x_size.div_ceil(2)..x_size, y_size.div_ceil(2)..y_size), [INFO] [stdout] 89 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 84 ~ let safety_factor = [(0..x_size / 2, 0..y_size / 2), [INFO] [stdout] 85 + (x_size.div_ceil(2)..x_size, 0..y_size / 2), [INFO] [stdout] 86 + (0..x_size / 2, y_size.div_ceil(2)..y_size), [INFO] [stdout] 87 + (x_size.div_ceil(2)..x_size, y_size.div_ceil(2)..y_size)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/day-9.rs:83:28 [INFO] [stdout] | [INFO] [stdout] 83 | && !wf_chars[current_search_index + last_char_len - 1].is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `wf_chars[current_search_index + last_char_len - 1].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: the loop variable `i` is used to index `wf_chars` [INFO] [stdout] --> src/bin/day-9.rs:88:30 [INFO] [stdout] | [INFO] [stdout] 88 | for i in current_search_index..current_search_index + last_char_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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 88 - for i in current_search_index..current_search_index + last_char_len { [INFO] [stdout] 88 + for (i, ) in wf_chars.iter().enumerate().skip(current_search_index).take(last_char_len) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: attempt to mutate range bound within loop [INFO] [stdout] --> src/bin/day-9.rs:92:29 [INFO] [stdout] | [INFO] [stdout] 92 | ... current_search_index = i + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the range of the loop is unchanged [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_range_bound [INFO] [stdout] = note: `#[warn(clippy::mut_range_bound)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/bin/day-10.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | .map(|(y, row)| { [INFO] [stdout] | __________^ [INFO] [stdout] 60 | | row.iter() [INFO] [stdout] 61 | | .enumerate() [INFO] [stdout] 62 | | .filter(|(_, &v)| v == 0) [INFO] [stdout] ... | [INFO] [stdout] 65 | | }) [INFO] [stdout] 66 | | .flatten() [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 59 ~ .flat_map(|(y, row)| { [INFO] [stdout] 60 + row.iter() [INFO] [stdout] 61 + .enumerate() [INFO] [stdout] 62 + .filter(|(_, &v)| v == 0) [INFO] [stdout] 63 + .map(|(x, _)| (x, y)) [INFO] [stdout] 64 + .collect::>() [INFO] [stdout] 65 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `used.get(0)` [INFO] [stdout] --> src/bin/day-13.rs:61:16 [INFO] [stdout] | [INFO] [stdout] 61 | sum += used.get(0).unwrap_or(&0); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `used.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/bin/day-11.rs:38:19 [INFO] [stdout] | [INFO] [stdout] 38 | } else if stone.to_string().len() % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `stone.to_string().len().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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/bin/day-14.rs:39:35 [INFO] [stdout] | [INFO] [stdout] 39 | let construct_grid = |robots: &[((usize, usize), (isize, isize))]| { [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/bin/day-14.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 47 | let print_grid = |robots: &[((usize, usize), (isize, isize))]| { [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: the loop variable `y` is only used to index `grid` [INFO] [stdout] --> src/bin/day-14.rs:49:18 [INFO] [stdout] | [INFO] [stdout] 49 | for y in 0..y_size { [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] 49 - for y in 0..y_size { [INFO] [stdout] 49 + for in grid.iter().take(y_size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is only used to index `grid` [INFO] [stdout] --> src/bin/day-14.rs:50:22 [INFO] [stdout] | [INFO] [stdout] 50 | for x in 0..x_size { [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] 50 - for x in 0..x_size { [INFO] [stdout] 50 + for in grid.iter().take(x_size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/bin/day-14.rs:60:25 [INFO] [stdout] | [INFO] [stdout] 60 | let step = |robots: &mut [((usize, usize), (isize, isize))]| { [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: useless use of `vec!` [INFO] [stdout] --> src/bin/day-14.rs:84:25 [INFO] [stdout] | [INFO] [stdout] 84 | let safety_factor = vec![ [INFO] [stdout] | _________________________^ [INFO] [stdout] 85 | | (0..x_size / 2, 0..y_size / 2), [INFO] [stdout] 86 | | (x_size.div_ceil(2)..x_size, 0..y_size / 2), [INFO] [stdout] 87 | | (0..x_size / 2, y_size.div_ceil(2)..y_size), [INFO] [stdout] 88 | | (x_size.div_ceil(2)..x_size, y_size.div_ceil(2)..y_size), [INFO] [stdout] 89 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 84 ~ let safety_factor = [(0..x_size / 2, 0..y_size / 2), [INFO] [stdout] 85 + (x_size.div_ceil(2)..x_size, 0..y_size / 2), [INFO] [stdout] 86 + (0..x_size / 2, y_size.div_ceil(2)..y_size), [INFO] [stdout] 87 + (x_size.div_ceil(2)..x_size, y_size.div_ceil(2)..y_size)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day-12.rs:22:15 [INFO] [stdout] | [INFO] [stdout] 22 | 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] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - grid: &Vec>, [INFO] [stdout] 22 + grid: &[Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/bin/day-12.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 23 | visited: &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] 23 - visited: &mut Vec>, [INFO] [stdout] 23 + visited: &mut [Vec], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day-4.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | / if j + 3 < grid[i].len() { [INFO] [stdout] 27 | | if (grid[i][j] == 'X' [INFO] [stdout] 28 | | && grid[i][j + 1] == 'M' [INFO] [stdout] 29 | | && grid[i][j + 2] == 'A' [INFO] [stdout] ... | [INFO] [stdout] 38 | | } [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] 26 ~ if j + 3 < grid[i].len() [INFO] [stdout] 27 ~ && ((grid[i][j] == 'X' [INFO] [stdout] 28 | && grid[i][j + 1] == 'M' [INFO] [stdout] ... [INFO] [stdout] 33 | && grid[i][j + 2] == 'M' [INFO] [stdout] 34 ~ && grid[i][j + 3] == 'X')) [INFO] [stdout] 35 | { [INFO] [stdout] 36 | count += 1; [INFO] [stdout] 37 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day-4.rs:40:13 [INFO] [stdout] | [INFO] [stdout] 40 | / if i + 3 < grid.len() { [INFO] [stdout] 41 | | if (grid[i][j] == 'X' [INFO] [stdout] 42 | | && grid[i + 1][j] == 'M' [INFO] [stdout] 43 | | && grid[i + 2][j] == 'A' [INFO] [stdout] ... | [INFO] [stdout] 52 | | } [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] 40 ~ if i + 3 < grid.len() [INFO] [stdout] 41 ~ && ((grid[i][j] == 'X' [INFO] [stdout] 42 | && grid[i + 1][j] == 'M' [INFO] [stdout] ... [INFO] [stdout] 47 | && grid[i + 2][j] == 'M' [INFO] [stdout] 48 ~ && grid[i + 3][j] == 'X')) [INFO] [stdout] 49 | { [INFO] [stdout] 50 | count += 1; [INFO] [stdout] 51 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day-4.rs:54:13 [INFO] [stdout] | [INFO] [stdout] 54 | / if i + 3 < grid.len() && j + 3 < grid[i].len() { [INFO] [stdout] 55 | | if (grid[i][j] == 'X' [INFO] [stdout] 56 | | && grid[i + 1][j + 1] == 'M' [INFO] [stdout] 57 | | && grid[i + 2][j + 2] == 'A' [INFO] [stdout] ... | [INFO] [stdout] 66 | | } [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] 54 ~ if i + 3 < grid.len() && j + 3 < grid[i].len() [INFO] [stdout] 55 ~ && ((grid[i][j] == 'X' [INFO] [stdout] 56 | && grid[i + 1][j + 1] == 'M' [INFO] [stdout] ... [INFO] [stdout] 61 | && grid[i + 2][j + 2] == 'M' [INFO] [stdout] 62 ~ && grid[i + 3][j + 3] == 'X')) [INFO] [stdout] 63 | { [INFO] [stdout] 64 | count += 1; [INFO] [stdout] 65 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/bin/day-4.rs:68:13 [INFO] [stdout] | [INFO] [stdout] 68 | / if i + 3 < grid.len() && j >= 3 { [INFO] [stdout] 69 | | if (grid[i][j] == 'X' [INFO] [stdout] 70 | | && grid[i + 1][j - 1] == 'M' [INFO] [stdout] 71 | | && grid[i + 2][j - 2] == 'A' [INFO] [stdout] ... | [INFO] [stdout] 82 | | } [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] 68 ~ if i + 3 < grid.len() && j >= 3 [INFO] [stdout] 69 ~ && ((grid[i][j] == 'X' [INFO] [stdout] 70 | && grid[i + 1][j - 1] == 'M' [INFO] [stdout] ... [INFO] [stdout] 77 | && grid[i + 3][j - 3] == 'X' [INFO] [stdout] 78 ~ }) [INFO] [stdout] 79 | { [INFO] [stdout] 80 | count += 1; [INFO] [stdout] 81 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.51s [INFO] running `Command { std: "docker" "inspect" "04dbf676c13ab6f823c47316e98404f0305e622055826aceab32c176793d7eac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "04dbf676c13ab6f823c47316e98404f0305e622055826aceab32c176793d7eac", kill_on_drop: false }` [INFO] [stdout] 04dbf676c13ab6f823c47316e98404f0305e622055826aceab32c176793d7eac