[INFO] cloning repository https://github.com/default-303/hidepng [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/default-303/hidepng" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdefault-303%2Fhidepng", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdefault-303%2Fhidepng'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b1a4e76acd2c34ab5a1e12ea6fca307b80878096 [INFO] linting default-303/hidepng against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdefault-303%2Fhidepng" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/default-303/hidepng [INFO] finished tweaking git repo https://github.com/default-303/hidepng [INFO] tweaked toml for git repo https://github.com/default-303/hidepng written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/default-303/hidepng 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/default-303/hidepng 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 clap_derive v4.3.12 [INFO] [stderr] Downloaded rustix v0.38.4 [INFO] [stderr] Downloaded bstr v1.6.0 [INFO] [stderr] Downloaded cc v1.0.80 [INFO] [stderr] Downloaded predicates v3.0.3 [INFO] [stderr] Downloaded serde v1.0.180 [INFO] [stderr] Downloaded clap v4.3.19 [INFO] [stderr] Downloaded clap_builder v4.3.19 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 6025166a9c61e6a26ecc2a260d1eaf1626efad89900f8b117fb96baee62043ad [INFO] running `Command { std: "docker" "start" "-a" "6025166a9c61e6a26ecc2a260d1eaf1626efad89900f8b117fb96baee62043ad", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6025166a9c61e6a26ecc2a260d1eaf1626efad89900f8b117fb96baee62043ad", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6025166a9c61e6a26ecc2a260d1eaf1626efad89900f8b117fb96baee62043ad", kill_on_drop: false }` [INFO] [stdout] 6025166a9c61e6a26ecc2a260d1eaf1626efad89900f8b117fb96baee62043ad [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 16b1f5e27b7b3ff37a773cbd951308434a93328d6df83a35d934abac996f1067 [INFO] running `Command { std: "docker" "start" "-a" "16b1f5e27b7b3ff37a773cbd951308434a93328d6df83a35d934abac996f1067", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v0.38.4 [INFO] [stderr] Checking bitflags v2.3.3 [INFO] [stderr] Checking linux-raw-sys v0.4.5 [INFO] [stderr] Checking anstyle v1.0.1 [INFO] [stderr] Checking gimli v0.27.3 [INFO] [stderr] Checking miniz_oxide v0.7.1 [INFO] [stderr] Checking either v1.9.0 [INFO] [stderr] Compiling anyhow v1.0.72 [INFO] [stderr] Checking object v0.31.1 [INFO] [stderr] Checking clap_lex v0.5.0 [INFO] [stderr] Compiling cc v1.0.80 [INFO] [stderr] Checking regex-automata v0.3.4 [INFO] [stderr] Checking rustc-demangle v0.1.23 [INFO] [stderr] Compiling thiserror v1.0.44 [INFO] [stderr] Compiling clap_derive v4.3.12 [INFO] [stderr] Compiling thiserror-impl v1.0.44 [INFO] [stderr] Checking float-cmp v0.9.0 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Checking wait-timeout v0.2.0 [INFO] [stderr] Checking fastrand v2.0.0 [INFO] [stderr] Compiling backtrace v0.3.68 [INFO] [stderr] Checking addr2line v0.20.0 [INFO] [stderr] Checking is-terminal v0.4.9 [INFO] [stderr] Checking tempfile v3.7.0 [INFO] [stderr] Checking anstream v0.3.2 [INFO] [stderr] Checking clap_builder v4.3.19 [INFO] [stderr] Checking regex v1.9.1 [INFO] [stderr] Checking bstr v1.6.0 [INFO] [stderr] Checking predicates v3.0.3 [INFO] [stderr] Checking clap v4.3.19 [INFO] [stderr] Checking assert_cmd v2.0.12 [INFO] [stderr] Checking hidepng v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:18:26 [INFO] [stdout] | [INFO] [stdout] 18 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 18 - .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 18 + .all(|&byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 50 - .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 50 + .all(|&byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:77:25 [INFO] [stdout] | [INFO] [stdout] 77 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 77 - .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 77 + .all(|byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/png.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | use anyhow; [INFO] [stdout] | ^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_valid`, `is_critical`, `is_public`, `is_reserved_bit_valid`, and `is_safe_to_copy` are never used [INFO] [stdout] --> src/chunk_type.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl ChunkType { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn is_valid(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn is_critical(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn is_public(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn is_reserved_bit_valid(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn is_safe_to_copy(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_chunks` and `append_chunk` are never used [INFO] [stdout] --> src/png.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Png { [INFO] [stdout] | -------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 16 | pub fn from_chunks(chunks: Vec) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn append_chunk(&mut self, chunk: Chunk) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/chunk_type.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | true && self.is_reserved_bit_valid() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.is_reserved_bit_valid()` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:18:27 [INFO] [stdout] | [INFO] [stdout] 18 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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/chunk_type.rs:18:61 [INFO] [stdout] | [INFO] [stdout] 18 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:50:27 [INFO] [stdout] | [INFO] [stdout] 50 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:50:61 [INFO] [stdout] | [INFO] [stdout] 50 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:77:26 [INFO] [stdout] | [INFO] [stdout] 77 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:77:60 [INFO] [stdout] | [INFO] [stdout] 77 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/chunk.rs:39:62 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn calculate_crc(chunk_type: &ChunkType, chunk_data: &Vec) -> u32 { [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] 39 - pub fn calculate_crc(chunk_type: &ChunkType, chunk_data: &Vec) -> u32 { [INFO] [stdout] 39 + pub fn calculate_crc(chunk_type: &ChunkType, chunk_data: &[u8]) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/chunk.rs:75:20 [INFO] [stdout] | [INFO] [stdout] 75 | .chain(self.chunk_type().bytes().into_iter()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:510:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 75 - .chain(self.chunk_type().bytes().into_iter()) [INFO] [stdout] 75 + .chain(self.chunk_type().bytes()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/png.rs:34:17 [INFO] [stdout] | [INFO] [stdout] 34 | return Ok(chunk); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 34 - return Ok(chunk); [INFO] [stdout] 34 + Ok(chunk) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/png.rs:74:39 [INFO] [stdout] | [INFO] [stdout] 74 | .chain(self.chunks.iter().map(|chunk| chunk.as_bytes()).flatten()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|chunk| chunk.as_bytes())` [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] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:18:26 [INFO] [stdout] | [INFO] [stdout] 18 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 18 - .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 18 + .all(|&byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 50 - .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 50 + .all(|&byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:77:25 [INFO] [stdout] | [INFO] [stdout] 77 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 77 - .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 77 + .all(|byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:182:25 [INFO] [stdout] | [INFO] [stdout] 182 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 182 - .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 182 + .all(|byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:189:25 [INFO] [stdout] | [INFO] [stdout] 189 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 189 - .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 189 + .all(|byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/chunk_type.rs:196:25 [INFO] [stdout] | [INFO] [stdout] 196 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 196 - .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] 196 + .all(|byte| (byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z') ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/png.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | use anyhow; [INFO] [stdout] | ^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/chunk_type.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | true && self.is_reserved_bit_valid() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.is_reserved_bit_valid()` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:18:27 [INFO] [stdout] | [INFO] [stdout] 18 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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/chunk_type.rs:18:61 [INFO] [stdout] | [INFO] [stdout] 18 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:50:27 [INFO] [stdout] | [INFO] [stdout] 50 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:50:61 [INFO] [stdout] | [INFO] [stdout] 50 | .all(|&byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:77:26 [INFO] [stdout] | [INFO] [stdout] 77 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:77:60 [INFO] [stdout] | [INFO] [stdout] 77 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:182:26 [INFO] [stdout] | [INFO] [stdout] 182 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:182:60 [INFO] [stdout] | [INFO] [stdout] 182 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:189:26 [INFO] [stdout] | [INFO] [stdout] 189 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:189:60 [INFO] [stdout] | [INFO] [stdout] 189 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:196:26 [INFO] [stdout] | [INFO] [stdout] 196 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').contains(&byte)` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/chunk_type.rs:196:60 [INFO] [stdout] | [INFO] [stdout] 196 | .all(|byte| ((byte >= b'a' && byte <= b'z') || (byte >= b'A' && byte <= b'Z'))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/chunk.rs:39:62 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn calculate_crc(chunk_type: &ChunkType, chunk_data: &Vec) -> u32 { [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] 39 - pub fn calculate_crc(chunk_type: &ChunkType, chunk_data: &Vec) -> u32 { [INFO] [stdout] 39 + pub fn calculate_crc(chunk_type: &ChunkType, chunk_data: &[u8]) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/chunk.rs:75:20 [INFO] [stdout] | [INFO] [stdout] 75 | .chain(self.chunk_type().bytes().into_iter()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:510:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 75 - .chain(self.chunk_type().bytes().into_iter()) [INFO] [stdout] 75 + .chain(self.chunk_type().bytes()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/png.rs:34:17 [INFO] [stdout] | [INFO] [stdout] 34 | return Ok(chunk); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 34 - return Ok(chunk); [INFO] [stdout] 34 + Ok(chunk) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/png.rs:74:39 [INFO] [stdout] | [INFO] [stdout] 74 | .chain(self.chunks.iter().map(|chunk| chunk.as_bytes()).flatten()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|chunk| chunk.as_bytes())` [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] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/png.rs:127:9 [INFO] [stdout] | [INFO] [stdout] 127 | / let mut chunks = Vec::new(); [INFO] [stdout] 128 | | [INFO] [stdout] 129 | | chunks.push(chunk_from_strings("FrSt", "I am the first chunk").unwrap()); [INFO] [stdout] 130 | | chunks.push(chunk_from_strings("miDl", "I am another chunk").unwrap()); [INFO] [stdout] 131 | | chunks.push(chunk_from_strings("LASt", "I am the last chunk").unwrap()); [INFO] [stdout] | |________________________________________________________________________________^ help: consider using the `vec![]` macro: `let chunks = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.02s [INFO] running `Command { std: "docker" "inspect" "16b1f5e27b7b3ff37a773cbd951308434a93328d6df83a35d934abac996f1067", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "16b1f5e27b7b3ff37a773cbd951308434a93328d6df83a35d934abac996f1067", kill_on_drop: false }` [INFO] [stdout] 16b1f5e27b7b3ff37a773cbd951308434a93328d6df83a35d934abac996f1067