[INFO] cloning repository https://github.com/Michael-F-Bryan/advent-of-code-2020 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Michael-F-Bryan/advent-of-code-2020" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMichael-F-Bryan%2Fadvent-of-code-2020", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMichael-F-Bryan%2Fadvent-of-code-2020'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 630ccc4425c4a147573ed4997dd850c92c850963 [INFO] linting Michael-F-Bryan/advent-of-code-2020 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMichael-F-Bryan%2Fadvent-of-code-2020" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-0-tc1/source/.cargo/config [INFO] started tweaking git repo https://github.com/Michael-F-Bryan/advent-of-code-2020 [INFO] finished tweaking git repo https://github.com/Michael-F-Bryan/advent-of-code-2020 [INFO] tweaked toml for git repo https://github.com/Michael-F-Bryan/advent-of-code-2020 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Michael-F-Bryan/advent-of-code-2020 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/Michael-F-Bryan/advent-of-code-2020 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] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded funty v1.0.1 [INFO] [stderr] Downloaded inventory v0.1.9 [INFO] [stderr] Downloaded ctor v0.1.16 [INFO] [stderr] Downloaded tap v1.0.0 [INFO] [stderr] Downloaded anyhow v1.0.35 [INFO] [stderr] Downloaded pulldown-cmark v0.8.0 [INFO] [stderr] Downloaded once_cell v1.5.2 [INFO] [stderr] Downloaded ghost v0.1.2 [INFO] [stderr] Downloaded inventory-impl v0.1.9 [INFO] [stderr] Downloaded bitvec v0.19.4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] dc19fe3b1345c636ecfe07f393249d458a655f3c00b2aa25ad9ed02be9a9a100 [INFO] running `Command { std: "docker" "start" "-a" "dc19fe3b1345c636ecfe07f393249d458a655f3c00b2aa25ad9ed02be9a9a100", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "dc19fe3b1345c636ecfe07f393249d458a655f3c00b2aa25ad9ed02be9a9a100", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dc19fe3b1345c636ecfe07f393249d458a655f3c00b2aa25ad9ed02be9a9a100", kill_on_drop: false }` [INFO] [stdout] dc19fe3b1345c636ecfe07f393249d458a655f3c00b2aa25ad9ed02be9a9a100 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] bdabd60ec9e70001742accb4d9c3276c35e886a0ad27f0c0d71a4e2795159517 [INFO] running `Command { std: "docker" "start" "-a" "bdabd60ec9e70001742accb4d9c3276c35e886a0ad27f0c0d71a4e2795159517", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.24 [INFO] [stderr] Compiling syn v1.0.54 [INFO] [stderr] Compiling unicode-xid v0.2.1 [INFO] [stderr] Compiling memchr v2.3.4 [INFO] [stderr] Compiling pulldown-cmark v0.8.0 [INFO] [stderr] Compiling libc v0.2.81 [INFO] [stderr] Compiling anyhow v1.0.35 [INFO] [stderr] Compiling inventory v0.1.9 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling radium v0.5.3 [INFO] [stderr] Compiling unicode-width v0.1.8 [INFO] [stderr] Checking regex-syntax v0.6.21 [INFO] [stderr] Compiling unicase v2.6.0 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking thread_local v1.0.1 [INFO] [stderr] Compiling unicode-segmentation v1.7.1 [INFO] [stderr] Compiling getopts v0.2.21 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking once_cell v1.5.2 [INFO] [stderr] Checking strsim v0.8.0 [INFO] [stderr] Checking funty v1.0.1 [INFO] [stderr] Checking tap v1.0.0 [INFO] [stderr] Checking aho-corasick v0.7.15 [INFO] [stderr] Checking wyz v0.2.0 [INFO] [stderr] Compiling heck v0.3.1 [INFO] [stderr] Compiling quote v1.0.7 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking clap v2.33.3 [INFO] [stderr] Checking bitvec v0.19.4 [INFO] [stderr] Compiling regex v1.4.2 [INFO] [stderr] Checking aoc-macros v0.1.0 (/opt/rustwide/workdir/macros) [INFO] [stderr] Compiling ctor v0.1.16 [INFO] [stderr] Compiling ghost v0.1.2 [INFO] [stderr] Compiling inventory-impl v0.1.9 [INFO] [stderr] Compiling structopt-derive v0.4.14 [INFO] [stderr] Checking aoc-core v0.1.0 (/opt/rustwide/workdir/core) [INFO] [stdout] warning: infallible TryFrom impl; consider implementing From instead [INFO] [stdout] --> core/src/inputs.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl<'input> TryFrom<&'input str> for GroupedLines<'input> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 58 | type Error = std::convert::Infallible; [INFO] [stdout] | ------------------------ infallible error type [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#infallible_try_from [INFO] [stdout] = note: `#[warn(clippy::infallible_try_from)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> core/src/inputs.rs:71:9 [INFO] [stdout] | [INFO] [stdout] 71 | while let Some(line) = self.0.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for line in self.0.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: infallible TryFrom impl; consider implementing From instead [INFO] [stdout] --> core/src/inputs.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl<'input> TryFrom<&'input str> for GroupedLines<'input> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 58 | type Error = std::convert::Infallible; [INFO] [stdout] | ------------------------ infallible error type [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#infallible_try_from [INFO] [stdout] = note: `#[warn(clippy::infallible_try_from)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> core/src/inputs.rs:71:9 [INFO] [stdout] | [INFO] [stdout] 71 | while let Some(line) = self.0.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for line in self.0.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking structopt v0.3.21 [INFO] [stderr] Checking aoc-challenges v0.1.0 (/opt/rustwide/workdir/challenges) [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> challenges/src/day_4.rs:231:19 [INFO] [stdout] | [INFO] [stdout] 231 | pub struct Colour(u32); [INFO] [stdout] | ------ ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this struct [INFO] [stdout] | [INFO] [stdout] = help: consider removing this field [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `values` [INFO] [stdout] --> challenges/src/day_1.rs:72:18 [INFO] [stdout] | [INFO] [stdout] 72 | for j in i..values.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 72 - for j in i..values.len() { [INFO] [stdout] 72 + for in values.iter().skip(i) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `k` is only used to index `values` [INFO] [stdout] --> challenges/src/day_1.rs:108:22 [INFO] [stdout] | [INFO] [stdout] 108 | for k in j..values.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] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 108 - for k in j..values.len() { [INFO] [stdout] 108 + for in values.iter().skip(j) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 223 | | ])) [INFO] [stdout] 224 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() && check(&passport.fields) [INFO] [stdout] 203 + .and_then(require_key("eyr")) [INFO] [stdout] 204 + .and_then(is_digit) [INFO] [stdout] 205 + .and_then(between(2020, 2030)) [INFO] [stdout] 206 + .is_some() && check(&passport.fields) [INFO] [stdout] 207 + .and_then(require_key("hgt")) [INFO] [stdout] 208 + .and_then(parse::) [INFO] [stdout] 209 + .and_then(validate_height) [INFO] [stdout] 210 + .is_some() && check(&passport.fields) [INFO] [stdout] 211 + .and_then(require_key("hcl")) [INFO] [stdout] 212 + .and_then(parse::) [INFO] [stdout] 213 + .is_some() && check(&passport.fields) [INFO] [stdout] 214 + .and_then(require_key("ecl")) [INFO] [stdout] 215 + .copied() [INFO] [stdout] 216 + .and_then(is_one_of::<&str, _>([ [INFO] [stdout] 217 + "amb", "blu", "brn", "gry", "grn", "hzl", "oth", [INFO] [stdout] 218 + ])) [INFO] [stdout] 219 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 216 | | .and_then(parse::) [INFO] [stdout] 217 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() && check(&passport.fields) [INFO] [stdout] 203 + .and_then(require_key("eyr")) [INFO] [stdout] 204 + .and_then(is_digit) [INFO] [stdout] 205 + .and_then(between(2020, 2030)) [INFO] [stdout] 206 + .is_some() && check(&passport.fields) [INFO] [stdout] 207 + .and_then(require_key("hgt")) [INFO] [stdout] 208 + .and_then(parse::) [INFO] [stdout] 209 + .and_then(validate_height) [INFO] [stdout] 210 + .is_some() && check(&passport.fields) [INFO] [stdout] 211 + .and_then(require_key("hcl")) [INFO] [stdout] 212 + .and_then(parse::) [INFO] [stdout] 213 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 212 | | .and_then(validate_height) [INFO] [stdout] 213 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() && check(&passport.fields) [INFO] [stdout] 203 + .and_then(require_key("eyr")) [INFO] [stdout] 204 + .and_then(is_digit) [INFO] [stdout] 205 + .and_then(between(2020, 2030)) [INFO] [stdout] 206 + .is_some() && check(&passport.fields) [INFO] [stdout] 207 + .and_then(require_key("hgt")) [INFO] [stdout] 208 + .and_then(parse::) [INFO] [stdout] 209 + .and_then(validate_height) [INFO] [stdout] 210 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 207 | | .and_then(between(2020, 2030)) [INFO] [stdout] 208 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() && check(&passport.fields) [INFO] [stdout] 203 + .and_then(require_key("eyr")) [INFO] [stdout] 204 + .and_then(is_digit) [INFO] [stdout] 205 + .and_then(between(2020, 2030)) [INFO] [stdout] 206 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 202 | | .and_then(between(2010, 2020)) [INFO] [stdout] 203 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] 198 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> challenges/src/day_4.rs:358:24 [INFO] [stdout] | [INFO] [stdout] 358 | move |map| map.get(&key) [INFO] [stdout] | ^^^^ help: change this to: `key` [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: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> challenges/src/day_4.rs:385:19 [INFO] [stdout] | [INFO] [stdout] 385 | predicate(values.as_ref().iter().any(|candidate| *candidate == value)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `values.as_ref().contains(&value)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> challenges/src/day_4.rs:422:39 [INFO] [stdout] | [INFO] [stdout] 422 | Height::Centimeters(value) => 150 <= value && value <= 193, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(150..=193).contains(&value)` [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] --> challenges/src/day_4.rs:423:34 [INFO] [stdout] | [INFO] [stdout] 423 | Height::Inches(value) => 59 <= value && value <= 76, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(59..=76).contains(&value)` [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: field `0` is never read [INFO] [stdout] --> challenges/src/day_4.rs:231:19 [INFO] [stdout] | [INFO] [stdout] 231 | pub struct Colour(u32); [INFO] [stdout] | ------ ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this struct [INFO] [stdout] | [INFO] [stdout] = help: consider removing this field [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `values` [INFO] [stdout] --> challenges/src/day_1.rs:72:18 [INFO] [stdout] | [INFO] [stdout] 72 | for j in i..values.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 72 - for j in i..values.len() { [INFO] [stdout] 72 + for in values.iter().skip(i) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `k` is only used to index `values` [INFO] [stdout] --> challenges/src/day_1.rs:108:22 [INFO] [stdout] | [INFO] [stdout] 108 | for k in j..values.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] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 108 - for k in j..values.len() { [INFO] [stdout] 108 + for in values.iter().skip(j) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking aoc-cli v0.1.0 (/opt/rustwide/workdir/cli) [INFO] [stdout] warning: the loop variable `column` is used to index `second_row` [INFO] [stdout] --> challenges/src/day_3.rs:335:23 [INFO] [stdout] | [INFO] [stdout] 335 | for column in 0..board.width { [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] 335 - for column in 0..board.width { [INFO] [stdout] 335 + for (column, ) in second_row.iter().enumerate().take(board.width) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 223 | | ])) [INFO] [stdout] 224 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() && check(&passport.fields) [INFO] [stdout] 203 + .and_then(require_key("eyr")) [INFO] [stdout] 204 + .and_then(is_digit) [INFO] [stdout] 205 + .and_then(between(2020, 2030)) [INFO] [stdout] 206 + .is_some() && check(&passport.fields) [INFO] [stdout] 207 + .and_then(require_key("hgt")) [INFO] [stdout] 208 + .and_then(parse::) [INFO] [stdout] 209 + .and_then(validate_height) [INFO] [stdout] 210 + .is_some() && check(&passport.fields) [INFO] [stdout] 211 + .and_then(require_key("hcl")) [INFO] [stdout] 212 + .and_then(parse::) [INFO] [stdout] 213 + .is_some() && check(&passport.fields) [INFO] [stdout] 214 + .and_then(require_key("ecl")) [INFO] [stdout] 215 + .copied() [INFO] [stdout] 216 + .and_then(is_one_of::<&str, _>([ [INFO] [stdout] 217 + "amb", "blu", "brn", "gry", "grn", "hzl", "oth", [INFO] [stdout] 218 + ])) [INFO] [stdout] 219 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 216 | | .and_then(parse::) [INFO] [stdout] 217 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() && check(&passport.fields) [INFO] [stdout] 203 + .and_then(require_key("eyr")) [INFO] [stdout] 204 + .and_then(is_digit) [INFO] [stdout] 205 + .and_then(between(2020, 2030)) [INFO] [stdout] 206 + .is_some() && check(&passport.fields) [INFO] [stdout] 207 + .and_then(require_key("hgt")) [INFO] [stdout] 208 + .and_then(parse::) [INFO] [stdout] 209 + .and_then(validate_height) [INFO] [stdout] 210 + .is_some() && check(&passport.fields) [INFO] [stdout] 211 + .and_then(require_key("hcl")) [INFO] [stdout] 212 + .and_then(parse::) [INFO] [stdout] 213 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 212 | | .and_then(validate_height) [INFO] [stdout] 213 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() && check(&passport.fields) [INFO] [stdout] 203 + .and_then(require_key("eyr")) [INFO] [stdout] 204 + .and_then(is_digit) [INFO] [stdout] 205 + .and_then(between(2020, 2030)) [INFO] [stdout] 206 + .is_some() && check(&passport.fields) [INFO] [stdout] 207 + .and_then(require_key("hgt")) [INFO] [stdout] 208 + .and_then(parse::) [INFO] [stdout] 209 + .and_then(validate_height) [INFO] [stdout] 210 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 207 | | .and_then(between(2020, 2030)) [INFO] [stdout] 208 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() && check(&passport.fields) [INFO] [stdout] 203 + .and_then(require_key("eyr")) [INFO] [stdout] 204 + .and_then(is_digit) [INFO] [stdout] 205 + .and_then(between(2020, 2030)) [INFO] [stdout] 206 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] ... | [INFO] [stdout] 202 | | .and_then(between(2010, 2020)) [INFO] [stdout] 203 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() && check(&passport.fields) [INFO] [stdout] 199 + .and_then(require_key("iyr")) [INFO] [stdout] 200 + .and_then(is_digit) [INFO] [stdout] 201 + .and_then(between(2010, 2020)) [INFO] [stdout] 202 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> challenges/src/day_4.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | / true && check(&passport.fields) [INFO] [stdout] 195 | | .and_then(require_key("byr")) [INFO] [stdout] 196 | | .and_then(is_digit) [INFO] [stdout] 197 | | .and_then(between(1920, 2002)) [INFO] [stdout] 198 | | .is_some() [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] 194 ~ check(&passport.fields) [INFO] [stdout] 195 + .and_then(require_key("byr")) [INFO] [stdout] 196 + .and_then(is_digit) [INFO] [stdout] 197 + .and_then(between(1920, 2002)) [INFO] [stdout] 198 + .is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> challenges/src/day_4.rs:358:24 [INFO] [stdout] | [INFO] [stdout] 358 | move |map| map.get(&key) [INFO] [stdout] | ^^^^ help: change this to: `key` [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: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> challenges/src/day_4.rs:385:19 [INFO] [stdout] | [INFO] [stdout] 385 | predicate(values.as_ref().iter().any(|candidate| *candidate == value)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `values.as_ref().contains(&value)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> challenges/src/day_4.rs:422:39 [INFO] [stdout] | [INFO] [stdout] 422 | Height::Centimeters(value) => 150 <= value && value <= 193, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(150..=193).contains(&value)` [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] --> challenges/src/day_4.rs:423:34 [INFO] [stdout] | [INFO] [stdout] 423 | Height::Inches(value) => 59 <= value && value <= 76, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(59..=76).contains(&value)` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.43s [INFO] running `Command { std: "docker" "inspect" "bdabd60ec9e70001742accb4d9c3276c35e886a0ad27f0c0d71a4e2795159517", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bdabd60ec9e70001742accb4d9c3276c35e886a0ad27f0c0d71a4e2795159517", kill_on_drop: false }` [INFO] [stdout] bdabd60ec9e70001742accb4d9c3276c35e886a0ad27f0c0d71a4e2795159517