[INFO] fetching crate dek 0.1.40... [INFO] linting dek-0.1.40 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate dek 0.1.40 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate dek 0.1.40 [INFO] finished tweaking crates.io crate dek 0.1.40 [INFO] tweaked toml for crates.io crate dek 0.1.40 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate dek 0.1.40 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 crates.io crate dek 0.1.40 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 clap v4.5.55 [INFO] [stderr] Downloaded supports-color v2.1.0 [INFO] [stderr] Downloaded hostname v0.4.2 [INFO] [stderr] Downloaded md5 v0.7.0 [INFO] [stderr] Downloaded clap_complete v4.5.65 [INFO] [stderr] Downloaded clap_builder v4.5.55 [INFO] [stderr] Downloaded cc v1.2.54 [INFO] [stderr] Downloaded which v7.0.3 [INFO] [stderr] Downloaded minijinja v2.15.1 [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] 71f6857ffd719505ec8c7debddd5d336f4a9df418c2f4da9693fafa921cb69c6 [INFO] running `Command { std: "docker" "start" "-a" "71f6857ffd719505ec8c7debddd5d336f4a9df418c2f4da9693fafa921cb69c6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "71f6857ffd719505ec8c7debddd5d336f4a9df418c2f4da9693fafa921cb69c6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "71f6857ffd719505ec8c7debddd5d336f4a9df418c2f4da9693fafa921cb69c6", kill_on_drop: false }` [INFO] [stdout] 71f6857ffd719505ec8c7debddd5d336f4a9df418c2f4da9693fafa921cb69c6 [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] 9bc2c8acd5ee261aacdadfd773ee40ccc79eccb74e01b9a7079931fd468c8e0e [INFO] running `Command { std: "docker" "start" "-a" "9bc2c8acd5ee261aacdadfd773ee40ccc79eccb74e01b9a7079931fd468c8e0e", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Checking is_terminal_polyfill v1.70.2 [INFO] [stderr] Checking hashbrown v0.16.1 [INFO] [stderr] Checking colorchoice v1.0.4 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Checking anstyle-parse v0.2.7 [INFO] [stderr] Checking anstyle-query v1.1.5 [INFO] [stderr] Checking equivalent v1.0.2 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling anyhow v1.0.100 [INFO] [stderr] Checking is_ci v1.2.0 [INFO] [stderr] Compiling portable-atomic v1.13.0 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Checking unicode-width v0.2.2 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Checking clap_lex v0.7.7 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling serde_yml v0.0.12 [INFO] [stderr] Checking is-terminal v0.4.17 [INFO] [stderr] Checking adler2 v2.0.1 [INFO] [stderr] Checking regex-syntax v0.8.9 [INFO] [stderr] Checking itoa v1.0.17 [INFO] [stderr] Checking simd-adler32 v0.3.8 [INFO] [stderr] Checking console v0.15.11 [INFO] [stderr] Compiling owo-colors v4.2.3 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking toml_write v0.1.2 [INFO] [stderr] Checking winnow v0.7.14 [INFO] [stderr] Checking libyml v0.0.5 [INFO] [stderr] Checking supports-color v2.1.0 [INFO] [stderr] Checking anstream v0.6.21 [INFO] [stderr] Checking tempfile v3.24.0 [INFO] [stderr] Checking supports-color v3.0.2 [INFO] [stderr] Checking clap_builder v4.5.55 [INFO] [stderr] Checking filetime v0.2.27 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking xattr v1.6.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking env_home v0.1.0 [INFO] [stderr] Checking ryu v1.0.23 [INFO] [stderr] Checking iana-time-zone v0.1.65 [INFO] [stderr] Checking zeroize v1.8.2 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Checking number_prefix v0.4.0 [INFO] [stderr] Checking shell-words v1.1.1 [INFO] [stderr] Checking tar v0.4.44 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Checking which v7.0.3 [INFO] [stderr] Checking hostname v0.4.2 [INFO] [stderr] Checking md5 v0.7.0 [INFO] [stderr] Checking flate2 v1.1.8 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking indicatif v0.17.11 [INFO] [stderr] Checking regex-automata v0.4.14 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking regex v1.12.3 [INFO] [stderr] Checking dialoguer v0.11.0 [INFO] [stderr] Checking clap v4.5.55 [INFO] [stderr] Checking clap_complete v4.5.65 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking minijinja v2.15.1 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking dek v0.1.40 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Command` [INFO] [stdout] --> src/state.rs:3:20 [INFO] [stdout] | [INFO] [stdout] 3 | use std::process::{Command, Stdio}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::process::Command` [INFO] [stdout] --> src/main.rs:1375:9 [INFO] [stdout] | [INFO] [stdout] 1375 | use std::process::Command; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Command` [INFO] [stdout] --> src/state.rs:3:20 [INFO] [stdout] | [INFO] [stdout] 3 | use std::process::{Command, Stdio}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::process::Command` [INFO] [stdout] --> src/main.rs:1375:9 [INFO] [stdout] | [INFO] [stdout] 1375 | use std::process::Command; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> src/main.rs:900:30 [INFO] [stdout] | [INFO] [stdout] 900 | let temp_path = temp_dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> src/main.rs:900:30 [INFO] [stdout] | [INFO] [stdout] 900 | let temp_path = temp_dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lines` [INFO] [stdout] --> src/state.rs:508:17 [INFO] [stdout] | [INFO] [stdout] 508 | let lines: Vec<&str> = value.lines().collect(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_lines` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lines` [INFO] [stdout] --> src/state.rs:508:17 [INFO] [stdout] | [INFO] [stdout] 508 | let lines: Vec<&str> = value.lines().collect(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_lines` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `optional` and `run_if` are never read [INFO] [stdout] --> src/config/types.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 304 | pub struct ConfigInfo { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 314 | pub optional: bool, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | pub run_if: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConfigInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `raw_value` is never used [INFO] [stdout] --> src/state.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl StateResult { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn raw_value(&self) -> minijinja::Value { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_tar_gz` is never used [INFO] [stdout] --> src/util.rs:509:8 [INFO] [stdout] | [INFO] [stdout] 509 | pub fn create_tar_gz(path: &Path) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bake.rs:143:18 [INFO] [stdout] | [INFO] [stdout] 143 | .or_else(|| crate::config::find_default_config()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `crate::config::find_default_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `optional` and `run_if` are never read [INFO] [stdout] --> src/config/types.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 304 | pub struct ConfigInfo { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 314 | pub optional: bool, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | pub run_if: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConfigInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `raw_value` is never used [INFO] [stdout] --> src/state.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl StateResult { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn raw_value(&self) -> minijinja::Value { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_tar_gz` is never used [INFO] [stdout] --> src/util.rs:509:8 [INFO] [stdout] | [INFO] [stdout] 509 | pub fn create_tar_gz(path: &Path) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bake.rs:143:18 [INFO] [stdout] | [INFO] [stdout] 143 | .or_else(|| crate::config::find_default_config()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `crate::config::find_default_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/config/mod.rs:456:37 [INFO] [stdout] | [INFO] [stdout] 456 | active_labels.contains(&&key[1..]) [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/config/mod.rs:455:23 [INFO] [stdout] | [INFO] [stdout] 455 | let matches = if key.starts_with('@') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 455 ~ let matches = if let Some() = key.strip_prefix('@') { [INFO] [stdout] 456 ~ active_labels.contains(&) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/config/mod.rs:456:37 [INFO] [stdout] | [INFO] [stdout] 456 | active_labels.contains(&&key[1..]) [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/config/mod.rs:455:23 [INFO] [stdout] | [INFO] [stdout] 455 | let matches = if key.starts_with('@') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 455 ~ let matches = if let Some() = key.strip_prefix('@') { [INFO] [stdout] 456 ~ active_labels.contains(&) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/runner.rs:148:20 [INFO] [stdout] | [INFO] [stdout] 148 | if !item.cache_key.is_some() || is_cache_fresh(item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `item.cache_key.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/state.rs:329:17 [INFO] [stdout] | [INFO] [stdout] 329 | if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | ^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 329 - if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] 329 + if let Some(vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/runner.rs:148:20 [INFO] [stdout] | [INFO] [stdout] 148 | if !item.cache_key.is_some() || is_cache_fresh(item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `item.cache_key.is_none()` [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: stripping a prefix manually [INFO] [stdout] --> src/util.rs:24:45 [INFO] [stdout] | [INFO] [stdout] 24 | return PathBuf::from(home).join(&path_str[2..]); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/util.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | if path_str.starts_with("~/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 22 ~ if let Some() = path_str.strip_prefix("~/") { [INFO] [stdout] 23 | if let Some(home) = std::env::var_os("HOME") { [INFO] [stdout] 24 ~ return PathBuf::from(home).join(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/util.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | / for line in BufReader::new(stderr).lines() { [INFO] [stdout] 94 | | if let Ok(line) = line { [INFO] [stdout] 95 | | crate::output::update_spinner(&pb2, &line); [INFO] [stdout] 96 | | collected.extend(line.as_bytes().iter().copied()); [INFO] [stdout] ... | [INFO] [stdout] 99 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/util.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | / if let Ok(line) = line { [INFO] [stdout] 95 | | crate::output::update_spinner(&pb2, &line); [INFO] [stdout] 96 | | collected.extend(line.as_bytes().iter().copied()); [INFO] [stdout] 97 | | collected.push(b'\n'); [INFO] [stdout] 98 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 93 ~ for line in BufReader::new(stderr).lines().flatten() { [INFO] [stdout] 94 + crate::output::update_spinner(&pb2, &line); [INFO] [stdout] 95 + collected.extend(line.as_bytes().iter().copied()); [INFO] [stdout] 96 + collected.push(b'\n'); [INFO] [stdout] 97 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/util.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | / for line in BufReader::new(stdout).lines() { [INFO] [stdout] 105 | | if let Ok(line) = line { [INFO] [stdout] 106 | | crate::output::update_spinner(pb, &line); [INFO] [stdout] 107 | | stdout_bytes.extend(line.as_bytes().iter().copied()); [INFO] [stdout] ... | [INFO] [stdout] 110 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/util.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | / if let Ok(line) = line { [INFO] [stdout] 106 | | crate::output::update_spinner(pb, &line); [INFO] [stdout] 107 | | stdout_bytes.extend(line.as_bytes().iter().copied()); [INFO] [stdout] 108 | | stdout_bytes.push(b'\n'); [INFO] [stdout] 109 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 104 ~ for line in BufReader::new(stdout).lines().flatten() { [INFO] [stdout] 105 + crate::output::update_spinner(pb, &line); [INFO] [stdout] 106 + stdout_bytes.extend(line.as_bytes().iter().copied()); [INFO] [stdout] 107 + stdout_bytes.push(b'\n'); [INFO] [stdout] 108 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/state.rs:329:17 [INFO] [stdout] | [INFO] [stdout] 329 | if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | ^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 329 - if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] 329 + if let Some(vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/util.rs:24:45 [INFO] [stdout] | [INFO] [stdout] 24 | return PathBuf::from(home).join(&path_str[2..]); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/util.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | if path_str.starts_with("~/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 22 ~ if let Some() = path_str.strip_prefix("~/") { [INFO] [stdout] 23 | if let Some(home) = std::env::var_os("HOME") { [INFO] [stdout] 24 ~ return PathBuf::from(home).join(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/util.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | / for line in BufReader::new(stderr).lines() { [INFO] [stdout] 94 | | if let Ok(line) = line { [INFO] [stdout] 95 | | crate::output::update_spinner(&pb2, &line); [INFO] [stdout] 96 | | collected.extend(line.as_bytes().iter().copied()); [INFO] [stdout] ... | [INFO] [stdout] 99 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/util.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | / if let Ok(line) = line { [INFO] [stdout] 95 | | crate::output::update_spinner(&pb2, &line); [INFO] [stdout] 96 | | collected.extend(line.as_bytes().iter().copied()); [INFO] [stdout] 97 | | collected.push(b'\n'); [INFO] [stdout] 98 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 93 ~ for line in BufReader::new(stderr).lines().flatten() { [INFO] [stdout] 94 + crate::output::update_spinner(&pb2, &line); [INFO] [stdout] 95 + collected.extend(line.as_bytes().iter().copied()); [INFO] [stdout] 96 + collected.push(b'\n'); [INFO] [stdout] 97 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/util.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | / for line in BufReader::new(stdout).lines() { [INFO] [stdout] 105 | | if let Ok(line) = line { [INFO] [stdout] 106 | | crate::output::update_spinner(pb, &line); [INFO] [stdout] 107 | | stdout_bytes.extend(line.as_bytes().iter().copied()); [INFO] [stdout] ... | [INFO] [stdout] 110 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/util.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | / if let Ok(line) = line { [INFO] [stdout] 106 | | crate::output::update_spinner(pb, &line); [INFO] [stdout] 107 | | stdout_bytes.extend(line.as_bytes().iter().copied()); [INFO] [stdout] 108 | | stdout_bytes.push(b'\n'); [INFO] [stdout] 109 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 104 ~ for line in BufReader::new(stdout).lines().flatten() { [INFO] [stdout] 105 + crate::output::update_spinner(pb, &line); [INFO] [stdout] 106 + stdout_bytes.extend(line.as_bytes().iter().copied()); [INFO] [stdout] 107 + stdout_bytes.push(b'\n'); [INFO] [stdout] 108 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/main.rs:401:17 [INFO] [stdout] | [INFO] [stdout] 401 | if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 401 - if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] 401 + if let Some(vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant redefinition of a binding `configs` [INFO] [stdout] --> src/main.rs:796:13 [INFO] [stdout] | [INFO] [stdout] 796 | let configs = configs; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: `configs` is initially defined here [INFO] [stdout] --> src/main.rs:679:72 [INFO] [stdout] | [INFO] [stdout] 679 | fn run_remotes(pattern: &str, cmd: &str, config_path: Option, configs: &[String]) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_locals [INFO] [stdout] = note: `#[warn(clippy::redundant_locals)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/main.rs:401:17 [INFO] [stdout] | [INFO] [stdout] 401 | if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 401 - if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] 401 + if let Some(vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant redefinition of a binding `configs` [INFO] [stdout] --> src/main.rs:796:13 [INFO] [stdout] | [INFO] [stdout] 796 | let configs = configs; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: `configs` is initially defined here [INFO] [stdout] --> src/main.rs:679:72 [INFO] [stdout] | [INFO] [stdout] 679 | fn run_remotes(pattern: &str, cmd: &str, config_path: Option, configs: &[String]) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_locals [INFO] [stdout] = note: `#[warn(clippy::redundant_locals)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/main.rs:1164:17 [INFO] [stdout] | [INFO] [stdout] 1164 | if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1164 - if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] 1164 + if let Some(vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/main.rs:1384:17 [INFO] [stdout] | [INFO] [stdout] 1384 | if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1384 - if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] 1384 + if let Some(vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:1619:5 [INFO] [stdout] | [INFO] [stdout] 1619 | / if fresh { [INFO] [stdout] 1620 | | if container_state.is_some() { [INFO] [stdout] 1621 | | println!(" {} Removing old container...", c!("→", yellow)); [INFO] [stdout] 1622 | | let _ = Command::new("docker").args(["rm", "-f", &container_name]) [INFO] [stdout] ... | [INFO] [stdout] 1625 | | } [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] 1619 ~ if fresh [INFO] [stdout] 1620 ~ && container_state.is_some() { [INFO] [stdout] 1621 | println!(" {} Removing old container...", c!("→", yellow)); [INFO] [stdout] 1622 | let _ = Command::new("docker").args(["rm", "-f", &container_name]) [INFO] [stdout] 1623 | .stdout(Stdio::null()).stderr(Stdio::null()).status(); [INFO] [stdout] 1624 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/main.rs:1164:17 [INFO] [stdout] | [INFO] [stdout] 1164 | if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1164 - if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] 1164 + if let Some(vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/main.rs:1384:17 [INFO] [stdout] | [INFO] [stdout] 1384 | if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1384 - if let Some(ref vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] 1384 + if let Some(vars) = meta.as_ref().and_then(|m| m.vars.as_ref()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:1619:5 [INFO] [stdout] | [INFO] [stdout] 1619 | / if fresh { [INFO] [stdout] 1620 | | if container_state.is_some() { [INFO] [stdout] 1621 | | println!(" {} Removing old container...", c!("→", yellow)); [INFO] [stdout] 1622 | | let _ = Command::new("docker").args(["rm", "-f", &container_name]) [INFO] [stdout] ... | [INFO] [stdout] 1625 | | } [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] 1619 ~ if fresh [INFO] [stdout] 1620 ~ && container_state.is_some() { [INFO] [stdout] 1621 | println!(" {} Removing old container...", c!("→", yellow)); [INFO] [stdout] 1622 | let _ = Command::new("docker").args(["rm", "-f", &container_name]) [INFO] [stdout] 1623 | .stdout(Stdio::null()).stderr(Stdio::null()).status(); [INFO] [stdout] 1624 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.46s [INFO] running `Command { std: "docker" "inspect" "9bc2c8acd5ee261aacdadfd773ee40ccc79eccb74e01b9a7079931fd468c8e0e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9bc2c8acd5ee261aacdadfd773ee40ccc79eccb74e01b9a7079931fd468c8e0e", kill_on_drop: false }` [INFO] [stdout] 9bc2c8acd5ee261aacdadfd773ee40ccc79eccb74e01b9a7079931fd468c8e0e