[INFO] cloning repository https://github.com/playit-cloud/playit-agent [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/playit-cloud/playit-agent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fplayit-cloud%2Fplayit-agent", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fplayit-cloud%2Fplayit-agent'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 75a00300c6a13f3149bef85bfccb22cf593dc3d4 [INFO] linting playit-cloud/playit-agent against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fplayit-cloud%2Fplayit-agent" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-2-tc1/source/.cargo/config [INFO] started tweaking git repo https://github.com/playit-cloud/playit-agent [INFO] finished tweaking git repo https://github.com/playit-cloud/playit-agent [INFO] tweaked toml for git repo https://github.com/playit-cloud/playit-agent written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/playit-cloud/playit-agent 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/playit-cloud/playit-agent 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 message-encoding v0.2.7 [INFO] [stderr] Downloaded compression-codecs v0.4.33 [INFO] [stderr] Downloaded governor v0.10.2 [INFO] [stderr] Downloaded async-compression v0.4.34 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 24139fc59e888cc330235811c700c828b146b1759d64367fb657106b60dc36d6 [INFO] running `Command { std: "docker" "start" "-a" "24139fc59e888cc330235811c700c828b146b1759d64367fb657106b60dc36d6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "24139fc59e888cc330235811c700c828b146b1759d64367fb657106b60dc36d6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "24139fc59e888cc330235811c700c828b146b1759d64367fb657106b60dc36d6", kill_on_drop: false }` [INFO] [stdout] 24139fc59e888cc330235811c700c828b146b1759d64367fb657106b60dc36d6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c3982c46190fc3d1d8b4809689142e773a1a6fe99fc3fc53baebbf5ec01b6782 [INFO] running `Command { std: "docker" "start" "-a" "c3982c46190fc3d1d8b4809689142e773a1a6fe99fc3fc53baebbf5ec01b6782", kill_on_drop: false }` [INFO] [stderr] Compiling cc v1.2.47 [INFO] [stderr] Checking tracing-core v0.1.34 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Checking rustls-pki-types v1.13.0 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Checking tokio v1.48.0 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling rustls v0.23.35 [INFO] [stderr] Compiling zerocopy v0.8.28 [INFO] [stderr] Checking compression-core v0.4.31 [INFO] [stderr] Checking regex-syntax v0.8.8 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking compression-codecs v0.4.33 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking message-encoding v0.2.7 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking raw-cpuid v11.6.0 [INFO] [stderr] Checking winnow v0.7.13 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking webpki-roots v1.0.4 [INFO] [stderr] Checking uuid v1.18.1 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Checking signal-hook v0.3.18 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking spinning_top v0.3.0 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking web-time v1.1.0 [INFO] [stderr] Checking nonzero_ext v0.3.0 [INFO] [stderr] Checking futures-timer v3.0.3 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [INFO] [stderr] Checking rustix v0.38.44 [INFO] [stderr] Checking crossbeam v0.8.4 [INFO] [stderr] Checking playit-agent-proto v1.3.0 (/opt/rustwide/workdir/packages/agent_proto) [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Checking clap_builder v4.5.53 [INFO] [stderr] Checking dirs-sys v0.5.0 [INFO] [stderr] Checking time v0.3.44 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking compact_str v0.8.1 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/agent_proto/src/control_feed.rs:83:22 [INFO] [stdout] | [INFO] [stdout] 83 | _ => Err(Error::new(ErrorKind::Other, "invalid ControlFeed id")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 83 - _ => Err(Error::new(ErrorKind::Other, "invalid ControlFeed id")), [INFO] [stdout] 83 + _ => Err(Error::other("invalid ControlFeed id")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/agent_proto/src/control_messages.rs:488:22 [INFO] [stdout] | [INFO] [stdout] 488 | _ => Err(std::io::Error::new( [INFO] [stdout] | ______________________^ [INFO] [stdout] 489 | | std::io::ErrorKind::Other, [INFO] [stdout] 490 | | "unknown AgentPortMappingFound id", [INFO] [stdout] 491 | | )), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 488 ~ _ => Err(std::io::Error::other( [INFO] [stdout] 489 ~ "unknown AgentPortMappingFound id", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> packages/agent_proto/src/hmac.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn verify(&self, data: &[u8], sig: &[u8]) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/agent_proto/src/lib.rs:109:22 [INFO] [stdout] | [INFO] [stdout] 109 | _ => Err(Error::new(ErrorKind::Other, "invalid port proto")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 109 - _ => Err(Error::new(ErrorKind::Other, "invalid port proto")), [INFO] [stdout] 109 + _ => Err(Error::other("invalid port proto")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Checking indexmap v2.12.1 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Compiling playit-cli v0.17.1 (/opt/rustwide/workdir/packages/agent_cli) [INFO] [stderr] Checking dirs v6.0.0 [INFO] [stderr] Checking urlencoding v2.1.3 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking toml_parser v1.0.4 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking toml v0.9.8 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Checking quanta v0.12.6 [INFO] [stderr] Checking ratatui v0.29.0 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking clap v4.5.53 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking tracing-subscriber v0.3.20 [INFO] [stderr] Checking governor v0.10.2 [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/agent_proto/src/control_feed.rs:83:22 [INFO] [stdout] | [INFO] [stdout] 83 | _ => Err(Error::new(ErrorKind::Other, "invalid ControlFeed id")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 83 - _ => Err(Error::new(ErrorKind::Other, "invalid ControlFeed id")), [INFO] [stdout] 83 + _ => Err(Error::other("invalid ControlFeed id")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/agent_proto/src/control_messages.rs:488:22 [INFO] [stdout] | [INFO] [stdout] 488 | _ => Err(std::io::Error::new( [INFO] [stdout] | ______________________^ [INFO] [stdout] 489 | | std::io::ErrorKind::Other, [INFO] [stdout] 490 | | "unknown AgentPortMappingFound id", [INFO] [stdout] 491 | | )), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 488 ~ _ => Err(std::io::Error::other( [INFO] [stdout] 489 ~ "unknown AgentPortMappingFound id", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> packages/agent_proto/src/control_messages.rs:747:34 [INFO] [stdout] | [INFO] [stdout] 747 | current_ping: if rng.next_u32() % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `rng.next_u32().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> packages/agent_proto/src/control_messages.rs:752:32 [INFO] [stdout] | [INFO] [stdout] 752 | session_id: if rng.next_u32() % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `rng.next_u32().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> packages/agent_proto/src/hmac.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn verify(&self, data: &[u8], sig: &[u8]) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/agent_proto/src/lib.rs:109:22 [INFO] [stdout] | [INFO] [stdout] 109 | _ => Err(Error::new(ErrorKind::Other, "invalid port proto")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 109 - _ => Err(Error::new(ErrorKind::Other, "invalid port proto")), [INFO] [stdout] 109 + _ => Err(Error::other("invalid port proto")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking async-compression v0.4.34 [INFO] [stderr] Checking tokio-util v0.7.17 [INFO] [stderr] Checking tracing-appender v0.2.3 [INFO] [stderr] Checking tower-http v0.6.7 [INFO] [stderr] Checking hyper-util v0.1.18 [INFO] [stderr] Checking rustls-webpki v0.103.8 [INFO] [stderr] Checking tokio-rustls v0.26.4 [INFO] [stderr] Checking hyper-rustls v0.27.7 [INFO] [stderr] Checking reqwest v0.12.24 [INFO] [stderr] Checking playit-api-client v0.2.0 (/opt/rustwide/workdir/packages/api_client) [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> packages/api_client/src/ip_resource.rs:14:28 [INFO] [stdout] | [INFO] [stdout] 14 | let is_region_ip = ip_num >= 64 && ip_num < 128; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(64..128).contains(&ip_num)` [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 `Range::contains` implementation [INFO] [stdout] --> packages/api_client/src/ip_resource.rs:14:28 [INFO] [stdout] | [INFO] [stdout] 14 | let is_region_ip = ip_num >= 64 && ip_num < 128; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(64..128).contains(&ip_num)` [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] [stderr] Checking playit-agent-core v0.17.1 (/opt/rustwide/workdir/packages/agent_core) [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> packages/agent_core/src/agent_control/connected_control.rs:193:22 [INFO] [stdout] | [INFO] [stdout] 193 | .map_err(|e| ControlError::FailedToReadControlFeed(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `ControlError::FailedToReadControlFeed` [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: redundant closure [INFO] [stdout] --> packages/agent_core/src/agent_control/connected_control.rs:193:22 [INFO] [stdout] | [INFO] [stdout] 193 | .map_err(|e| ControlError::FailedToReadControlFeed(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `ControlError::FailedToReadControlFeed` [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: using `clone` on type `Platform` which implements the `Copy` trait [INFO] [stdout] --> packages/agent_core/src/agent_control/version.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | / PLATFORM [INFO] [stdout] 14 | | .get_or_init(|| agent_control::current_platform()) [INFO] [stdout] 15 | | .clone() [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 13 ~ *PLATFORM [INFO] [stdout] 14 + .get_or_init(|| agent_control::current_platform()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> packages/agent_core/src/agent_control/version.rs:14:22 [INFO] [stdout] | [INFO] [stdout] 14 | .get_or_init(|| agent_control::current_platform()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `agent_control::current_platform` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_core/src/agent_control/mod.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | / if target.is_ipv6() { [INFO] [stdout] 134 | | if let Some(ip6) = &self.ip6 { [INFO] [stdout] 135 | | return ip6.send_to(buf, target).await; [INFO] [stdout] 136 | | } [INFO] [stdout] 137 | | } [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] 133 ~ if target.is_ipv6() [INFO] [stdout] 134 ~ && let Some(ip6) = &self.ip6 { [INFO] [stdout] 135 | return ip6.send_to(buf, target).await; [INFO] [stdout] 136 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> packages/agent_core/src/agent_control/mod.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 144 | if sel % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: replace with: `sel.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_core/src/agent_control/mod.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 179 | / if let Some(a) = a { [INFO] [stdout] 180 | | if let Poll::Ready(ready) = a.poll_recv_from(cx, &mut buf) { [INFO] [stdout] 181 | | return match ready { [INFO] [stdout] 182 | | Ok(addr) => Poll::Ready(Ok((buf.filled().len(), addr))), [INFO] [stdout] ... | [INFO] [stdout] 186 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 179 ~ if let Some(a) = a [INFO] [stdout] 180 ~ && let Poll::Ready(ready) = a.poll_recv_from(cx, &mut buf) { [INFO] [stdout] 181 | return match ready { [INFO] [stdout] ... [INFO] [stdout] 184 | }; [INFO] [stdout] 185 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_core/src/agent_control/mod.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | / if let Some(b) = b { [INFO] [stdout] 189 | | if let Poll::Ready(ready) = b.poll_recv_from(cx, &mut buf) { [INFO] [stdout] 190 | | return match ready { [INFO] [stdout] 191 | | Ok(addr) => Poll::Ready(Ok((buf.filled().len(), addr))), [INFO] [stdout] ... | [INFO] [stdout] 195 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 188 ~ if let Some(b) = b [INFO] [stdout] 189 ~ && let Poll::Ready(ready) = b.poll_recv_from(cx, &mut buf) { [INFO] [stdout] 190 | return match ready { [INFO] [stdout] ... [INFO] [stdout] 193 | }; [INFO] [stdout] 194 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Platform` which implements the `Copy` trait [INFO] [stdout] --> packages/agent_core/src/agent_control/version.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | / PLATFORM [INFO] [stdout] 14 | | .get_or_init(|| agent_control::current_platform()) [INFO] [stdout] 15 | | .clone() [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 13 ~ *PLATFORM [INFO] [stdout] 14 + .get_or_init(|| agent_control::current_platform()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> packages/agent_core/src/agent_control/version.rs:14:22 [INFO] [stdout] | [INFO] [stdout] 14 | .get_or_init(|| agent_control::current_platform()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `agent_control::current_platform` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_core/src/agent_control/mod.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | / if target.is_ipv6() { [INFO] [stdout] 134 | | if let Some(ip6) = &self.ip6 { [INFO] [stdout] 135 | | return ip6.send_to(buf, target).await; [INFO] [stdout] 136 | | } [INFO] [stdout] 137 | | } [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] 133 ~ if target.is_ipv6() [INFO] [stdout] 134 ~ && let Some(ip6) = &self.ip6 { [INFO] [stdout] 135 | return ip6.send_to(buf, target).await; [INFO] [stdout] 136 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> packages/agent_core/src/agent_control/mod.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 144 | if sel % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: replace with: `sel.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_core/src/agent_control/mod.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 179 | / if let Some(a) = a { [INFO] [stdout] 180 | | if let Poll::Ready(ready) = a.poll_recv_from(cx, &mut buf) { [INFO] [stdout] 181 | | return match ready { [INFO] [stdout] 182 | | Ok(addr) => Poll::Ready(Ok((buf.filled().len(), addr))), [INFO] [stdout] ... | [INFO] [stdout] 186 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 179 ~ if let Some(a) = a [INFO] [stdout] 180 ~ && let Poll::Ready(ready) = a.poll_recv_from(cx, &mut buf) { [INFO] [stdout] 181 | return match ready { [INFO] [stdout] ... [INFO] [stdout] 184 | }; [INFO] [stdout] 185 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_core/src/agent_control/mod.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | / if let Some(b) = b { [INFO] [stdout] 189 | | if let Poll::Ready(ready) = b.poll_recv_from(cx, &mut buf) { [INFO] [stdout] 190 | | return match ready { [INFO] [stdout] 191 | | Ok(addr) => Poll::Ready(Ok((buf.filled().len(), addr))), [INFO] [stdout] ... | [INFO] [stdout] 195 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 188 ~ if let Some(b) = b [INFO] [stdout] 189 ~ && let Poll::Ready(ready) = b.poll_recv_from(cx, &mut buf) { [INFO] [stdout] 190 | return match ready { [INFO] [stdout] ... [INFO] [stdout] 193 | }; [INFO] [stdout] 194 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> packages/agent_core/src/utils/id_slab.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | u32, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `u32::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IdSlab` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> packages/agent_core/src/utils/id_slab.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> packages/agent_core/src/utils/id_slab.rs:113:9 [INFO] [stdout] | [INFO] [stdout] 113 | entry.id = EMPTY_BIT_NEG & entry.id; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `entry.id &= EMPTY_BIT_NEG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> packages/agent_core/src/utils/id_slab.rs:222:44 [INFO] [stdout] | [INFO] [stdout] 222 | return Some(unsafe { std::mem::transmute(entry.value.assume_init_mut()) }); [INFO] [stdout] | ^^^^^^^^^ help: consider adding missing annotations: `transmute::<&mut T, &mut T>` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] = note: `#[warn(clippy::missing_transmute_annotations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `NonOverlapping` [INFO] [stdout] --> packages/agent_core/src/utils/non_overlapping.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / pub fn new() -> Self { [INFO] [stdout] 7 | | NonOverlapping { elements: vec![] } [INFO] [stdout] 8 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 5 + impl Default for NonOverlapping { [INFO] [stdout] 6 + fn default() -> Self { [INFO] [stdout] 7 + Self::new() [INFO] [stdout] 8 + } [INFO] [stdout] 9 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> packages/agent_core/src/utils/id_slab.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | u32, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `u32::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IdSlab` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> packages/agent_core/src/utils/id_slab.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> packages/agent_core/src/utils/id_slab.rs:113:9 [INFO] [stdout] | [INFO] [stdout] 113 | entry.id = EMPTY_BIT_NEG & entry.id; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `entry.id &= EMPTY_BIT_NEG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> packages/agent_core/src/utils/id_slab.rs:222:44 [INFO] [stdout] | [INFO] [stdout] 222 | return Some(unsafe { std::mem::transmute(entry.value.assume_init_mut()) }); [INFO] [stdout] | ^^^^^^^^^ help: consider adding missing annotations: `transmute::<&mut T, &mut T>` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] = note: `#[warn(clippy::missing_transmute_annotations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `NonOverlapping` [INFO] [stdout] --> packages/agent_core/src/utils/non_overlapping.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / pub fn new() -> Self { [INFO] [stdout] 7 | | NonOverlapping { elements: vec![] } [INFO] [stdout] 8 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 5 + impl Default for NonOverlapping { [INFO] [stdout] 6 + fn default() -> Self { [INFO] [stdout] 7 + Self::new() [INFO] [stdout] 8 + } [INFO] [stdout] 9 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/agent_cli/src/autorun.rs:326:70 [INFO] [stdout] | [INFO] [stdout] 326 | let Some(origin) = OriginResource::from_agent_tunnel(&tunnel) else { [INFO] [stdout] | ^^^^^^^ help: change this to: `tunnel` [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: this boolean expression can be simplified [INFO] [stdout] --> packages/agent_cli/src/playit_secret.rs:103:24 [INFO] [stdout] | [INFO] [stdout] 103 | if !self.path.is_some() || !self.allow_path_read { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.path.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 `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/playit_secret.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | / if secret.is_none() && path.is_none() { [INFO] [stdout] 229 | | if let Ok(secret_env) = std::env::var("PLAYIT_SECRET") { [INFO] [stdout] 230 | | secret.replace(secret_env); [INFO] [stdout] 231 | | } [INFO] [stdout] 232 | | } [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] 228 ~ if secret.is_none() && path.is_none() [INFO] [stdout] 229 ~ && let Ok(secret_env) = std::env::var("PLAYIT_SECRET") { [INFO] [stdout] 230 | secret.replace(secret_env); [INFO] [stdout] 231 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/playit_secret.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | / if path.is_none() { [INFO] [stdout] 235 | | if let Ok(path_env) = std::env::var("PLAYIT_SECRET_PATH") { [INFO] [stdout] 236 | | path.replace(path_env); [INFO] [stdout] 237 | | } [INFO] [stdout] 238 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 234 ~ if path.is_none() [INFO] [stdout] 235 ~ && let Ok(path_env) = std::env::var("PLAYIT_SECRET_PATH") { [INFO] [stdout] 236 | path.replace(path_env); [INFO] [stdout] 237 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/tui_app.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | / if event::poll(Duration::from_millis(50)).map_err(CliError::RenderError)? { [INFO] [stdout] 208 | | if let Event::Key(key) = event::read().map_err(CliError::RenderError)? { [INFO] [stdout] 209 | | self.handle_key_event(key); [INFO] [stdout] 210 | | } [INFO] [stdout] 211 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 207 ~ if event::poll(Duration::from_millis(50)).map_err(CliError::RenderError)? [INFO] [stdout] 208 ~ && let Event::Key(key) = event::read().map_err(CliError::RenderError)? { [INFO] [stdout] 209 | self.handle_key_event(key); [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/tui_app.rs:677:9 [INFO] [stdout] | [INFO] [stdout] 677 | / if self.terminal.is_none() { [INFO] [stdout] 678 | | if let Err(e) = self.init_terminal() { [INFO] [stdout] 679 | | tracing::error!(?e, "Failed to init terminal"); [INFO] [stdout] 680 | | return; [INFO] [stdout] 681 | | } [INFO] [stdout] 682 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 677 ~ if self.terminal.is_none() [INFO] [stdout] 678 ~ && let Err(e) = self.init_terminal() { [INFO] [stdout] 679 | tracing::error!(?e, "Failed to init terminal"); [INFO] [stdout] 680 | return; [INFO] [stdout] 681 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/tui_app.rs:690:9 [INFO] [stdout] | [INFO] [stdout] 690 | / if let Ok(true) = event::poll(Duration::from_millis(10)) { [INFO] [stdout] 691 | | if let Ok(Event::Key(key)) = event::read() { [INFO] [stdout] 692 | | self.handle_key_event(key); [INFO] [stdout] 693 | | } [INFO] [stdout] 694 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 690 ~ if let Ok(true) = event::poll(Duration::from_millis(10)) [INFO] [stdout] 691 ~ && let Ok(Event::Key(key)) = event::read() { [INFO] [stdout] 692 | self.handle_key_event(key); [INFO] [stdout] 693 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/agent_cli/src/autorun.rs:326:70 [INFO] [stdout] | [INFO] [stdout] 326 | let Some(origin) = OriginResource::from_agent_tunnel(&tunnel) else { [INFO] [stdout] | ^^^^^^^ help: change this to: `tunnel` [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: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/mod.rs:160:13 [INFO] [stdout] | [INFO] [stdout] 160 | / if let Some((ts, last_render)) = &self.last_display { [INFO] [stdout] 161 | | if now_milli() - *ts < 10_000 && content.eq(last_render) { [INFO] [stdout] 162 | | return; [INFO] [stdout] 163 | | } [INFO] [stdout] 164 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 160 ~ if let Some((ts, last_render)) = &self.last_display [INFO] [stdout] 161 ~ && now_milli() - *ts < 10_000 && content.eq(last_render) { [INFO] [stdout] 162 | return; [INFO] [stdout] 163 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> packages/agent_cli/src/playit_secret.rs:103:24 [INFO] [stdout] | [INFO] [stdout] 103 | if !self.path.is_some() || !self.allow_path_read { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.path.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: redundant closure [INFO] [stdout] --> packages/agent_cli/src/ui/mod.rs:204:62 [INFO] [stdout] | [INFO] [stdout] 204 | let code = match tokio::task::spawn_blocking(|| event::read()).await.unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `event::read` [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: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/mod.rs:212:25 [INFO] [stdout] | [INFO] [stdout] 212 | / if input.len() == 0 { [INFO] [stdout] 213 | | if let Some(default_yes) = default_yes { [INFO] [stdout] 214 | | return Ok(default_yes); [INFO] [stdout] 215 | | } [INFO] [stdout] 216 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 212 ~ if input.len() == 0 [INFO] [stdout] 213 ~ && let Some(default_yes) = default_yes { [INFO] [stdout] 214 | return Ok(default_yes); [INFO] [stdout] 215 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> packages/agent_cli/src/ui/mod.rs:212:28 [INFO] [stdout] | [INFO] [stdout] 212 | if input.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `input.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/agent_cli/src/main.rs:205:17 [INFO] [stdout] | [INFO] [stdout] 205 | hex::encode(&buffer) [INFO] [stdout] | ^^^^^^^ help: change this to: `buffer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/playit_secret.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | / if secret.is_none() && path.is_none() { [INFO] [stdout] 229 | | if let Ok(secret_env) = std::env::var("PLAYIT_SECRET") { [INFO] [stdout] 230 | | secret.replace(secret_env); [INFO] [stdout] 231 | | } [INFO] [stdout] 232 | | } [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] 228 ~ if secret.is_none() && path.is_none() [INFO] [stdout] 229 ~ && let Ok(secret_env) = std::env::var("PLAYIT_SECRET") { [INFO] [stdout] 230 | secret.replace(secret_env); [INFO] [stdout] 231 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/playit_secret.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | / if path.is_none() { [INFO] [stdout] 235 | | if let Ok(path_env) = std::env::var("PLAYIT_SECRET_PATH") { [INFO] [stdout] 236 | | path.replace(path_env); [INFO] [stdout] 237 | | } [INFO] [stdout] 238 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 234 ~ if path.is_none() [INFO] [stdout] 235 ~ && let Ok(path_env) = std::env::var("PLAYIT_SECRET_PATH") { [INFO] [stdout] 236 | path.replace(path_env); [INFO] [stdout] 237 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/tui_app.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | / if event::poll(Duration::from_millis(50)).map_err(CliError::RenderError)? { [INFO] [stdout] 208 | | if let Event::Key(key) = event::read().map_err(CliError::RenderError)? { [INFO] [stdout] 209 | | self.handle_key_event(key); [INFO] [stdout] 210 | | } [INFO] [stdout] 211 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 207 ~ if event::poll(Duration::from_millis(50)).map_err(CliError::RenderError)? [INFO] [stdout] 208 ~ && let Event::Key(key) = event::read().map_err(CliError::RenderError)? { [INFO] [stdout] 209 | self.handle_key_event(key); [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/tui_app.rs:677:9 [INFO] [stdout] | [INFO] [stdout] 677 | / if self.terminal.is_none() { [INFO] [stdout] 678 | | if let Err(e) = self.init_terminal() { [INFO] [stdout] 679 | | tracing::error!(?e, "Failed to init terminal"); [INFO] [stdout] 680 | | return; [INFO] [stdout] 681 | | } [INFO] [stdout] 682 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 677 ~ if self.terminal.is_none() [INFO] [stdout] 678 ~ && let Err(e) = self.init_terminal() { [INFO] [stdout] 679 | tracing::error!(?e, "Failed to init terminal"); [INFO] [stdout] 680 | return; [INFO] [stdout] 681 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/tui_app.rs:690:9 [INFO] [stdout] | [INFO] [stdout] 690 | / if let Ok(true) = event::poll(Duration::from_millis(10)) { [INFO] [stdout] 691 | | if let Ok(Event::Key(key)) = event::read() { [INFO] [stdout] 692 | | self.handle_key_event(key); [INFO] [stdout] 693 | | } [INFO] [stdout] 694 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 690 ~ if let Ok(true) = event::poll(Duration::from_millis(10)) [INFO] [stdout] 691 ~ && let Ok(Event::Key(key)) = event::read() { [INFO] [stdout] 692 | self.handle_key_event(key); [INFO] [stdout] 693 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/mod.rs:160:13 [INFO] [stdout] | [INFO] [stdout] 160 | / if let Some((ts, last_render)) = &self.last_display { [INFO] [stdout] 161 | | if now_milli() - *ts < 10_000 && content.eq(last_render) { [INFO] [stdout] 162 | | return; [INFO] [stdout] 163 | | } [INFO] [stdout] 164 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 160 ~ if let Some((ts, last_render)) = &self.last_display [INFO] [stdout] 161 ~ && now_milli() - *ts < 10_000 && content.eq(last_render) { [INFO] [stdout] 162 | return; [INFO] [stdout] 163 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> packages/agent_cli/src/ui/mod.rs:204:62 [INFO] [stdout] | [INFO] [stdout] 204 | let code = match tokio::task::spawn_blocking(|| event::read()).await.unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `event::read` [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: this `if` statement can be collapsed [INFO] [stdout] --> packages/agent_cli/src/ui/mod.rs:212:25 [INFO] [stdout] | [INFO] [stdout] 212 | / if input.len() == 0 { [INFO] [stdout] 213 | | if let Some(default_yes) = default_yes { [INFO] [stdout] 214 | | return Ok(default_yes); [INFO] [stdout] 215 | | } [INFO] [stdout] 216 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 212 ~ if input.len() == 0 [INFO] [stdout] 213 ~ && let Some(default_yes) = default_yes { [INFO] [stdout] 214 | return Ok(default_yes); [INFO] [stdout] 215 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> packages/agent_cli/src/ui/mod.rs:212:28 [INFO] [stdout] | [INFO] [stdout] 212 | if input.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `input.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/agent_cli/src/main.rs:205:17 [INFO] [stdout] | [INFO] [stdout] 205 | hex::encode(&buffer) [INFO] [stdout] | ^^^^^^^ help: change this to: `buffer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.41s [INFO] running `Command { std: "docker" "inspect" "c3982c46190fc3d1d8b4809689142e773a1a6fe99fc3fc53baebbf5ec01b6782", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c3982c46190fc3d1d8b4809689142e773a1a6fe99fc3fc53baebbf5ec01b6782", kill_on_drop: false }` [INFO] [stdout] c3982c46190fc3d1d8b4809689142e773a1a6fe99fc3fc53baebbf5ec01b6782