[INFO] cloning repository https://github.com/kwigley/aoc-2023 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kwigley/aoc-2023" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkwigley%2Faoc-2023", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkwigley%2Faoc-2023'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 70dd0b6fd1013676205e47d5db219094ae3eb45a [INFO] linting kwigley/aoc-2023 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkwigley%2Faoc-2023" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-3-tc1/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/kwigley/aoc-2023 [INFO] finished tweaking git repo https://github.com/kwigley/aoc-2023 [INFO] tweaked toml for git repo https://github.com/kwigley/aoc-2023 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/kwigley/aoc-2023 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/kwigley/aoc-2023 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] 0bc425b8c929c46414520650346b011e69c51fc61da01d0eed59eb4f1db8eb21 [INFO] running `Command { std: "docker" "start" "-a" "0bc425b8c929c46414520650346b011e69c51fc61da01d0eed59eb4f1db8eb21", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0bc425b8c929c46414520650346b011e69c51fc61da01d0eed59eb4f1db8eb21", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0bc425b8c929c46414520650346b011e69c51fc61da01d0eed59eb4f1db8eb21", kill_on_drop: false }` [INFO] [stdout] 0bc425b8c929c46414520650346b011e69c51fc61da01d0eed59eb4f1db8eb21 [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] 1ba25a7e3481f3d3c42d5eedb352b9ebeaf9f689e8bcb3b9666886eb35ae99c9 [INFO] running `Command { std: "docker" "start" "-a" "1ba25a7e3481f3d3c42d5eedb352b9ebeaf9f689e8bcb3b9666886eb35ae99c9", kill_on_drop: false }` [INFO] [stderr] Checking pico-args v0.5.0 [INFO] [stderr] Checking advent_of_code v0.9.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/template/commands/all.rs:170:26 [INFO] [stdout] | [INFO] [stdout] 170 | let str_timing = line [INFO] [stdout] | __________________________^ [INFO] [stdout] 171 | | .split(" samples)") [INFO] [stdout] 172 | | .next()? [INFO] [stdout] 173 | | .split('(') [INFO] [stdout] 174 | | .last()? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 174 - .last()? [INFO] [stdout] 174 + .next_back()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/template/commands/scaffold.rs:42:36 [INFO] [stdout] | [INFO] [stdout] 42 | OpenOptions::new().write(true).create(true).open(path) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> src/template/runner.rs:54:28 [INFO] [stdout] | [INFO] [stdout] 54 | let bench_iterations = cmp::min( [INFO] [stdout] | ____________________________^ [INFO] [stdout] 55 | | 10000, [INFO] [stdout] 56 | | cmp::max( [INFO] [stdout] 57 | | Duration::from_secs(1).as_nanos() / cmp::max(base_time.as_nanos(), 10), [INFO] [stdout] 58 | | 10, [INFO] [stdout] 59 | | ), [INFO] [stdout] 60 | | ); [INFO] [stdout] | |_____^ help: replace with clamp: `(Duration::from_secs(1).as_nanos() / cmp::max(base_time.as_nanos(), 10)).clamp(10, 10000)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] = note: `#[warn(clippy::manual_clamp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/template/commands/all.rs:170:26 [INFO] [stdout] | [INFO] [stdout] 170 | let str_timing = line [INFO] [stdout] | __________________________^ [INFO] [stdout] 171 | | .split(" samples)") [INFO] [stdout] 172 | | .next()? [INFO] [stdout] 173 | | .split('(') [INFO] [stdout] 174 | | .last()? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 174 - .last()? [INFO] [stdout] 174 + .next_back()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/template/commands/scaffold.rs:42:36 [INFO] [stdout] | [INFO] [stdout] 42 | OpenOptions::new().write(true).create(true).open(path) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> src/template/runner.rs:54:28 [INFO] [stdout] | [INFO] [stdout] 54 | let bench_iterations = cmp::min( [INFO] [stdout] | ____________________________^ [INFO] [stdout] 55 | | 10000, [INFO] [stdout] 56 | | cmp::max( [INFO] [stdout] 57 | | Duration::from_secs(1).as_nanos() / cmp::max(base_time.as_nanos(), 10), [INFO] [stdout] 58 | | 10, [INFO] [stdout] 59 | | ), [INFO] [stdout] 60 | | ); [INFO] [stdout] | |_____^ help: replace with clamp: `(Duration::from_secs(1).as_nanos() / cmp::max(base_time.as_nanos(), 10)).clamp(10, 10000)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] = note: `#[warn(clippy::manual_clamp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/bin/04.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn part_one(input: &str) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/bin/04.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn part_two(input: &str) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/bin/04.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn part_one(input: &str) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/bin/04.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn part_two(input: &str) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/03.rs:73:25 [INFO] [stdout] | [INFO] [stdout] 73 | / (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] ... | [INFO] [stdout] 85 | | (l.0 + 1 == s.0 && l.1 == s.1) || [INFO] [stdout] | |______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 78 - // x x l [INFO] [stdout] 79 - // x s x [INFO] [stdout] 80 - // x x x [INFO] [stdout] 81 - (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 82 - // x x x [INFO] [stdout] 83 - // l s x [INFO] [stdout] 84 - // x x x [INFO] [stdout] 85 - (l.0 + 1 == s.0 && l.1 == s.1) || [INFO] [stdout] 73 + !(l.0 + 1 != s.0 && l.1 - 1 != s.1 || l.1 - 1 != s.1 && l.1 != s.1 || l.0 + 1 != s.0 && l.0 != s.0 && l.0 - 1 != s.0) || [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 78 - // x x l [INFO] [stdout] 79 - // x s x [INFO] [stdout] 80 - // x x x [INFO] [stdout] 81 - (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 82 - // x x x [INFO] [stdout] 83 - // l s x [INFO] [stdout] 84 - // x x x [INFO] [stdout] 85 - (l.0 + 1 == s.0 && l.1 == s.1) || [INFO] [stdout] 73 + (l.0 - 1 == s.0 || l.0 == s.0 || l.0 + 1 == s.0) && (l.1 == s.1 || l.1 - 1 == s.1) && (l.1 - 1 == s.1 || l.0 + 1 == s.0) || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/03.rs:73:25 [INFO] [stdout] | [INFO] [stdout] 73 | / (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] ... | [INFO] [stdout] 81 | | (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] | |__________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 78 - // x x l [INFO] [stdout] 79 - // x s x [INFO] [stdout] 80 - // x x x [INFO] [stdout] 81 - (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 73 + !(l.1 - 1 != s.1 || l.0 + 1 != s.0 && l.0 != s.0 && l.0 - 1 != s.0) || [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 78 - // x x l [INFO] [stdout] 79 - // x s x [INFO] [stdout] 80 - // x x x [INFO] [stdout] 81 - (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 73 + (l.0 - 1 == s.0 || l.0 == s.0 || l.0 + 1 == s.0) && l.1 - 1 == s.1 || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/03.rs:73:25 [INFO] [stdout] | [INFO] [stdout] 73 | / (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] ... | [INFO] [stdout] 77 | | (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] | |______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 73 + !(l.1 - 1 != s.1 || l.0 + 1 != s.0 && l.0 != s.0) || [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 73 + (l.0 == s.0 || l.0 + 1 == s.0) && l.1 - 1 == s.1 || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/03.rs:73:25 [INFO] [stdout] | [INFO] [stdout] 73 | / (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] ... | [INFO] [stdout] 85 | | (l.0 + 1 == s.0 && l.1 == s.1) || [INFO] [stdout] | |______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 78 - // x x l [INFO] [stdout] 79 - // x s x [INFO] [stdout] 80 - // x x x [INFO] [stdout] 81 - (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 82 - // x x x [INFO] [stdout] 83 - // l s x [INFO] [stdout] 84 - // x x x [INFO] [stdout] 85 - (l.0 + 1 == s.0 && l.1 == s.1) || [INFO] [stdout] 73 + !(l.0 + 1 != s.0 && l.1 - 1 != s.1 || l.1 - 1 != s.1 && l.1 != s.1 || l.0 + 1 != s.0 && l.0 != s.0 && l.0 - 1 != s.0) || [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 78 - // x x l [INFO] [stdout] 79 - // x s x [INFO] [stdout] 80 - // x x x [INFO] [stdout] 81 - (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 82 - // x x x [INFO] [stdout] 83 - // l s x [INFO] [stdout] 84 - // x x x [INFO] [stdout] 85 - (l.0 + 1 == s.0 && l.1 == s.1) || [INFO] [stdout] 73 + (l.0 - 1 == s.0 || l.0 == s.0 || l.0 + 1 == s.0) && (l.1 == s.1 || l.1 - 1 == s.1) && (l.1 - 1 == s.1 || l.0 + 1 == s.0) || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/03.rs:73:25 [INFO] [stdout] | [INFO] [stdout] 73 | / (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] ... | [INFO] [stdout] 81 | | (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] | |__________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 78 - // x x l [INFO] [stdout] 79 - // x s x [INFO] [stdout] 80 - // x x x [INFO] [stdout] 81 - (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 73 + !(l.1 - 1 != s.1 || l.0 + 1 != s.0 && l.0 != s.0 && l.0 - 1 != s.0) || [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 78 - // x x l [INFO] [stdout] 79 - // x s x [INFO] [stdout] 80 - // x x x [INFO] [stdout] 81 - (l.0 - 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 73 + (l.0 - 1 == s.0 || l.0 == s.0 || l.0 + 1 == s.0) && l.1 - 1 == s.1 || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/03.rs:73:25 [INFO] [stdout] | [INFO] [stdout] 73 | / (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] ... | [INFO] [stdout] 77 | | (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] | |______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 73 + !(l.1 - 1 != s.1 || l.0 + 1 != s.0 && l.0 != s.0) || [INFO] [stdout] | [INFO] [stdout] 73 - (l.0 + 1 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 74 - // x l x [INFO] [stdout] 75 - // x s x [INFO] [stdout] 76 - // x x x [INFO] [stdout] 77 - (l.0 == s.0 && l.1 - 1 == s.1) || [INFO] [stdout] 73 + (l.0 == s.0 || l.0 + 1 == s.0) && l.1 - 1 == s.1 || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.92s [INFO] running `Command { std: "docker" "inspect" "1ba25a7e3481f3d3c42d5eedb352b9ebeaf9f689e8bcb3b9666886eb35ae99c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1ba25a7e3481f3d3c42d5eedb352b9ebeaf9f689e8bcb3b9666886eb35ae99c9", kill_on_drop: false }` [INFO] [stdout] 1ba25a7e3481f3d3c42d5eedb352b9ebeaf9f689e8bcb3b9666886eb35ae99c9