[INFO] cloning repository https://github.com/kusold/otto [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kusold/otto" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkusold%2Fotto", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkusold%2Fotto'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] cd50cbe8738c8192fca833c44fc4e64d5a4f17b6 [INFO] linting kusold/otto against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkusold%2Fotto" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/kusold/otto [INFO] finished tweaking git repo https://github.com/kusold/otto [INFO] tweaked toml for git repo https://github.com/kusold/otto written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/kusold/otto 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/kusold/otto 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 cc v1.2.54 [INFO] [stderr] Downloaded zerocopy-derive v0.8.34 [INFO] [stderr] Downloaded clap_builder v4.5.55 [INFO] [stderr] Downloaded zerocopy v0.8.34 [INFO] [stderr] Downloaded petname v2.0.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] cb5ea970b54f3d8fde7768c72e34dde3e1ecc1f7635c7d1c58f24998d8cc958a [INFO] running `Command { std: "docker" "start" "-a" "cb5ea970b54f3d8fde7768c72e34dde3e1ecc1f7635c7d1c58f24998d8cc958a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "cb5ea970b54f3d8fde7768c72e34dde3e1ecc1f7635c7d1c58f24998d8cc958a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cb5ea970b54f3d8fde7768c72e34dde3e1ecc1f7635c7d1c58f24998d8cc958a", kill_on_drop: false }` [INFO] [stdout] cb5ea970b54f3d8fde7768c72e34dde3e1ecc1f7635c7d1c58f24998d8cc958a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 2ae880a9a509a54efac109b2b2ea1bf24d8c90c8a9c8d608fba33c92ebf7e8f8 [INFO] running `Command { std: "docker" "start" "-a" "2ae880a9a509a54efac109b2b2ea1bf24d8c90c8a9c8d608fba33c92ebf7e8f8", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling zerocopy v0.8.34 [INFO] [stderr] Compiling anyhow v1.0.100 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Compiling zmij v1.0.17 [INFO] [stderr] Checking otto-agent-claude v0.1.2 (/opt/rustwide/workdir/crates/otto-agent-claude) [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking otto-log v0.1.2 (/opt/rustwide/workdir/crates/otto-log) [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Checking clap_builder v4.5.55 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Checking bitflags v2.10.0 [INFO] [stderr] Checking linux-raw-sys v0.11.0 [INFO] [stderr] Checking once_cell v1.21.3 [INFO] [stderr] Checking otto-beads v0.1.2 (/opt/rustwide/workdir/crates/otto-beads) [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto-agent-claude/src/lib.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | / if let Some(callback) = abort_callback { [INFO] [stdout] 203 | | if callback() { [INFO] [stdout] 204 | | // Abort requested, kill claude and wait for it to exit [INFO] [stdout] 205 | | kill_claude(); [INFO] [stdout] ... | [INFO] [stdout] 218 | | } [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] 202 ~ if let Some(callback) = abort_callback [INFO] [stdout] 203 ~ && callback() { [INFO] [stdout] 204 | // Abort requested, kill claude and wait for it to exit [INFO] [stdout] ... [INFO] [stdout] 216 | return Ok(()); [INFO] [stdout] 217 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `kill_claude` [INFO] [stdout] --> crates/otto-agent-claude/tests/integration_tests.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | kill_claude, wait_for_claude_exit, wait_for_claude_exit_with_progress, ClaudeError, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto-agent-claude/src/lib.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | / if let Some(callback) = abort_callback { [INFO] [stdout] 203 | | if callback() { [INFO] [stdout] 204 | | // Abort requested, kill claude and wait for it to exit [INFO] [stdout] 205 | | kill_claude(); [INFO] [stdout] ... | [INFO] [stdout] 218 | | } [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] 202 ~ if let Some(callback) = abort_callback [INFO] [stdout] 203 ~ && callback() { [INFO] [stdout] 204 | // Abort requested, kill claude and wait for it to exit [INFO] [stdout] ... [INFO] [stdout] 216 | return Ok(()); [INFO] [stdout] 217 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:197:46 [INFO] [stdout] | [INFO] [stdout] 197 | BeadsError::BeadsNotAvailable => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:198:43 [INFO] [stdout] | [INFO] [stdout] 198 | BeadsError::NotInitialized => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:199:47 [INFO] [stdout] | [INFO] [stdout] 199 | BeadsError::ExecutionFailed(_) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:203:46 [INFO] [stdout] | [INFO] [stdout] 203 | BeadsError::BeadsNotAvailable => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:204:43 [INFO] [stdout] | [INFO] [stdout] 204 | BeadsError::NotInitialized => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:205:47 [INFO] [stdout] | [INFO] [stdout] 205 | BeadsError::ExecutionFailed(_) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:209:46 [INFO] [stdout] | [INFO] [stdout] 209 | BeadsError::BeadsNotAvailable => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:210:43 [INFO] [stdout] | [INFO] [stdout] 210 | BeadsError::NotInitialized => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:211:47 [INFO] [stdout] | [INFO] [stdout] 211 | BeadsError::ExecutionFailed(_) => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> crates/otto-beads/src/lib.rs:220:9 [INFO] [stdout] | [INFO] [stdout] 220 | assert_eq!(result.unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 220 - assert_eq!(result.unwrap(), true); [INFO] [stdout] 220 + assert!(result.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> crates/otto-beads/src/lib.rs:220:20 [INFO] [stdout] | [INFO] [stdout] 220 | assert_eq!(result.unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:218:41 [INFO] [stdout] | [INFO] [stdout] 218 | let result: BeadsResult = Ok(true); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_literal_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> crates/otto-beads/src/lib.rs:224:9 [INFO] [stdout] | [INFO] [stdout] 224 | assert_eq!(result2.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 224 - assert_eq!(result2.unwrap(), false); [INFO] [stdout] 224 + assert!(!result2.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> crates/otto-beads/src/lib.rs:224:20 [INFO] [stdout] | [INFO] [stdout] 224 | assert_eq!(result2.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> crates/otto-beads/src/lib.rs:222:42 [INFO] [stdout] | [INFO] [stdout] 222 | let result2: BeadsResult = Ok(false); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> crates/otto-beads/src/lib.rs:264:9 [INFO] [stdout] | [INFO] [stdout] 264 | assert_eq!(mapped.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 264 - assert_eq!(mapped.unwrap(), false); [INFO] [stdout] 264 + assert!(!mapped.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> crates/otto-beads/src/lib.rs:271:9 [INFO] [stdout] | [INFO] [stdout] 271 | assert_eq!(recovered.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 271 - assert_eq!(recovered.unwrap(), false); [INFO] [stdout] 271 + assert!(!recovered.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling petname v2.0.2 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking tempfile v3.24.0 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking clap v4.5.55 [INFO] [stderr] Checking otto-tmux v0.1.2 (/opt/rustwide/workdir/crates/otto-tmux) [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:547:5 [INFO] [stdout] | [INFO] [stdout] 547 | / match list_windows(session_name)? { [INFO] [stdout] 548 | | windows => Ok(windows.contains(&window_name.to_string())), [INFO] [stdout] 549 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 547 ~ let windows = list_windows(session_name)?; [INFO] [stdout] 548 + Ok(windows.contains(&window_name.to_string())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking otto-core v0.1.2 (/opt/rustwide/workdir/crates/otto-core) [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:547:5 [INFO] [stdout] | [INFO] [stdout] 547 | / match list_windows(session_name)? { [INFO] [stdout] 548 | | windows => Ok(windows.contains(&window_name.to_string())), [INFO] [stdout] 549 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 547 ~ let windows = list_windows(session_name)?; [INFO] [stdout] 548 + Ok(windows.contains(&window_name.to_string())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1002:44 [INFO] [stdout] | [INFO] [stdout] 1002 | TmuxError::TmuxNotAvailable => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1003:18 [INFO] [stdout] | [INFO] [stdout] 1003 | _ => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1007:52 [INFO] [stdout] | [INFO] [stdout] 1007 | TmuxError::SessionCreationFailed(_) => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1008:18 [INFO] [stdout] | [INFO] [stdout] 1008 | _ => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1012:51 [INFO] [stdout] | [INFO] [stdout] 1012 | TmuxError::WindowCreationFailed(_) => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1013:18 [INFO] [stdout] | [INFO] [stdout] 1013 | _ => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1022:9 [INFO] [stdout] | [INFO] [stdout] 1022 | assert_eq!(result.unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 1022 - assert_eq!(result.unwrap(), true); [INFO] [stdout] 1022 + assert!(result.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1022:20 [INFO] [stdout] | [INFO] [stdout] 1022 | assert_eq!(result.unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1020:40 [INFO] [stdout] | [INFO] [stdout] 1020 | let result: TmuxResult = Ok(true); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_literal_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1046:9 [INFO] [stdout] | [INFO] [stdout] 1046 | assert_eq!(mapped.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 1046 - assert_eq!(mapped.unwrap(), false); [INFO] [stdout] 1046 + assert!(!mapped.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1053:9 [INFO] [stdout] | [INFO] [stdout] 1053 | assert_eq!(recovered.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 1053 - assert_eq!(recovered.unwrap(), false); [INFO] [stdout] 1053 + assert!(!recovered.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1208:17 [INFO] [stdout] | [INFO] [stdout] 1208 | assert!(!result.is_err()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `result.is_ok()` [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 boolean expression can be simplified [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1213:17 [INFO] [stdout] | [INFO] [stdout] 1213 | assert!(!result2.is_ok()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `result2.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1209:20 [INFO] [stdout] | [INFO] [stdout] 1209 | assert_eq!(result.unwrap(), 42); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1206:39 [INFO] [stdout] | [INFO] [stdout] 1206 | let result: TmuxResult = Ok(42); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap_or()` on `Ok` value [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1216:20 [INFO] [stdout] | [INFO] [stdout] 1216 | assert_eq!(result3.unwrap_or(0), 10); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap_or()` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1215:40 [INFO] [stdout] | [INFO] [stdout] 1215 | let result3: TmuxResult = Ok(10); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap_or()` on `Err` value [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1219:20 [INFO] [stdout] | [INFO] [stdout] 1219 | assert_eq!(result4.unwrap_or(0), 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Err` and `unwrap_or()` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1218:40 [INFO] [stdout] | [INFO] [stdout] 1218 | let result4: TmuxResult = Err(TmuxError::TmuxNotAvailable); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> crates/otto-tmux/src/lib.rs:1249:27 [INFO] [stdout] | [INFO] [stdout] 1249 | let all_windows = vec![ [INFO] [stdout] | ___________________________^ [INFO] [stdout] 1250 | | "ralph-crimson".to_string(), [INFO] [stdout] 1251 | | "ralph-willow".to_string(), [INFO] [stdout] 1252 | | "claude".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 1255 | | "otto".to_string(), [INFO] [stdout] 1256 | | ]; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 1249 ~ let all_windows = ["ralph-crimson".to_string(), [INFO] [stdout] 1250 + "ralph-willow".to_string(), [INFO] [stdout] 1251 + "claude".to_string(), [INFO] [stdout] 1252 + "myralph-test".to_string(), [INFO] [stdout] 1253 + "testralph".to_string(), [INFO] [stdout] 1254 ~ "otto".to_string()]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> crates/otto-core/src/lib.rs:221:5 [INFO] [stdout] | [INFO] [stdout] 221 | /// If `None`, uses the default "otto:0.0" pane [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto-core/src/lib.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 333 | / if let Some(callback) = abort_callback { [INFO] [stdout] 334 | | if callback() { [INFO] [stdout] 335 | | // Abort requested - kill Claude process in this pane [INFO] [stdout] 336 | | if let Ok(Some(pid)) = otto_tmux::get_pane_pid(pane_spec) { [INFO] [stdout] ... | [INFO] [stdout] 352 | | } [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] 333 ~ if let Some(callback) = abort_callback [INFO] [stdout] 334 ~ && callback() { [INFO] [stdout] 335 | // Abort requested - kill Claude process in this pane [INFO] [stdout] ... [INFO] [stdout] 350 | return Ok(()); [INFO] [stdout] 351 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking otto v0.1.2 (/opt/rustwide/workdir/crates/otto) [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> crates/otto-core/src/lib.rs:221:5 [INFO] [stdout] | [INFO] [stdout] 221 | /// If `None`, uses the default "otto:0.0" pane [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto-core/src/lib.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 333 | / if let Some(callback) = abort_callback { [INFO] [stdout] 334 | | if callback() { [INFO] [stdout] 335 | | // Abort requested - kill Claude process in this pane [INFO] [stdout] 336 | | if let Ok(Some(pid)) = otto_tmux::get_pane_pid(pane_spec) { [INFO] [stdout] ... | [INFO] [stdout] 352 | | } [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] 333 ~ if let Some(callback) = abort_callback [INFO] [stdout] 334 ~ && callback() { [INFO] [stdout] 335 | // Abort requested - kill Claude process in this pane [INFO] [stdout] ... [INFO] [stdout] 350 | return Ok(()); [INFO] [stdout] 351 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> crates/otto-core/src/lib.rs:888:9 [INFO] [stdout] | [INFO] [stdout] 888 | / match result { [INFO] [stdout] 889 | | Ok(_) => {}, [INFO] [stdout] 890 | | Err(_) => {}, [INFO] [stdout] 891 | | } [INFO] [stdout] | |_________^ help: try: `if let Ok(_) = result {}` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1276:5 [INFO] [stdout] | [INFO] [stdout] 1276 | / if let Some(ref status) = status_observation { [INFO] [stdout] 1277 | | if status != "clean" && status != "uncommitted" && status != "unpushed" { [INFO] [stdout] 1278 | | return Err(format!( [INFO] [stdout] 1279 | | "Invalid status: '{}' (must be 'clean', 'uncommitted', or 'unpushed')", [INFO] [stdout] ... | [INFO] [stdout] 1283 | | } [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] 1276 ~ if let Some(ref status) = status_observation [INFO] [stdout] 1277 ~ && status != "clean" && status != "uncommitted" && status != "unpushed" { [INFO] [stdout] 1278 | return Err(format!( [INFO] [stdout] ... [INFO] [stdout] 1281 | )); [INFO] [stdout] 1282 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1488:5 [INFO] [stdout] | [INFO] [stdout] 1488 | / if let Ok(bead_id) = std::env::var("OTTO_CURRENT_BEAD") { [INFO] [stdout] 1489 | | if !bead_id.is_empty() { [INFO] [stdout] 1490 | | return Ok(Some(bead_id)); [INFO] [stdout] 1491 | | } [INFO] [stdout] 1492 | | } [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] 1488 ~ if let Ok(bead_id) = std::env::var("OTTO_CURRENT_BEAD") [INFO] [stdout] 1489 ~ && !bead_id.is_empty() { [INFO] [stdout] 1490 | return Ok(Some(bead_id)); [INFO] [stdout] 1491 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1516:5 [INFO] [stdout] | [INFO] [stdout] 1516 | / if let Ok(bead_id) = std::env::var("BEAD_ID") { [INFO] [stdout] 1517 | | if !bead_id.is_empty() { [INFO] [stdout] 1518 | | return Ok(bead_id); [INFO] [stdout] 1519 | | } [INFO] [stdout] 1520 | | } [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] 1516 ~ if let Ok(bead_id) = std::env::var("BEAD_ID") [INFO] [stdout] 1517 ~ && !bead_id.is_empty() { [INFO] [stdout] 1518 | return Ok(bead_id); [INFO] [stdout] 1519 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1534:13 [INFO] [stdout] | [INFO] [stdout] 1534 | / if let Ok(json) = serde_json::from_str::(last_line) { [INFO] [stdout] 1535 | | if let Some(id) = json.get("id").and_then(|v| v.as_str()) { [INFO] [stdout] 1536 | | return Ok(id.to_string()); [INFO] [stdout] 1537 | | } [INFO] [stdout] 1538 | | } [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] 1534 ~ if let Ok(json) = serde_json::from_str::(last_line) [INFO] [stdout] 1535 ~ && let Some(id) = json.get("id").and_then(|v| v.as_str()) { [INFO] [stdout] 1536 | return Ok(id.to_string()); [INFO] [stdout] 1537 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1654:5 [INFO] [stdout] | [INFO] [stdout] 1654 | / if let Ok(output) = output { [INFO] [stdout] 1655 | | if output.status.success() { [INFO] [stdout] 1656 | | let stdout = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 1657 | | if let Some(branch) = stdout.strip_prefix("refs/remotes/origin/") { [INFO] [stdout] ... | [INFO] [stdout] 1661 | | } [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] 1654 ~ if let Ok(output) = output [INFO] [stdout] 1655 ~ && output.status.success() { [INFO] [stdout] 1656 | let stdout = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] ... [INFO] [stdout] 1659 | } [INFO] [stdout] 1660 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1668:5 [INFO] [stdout] | [INFO] [stdout] 1668 | / if let Ok(output) = output { [INFO] [stdout] 1669 | | if output.status.success() { [INFO] [stdout] 1670 | | return Ok("main".to_string()); [INFO] [stdout] 1671 | | } [INFO] [stdout] 1672 | | } [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] 1668 ~ if let Ok(output) = output [INFO] [stdout] 1669 ~ && output.status.success() { [INFO] [stdout] 1670 | return Ok("main".to_string()); [INFO] [stdout] 1671 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1679:5 [INFO] [stdout] | [INFO] [stdout] 1679 | / if let Ok(output) = output { [INFO] [stdout] 1680 | | if output.status.success() { [INFO] [stdout] 1681 | | return Ok("master".to_string()); [INFO] [stdout] 1682 | | } [INFO] [stdout] 1683 | | } [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] 1679 ~ if let Ok(output) = output [INFO] [stdout] 1680 ~ && output.status.success() { [INFO] [stdout] 1681 | return Ok("master".to_string()); [INFO] [stdout] 1682 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1728:5 [INFO] [stdout] | [INFO] [stdout] 1728 | / if let Ok(output) = output { [INFO] [stdout] 1729 | | if output.status.success() { [INFO] [stdout] 1730 | | let branch = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 1731 | | println!("Branch: {}", branch.trim()); [INFO] [stdout] 1732 | | } [INFO] [stdout] 1733 | | } [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] 1728 ~ if let Ok(output) = output [INFO] [stdout] 1729 ~ && output.status.success() { [INFO] [stdout] 1730 | let branch = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 1731 | println!("Branch: {}", branch.trim()); [INFO] [stdout] 1732 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1737:5 [INFO] [stdout] | [INFO] [stdout] 1737 | / if workspace_info.exists() { [INFO] [stdout] 1738 | | if let Ok(content) = fs::read_to_string(&workspace_info) { [INFO] [stdout] 1739 | | for line in content.lines() { [INFO] [stdout] 1740 | | if line.starts_with("issue_id=") { [INFO] [stdout] ... | [INFO] [stdout] 1749 | | } [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] 1737 ~ if workspace_info.exists() [INFO] [stdout] 1738 ~ && let Ok(content) = fs::read_to_string(&workspace_info) { [INFO] [stdout] 1739 | for line in content.lines() { [INFO] [stdout] ... [INFO] [stdout] 1747 | } [INFO] [stdout] 1748 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1858:9 [INFO] [stdout] | [INFO] [stdout] 1858 | / if let Ok(output) = output { [INFO] [stdout] 1859 | | if output.status.success() { [INFO] [stdout] 1860 | | let pid_str = String::from_utf8_lossy(&output.stdout).trim().to_string(); [INFO] [stdout] 1861 | | if let Ok(pane_pid) = pid_str.parse::() { [INFO] [stdout] ... | [INFO] [stdout] 1936 | | } [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] 1858 ~ if let Ok(output) = output [INFO] [stdout] 1859 ~ && output.status.success() { [INFO] [stdout] 1860 | let pid_str = String::from_utf8_lossy(&output.stdout).trim().to_string(); [INFO] [stdout] ... [INFO] [stdout] 1934 | } [INFO] [stdout] 1935 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1867:21 [INFO] [stdout] | [INFO] [stdout] 1867 | / if let Ok(claude_output) = claude_output { [INFO] [stdout] 1868 | | if claude_output.status.success() { [INFO] [stdout] 1869 | | let claude_pids: Vec = String::from_utf8_lossy(&claude_output.stdout) [INFO] [stdout] 1870 | | .lines() [INFO] [stdout] ... | [INFO] [stdout] 1933 | | } [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] 1867 ~ if let Ok(claude_output) = claude_output [INFO] [stdout] 1868 ~ && claude_output.status.success() { [INFO] [stdout] 1869 | let claude_pids: Vec = String::from_utf8_lossy(&claude_output.stdout) [INFO] [stdout] ... [INFO] [stdout] 1931 | } [INFO] [stdout] 1932 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> crates/otto/src/main.rs:1883:60 [INFO] [stdout] | [INFO] [stdout] 1883 | ... let ppid_str = line["PPid:".len()..].trim(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> crates/otto/src/main.rs:1882:41 [INFO] [stdout] | [INFO] [stdout] 1882 | ... if line.starts_with("PPid:") { [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] 1882 ~ if let Some() = line.strip_prefix("PPid:") { [INFO] [stdout] 1883 ~ let ppid_str = .trim(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1884:45 [INFO] [stdout] | [INFO] [stdout] 1884 | / ... if let Ok(ppid) = ppid_str.parse::() { [INFO] [stdout] 1885 | | ... if ppid == pane_pid { [INFO] [stdout] 1886 | | ... // This Claude process is a direct child of our pane [INFO] [stdout] 1887 | | ... child_claude_pids.push(claude_pid); [INFO] [stdout] 1888 | | ... } [INFO] [stdout] 1889 | | ... } [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] 1884 ~ if let Ok(ppid) = ppid_str.parse::() [INFO] [stdout] 1885 ~ && ppid == pane_pid { [INFO] [stdout] 1886 | // This Claude process is a direct child of our pane [INFO] [stdout] 1887 | child_claude_pids.push(claude_pid); [INFO] [stdout] 1888 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2005:5 [INFO] [stdout] | [INFO] [stdout] 2005 | / if let Ok(output) = output { [INFO] [stdout] 2006 | | if output.status.success() { [INFO] [stdout] 2007 | | let stdout = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 2008 | | for line in stdout.lines() { [INFO] [stdout] ... | [INFO] [stdout] 2016 | | } [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] 2005 ~ if let Ok(output) = output [INFO] [stdout] 2006 ~ && output.status.success() { [INFO] [stdout] 2007 | let stdout = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] ... [INFO] [stdout] 2014 | } [INFO] [stdout] 2015 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> crates/otto/src/main.rs:2273:96 [INFO] [stdout] | [INFO] [stdout] 2273 | println!("{:<22} {:<26} {:<9} {:<11} {}", "WORKSPACE", "BRANCH", "STATUS", "BEAD", "AGE"); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2273 - println!("{:<22} {:<26} {:<9} {:<11} {}", "WORKSPACE", "BRANCH", "STATUS", "BEAD", "AGE"); [INFO] [stdout] 2273 + println!("{:<22} {:<26} {:<9} {:<11} AGE", "WORKSPACE", "BRANCH", "STATUS", "BEAD"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> crates/otto/src/main.rs:2281:44 [INFO] [stdout] | [INFO] [stdout] 2281 | rel.to_str().unwrap_or(&path) [INFO] [stdout] | ^^^^^ help: change this to: `path` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> crates/otto/src/main.rs:2283:21 [INFO] [stdout] | [INFO] [stdout] 2283 | &path [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> crates/otto/src/main.rs:2287:45 [INFO] [stdout] | [INFO] [stdout] 2287 | let age = get_workspace_age(&path); [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `status` [INFO] [stdout] --> crates/otto/src/main.rs:984:41 [INFO] [stdout] | [INFO] [stdout] 984 | Some(Commands::Done { mode, status, .. }) => { [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `status: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2350:21 [INFO] [stdout] | [INFO] [stdout] 2350 | / if let Ok(output) = output { [INFO] [stdout] 2351 | | if output.status.success() { [INFO] [stdout] 2352 | | let branch = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 2353 | | println!(" current_branch: {}", branch.trim()); [INFO] [stdout] 2354 | | } [INFO] [stdout] 2355 | | } [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] 2350 ~ if let Ok(output) = output [INFO] [stdout] 2351 ~ && output.status.success() { [INFO] [stdout] 2352 | let branch = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 2353 | println!(" current_branch: {}", branch.trim()); [INFO] [stdout] 2354 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2639:5 [INFO] [stdout] | [INFO] [stdout] 2639 | / if let Ok(output) = output { [INFO] [stdout] 2640 | | if output.status.success() { [INFO] [stdout] 2641 | | let commit = String::from_utf8_lossy(&output.stdout).trim().to_string(); [INFO] [stdout] 2642 | | if !commit.is_empty() { [INFO] [stdout] ... | [INFO] [stdout] 2673 | | } [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] 2639 ~ if let Ok(output) = output [INFO] [stdout] 2640 ~ && output.status.success() { [INFO] [stdout] 2641 | let commit = String::from_utf8_lossy(&output.stdout).trim().to_string(); [INFO] [stdout] ... [INFO] [stdout] 2671 | } [INFO] [stdout] 2672 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2647:17 [INFO] [stdout] | [INFO] [stdout] 2647 | / if let Ok(output) = output { [INFO] [stdout] 2648 | | if output.status.success() { [INFO] [stdout] 2649 | | let timestamp = String::from_utf8_lossy(&output.stdout).trim().parse().unwrap_or(0); [INFO] [stdout] ... | [INFO] [stdout] 2670 | | } [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] 2647 ~ if let Ok(output) = output [INFO] [stdout] 2648 ~ && output.status.success() { [INFO] [stdout] 2649 | let timestamp = String::from_utf8_lossy(&output.stdout).trim().parse().unwrap_or(0); [INFO] [stdout] ... [INFO] [stdout] 2668 | } [INFO] [stdout] 2669 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2676:5 [INFO] [stdout] | [INFO] [stdout] 2676 | / if let Ok(metadata) = std::fs::metadata(workspace_path) { [INFO] [stdout] 2677 | | if let Ok(modified) = metadata.modified() { [INFO] [stdout] 2678 | | use std::time::{SystemTime, UNIX_EPOCH}; [INFO] [stdout] 2679 | | let modified_time = modified [INFO] [stdout] ... | [INFO] [stdout] 2702 | | } [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] 2676 ~ if let Ok(metadata) = std::fs::metadata(workspace_path) [INFO] [stdout] 2677 ~ && let Ok(modified) = metadata.modified() { [INFO] [stdout] 2678 | use std::time::{SystemTime, UNIX_EPOCH}; [INFO] [stdout] ... [INFO] [stdout] 2700 | } [INFO] [stdout] 2701 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> crates/otto/src/main.rs:2740:21 [INFO] [stdout] | [INFO] [stdout] 2740 | / if !SHUTDOWN_REQUESTED.load(Ordering::SeqCst) { [INFO] [stdout] 2741 | | SHUTDOWN_REQUESTED.store(true, Ordering::SeqCst); [INFO] [stdout] 2742 | | println!("\nShutdown signal received, waiting for agent to finish..."); [INFO] [stdout] 2743 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2739 ~ signal_hook::consts::SIGTERM [INFO] [stdout] 2740 ~ if !SHUTDOWN_REQUESTED.load(Ordering::SeqCst) => { [INFO] [stdout] 2741 | SHUTDOWN_REQUESTED.store(true, Ordering::SeqCst); [INFO] [stdout] 2742 | println!("\nShutdown signal received, waiting for agent to finish..."); [INFO] [stdout] 2743 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: items after a test module [INFO] [stdout] --> crates/otto/src/main.rs:504:1 [INFO] [stdout] | [INFO] [stdout] 504 | mod tests { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1245 | / fn run_done_command( [INFO] [stdout] 1246 | | mode: Option, [INFO] [stdout] 1247 | | status_observation: Option, [INFO] [stdout] 1248 | | issue_id: Option, [INFO] [stdout] ... | [INFO] [stdout] 1251 | | dry_run: bool, [INFO] [stdout] 1252 | | ) -> Result<(), String> { [INFO] [stdout] | |_______________________^ [INFO] [stdout] ... [INFO] [stdout] 1484 | fn detect_hooked_bead(hook_file: &Path) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1512 | fn detect_issue_id() -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1556 | fn validate_git_state() -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1626 | fn get_current_branch() -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1646 | fn get_main_branch() -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1699 | / fn nuke_workspace_helper( [INFO] [stdout] 1700 | | project_root: &Path, [INFO] [stdout] 1701 | | yes_flag: bool, [INFO] [stdout] 1702 | | dry_run: bool, [INFO] [stdout] 1703 | | ) -> Result<(), String> { [INFO] [stdout] | |_______________________^ [INFO] [stdout] ... [INFO] [stdout] 1824 | fn process_exists(pid: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1840 | fn exit_claude(_mode: &str, timeout: u64) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2045 | fn run_pre_flight_check() -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2187 | fn run_workspace_command(command: WorkspaceCommands) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2591 | fn is_workspace_clean(workspace_path: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2631 | fn get_workspace_age(workspace_path: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2714 | fn setup_signal_handlers() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2751 | fn main() { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2872 | fn start_otto() -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2913 | fn attach_to_window(window: Option) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2980 | fn run_single_pass(prompt_file: Option<&str>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3055 | fn generate_waiting_animation_frame(frame: u32) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3071 | fn run_watch_loop(prompt_file: Option<&str>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_test_module [INFO] [stdout] = note: `#[warn(clippy::items_after_test_module)]` on by default [INFO] [stdout] = help: move the items to before the test module was defined [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> crates/otto/src/main.rs:916:39 [INFO] [stdout] | [INFO] [stdout] 916 | assert!(default_path.contains(&issue_id)); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `issue_id` [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: the borrowed expression implements the required traits [INFO] [stdout] --> crates/otto/src/main.rs:927:36 [INFO] [stdout] | [INFO] [stdout] 927 | assert!(error_msg.contains(&issue_id)); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `issue_id` [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] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1276:5 [INFO] [stdout] | [INFO] [stdout] 1276 | / if let Some(ref status) = status_observation { [INFO] [stdout] 1277 | | if status != "clean" && status != "uncommitted" && status != "unpushed" { [INFO] [stdout] 1278 | | return Err(format!( [INFO] [stdout] 1279 | | "Invalid status: '{}' (must be 'clean', 'uncommitted', or 'unpushed')", [INFO] [stdout] ... | [INFO] [stdout] 1283 | | } [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] 1276 ~ if let Some(ref status) = status_observation [INFO] [stdout] 1277 ~ && status != "clean" && status != "uncommitted" && status != "unpushed" { [INFO] [stdout] 1278 | return Err(format!( [INFO] [stdout] ... [INFO] [stdout] 1281 | )); [INFO] [stdout] 1282 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1488:5 [INFO] [stdout] | [INFO] [stdout] 1488 | / if let Ok(bead_id) = std::env::var("OTTO_CURRENT_BEAD") { [INFO] [stdout] 1489 | | if !bead_id.is_empty() { [INFO] [stdout] 1490 | | return Ok(Some(bead_id)); [INFO] [stdout] 1491 | | } [INFO] [stdout] 1492 | | } [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] 1488 ~ if let Ok(bead_id) = std::env::var("OTTO_CURRENT_BEAD") [INFO] [stdout] 1489 ~ && !bead_id.is_empty() { [INFO] [stdout] 1490 | return Ok(Some(bead_id)); [INFO] [stdout] 1491 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1516:5 [INFO] [stdout] | [INFO] [stdout] 1516 | / if let Ok(bead_id) = std::env::var("BEAD_ID") { [INFO] [stdout] 1517 | | if !bead_id.is_empty() { [INFO] [stdout] 1518 | | return Ok(bead_id); [INFO] [stdout] 1519 | | } [INFO] [stdout] 1520 | | } [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] 1516 ~ if let Ok(bead_id) = std::env::var("BEAD_ID") [INFO] [stdout] 1517 ~ && !bead_id.is_empty() { [INFO] [stdout] 1518 | return Ok(bead_id); [INFO] [stdout] 1519 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1534:13 [INFO] [stdout] | [INFO] [stdout] 1534 | / if let Ok(json) = serde_json::from_str::(last_line) { [INFO] [stdout] 1535 | | if let Some(id) = json.get("id").and_then(|v| v.as_str()) { [INFO] [stdout] 1536 | | return Ok(id.to_string()); [INFO] [stdout] 1537 | | } [INFO] [stdout] 1538 | | } [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] 1534 ~ if let Ok(json) = serde_json::from_str::(last_line) [INFO] [stdout] 1535 ~ && let Some(id) = json.get("id").and_then(|v| v.as_str()) { [INFO] [stdout] 1536 | return Ok(id.to_string()); [INFO] [stdout] 1537 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1654:5 [INFO] [stdout] | [INFO] [stdout] 1654 | / if let Ok(output) = output { [INFO] [stdout] 1655 | | if output.status.success() { [INFO] [stdout] 1656 | | let stdout = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 1657 | | if let Some(branch) = stdout.strip_prefix("refs/remotes/origin/") { [INFO] [stdout] ... | [INFO] [stdout] 1661 | | } [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] 1654 ~ if let Ok(output) = output [INFO] [stdout] 1655 ~ && output.status.success() { [INFO] [stdout] 1656 | let stdout = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] ... [INFO] [stdout] 1659 | } [INFO] [stdout] 1660 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1668:5 [INFO] [stdout] | [INFO] [stdout] 1668 | / if let Ok(output) = output { [INFO] [stdout] 1669 | | if output.status.success() { [INFO] [stdout] 1670 | | return Ok("main".to_string()); [INFO] [stdout] 1671 | | } [INFO] [stdout] 1672 | | } [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] 1668 ~ if let Ok(output) = output [INFO] [stdout] 1669 ~ && output.status.success() { [INFO] [stdout] 1670 | return Ok("main".to_string()); [INFO] [stdout] 1671 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1679:5 [INFO] [stdout] | [INFO] [stdout] 1679 | / if let Ok(output) = output { [INFO] [stdout] 1680 | | if output.status.success() { [INFO] [stdout] 1681 | | return Ok("master".to_string()); [INFO] [stdout] 1682 | | } [INFO] [stdout] 1683 | | } [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] 1679 ~ if let Ok(output) = output [INFO] [stdout] 1680 ~ && output.status.success() { [INFO] [stdout] 1681 | return Ok("master".to_string()); [INFO] [stdout] 1682 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1728:5 [INFO] [stdout] | [INFO] [stdout] 1728 | / if let Ok(output) = output { [INFO] [stdout] 1729 | | if output.status.success() { [INFO] [stdout] 1730 | | let branch = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 1731 | | println!("Branch: {}", branch.trim()); [INFO] [stdout] 1732 | | } [INFO] [stdout] 1733 | | } [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] 1728 ~ if let Ok(output) = output [INFO] [stdout] 1729 ~ && output.status.success() { [INFO] [stdout] 1730 | let branch = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 1731 | println!("Branch: {}", branch.trim()); [INFO] [stdout] 1732 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1737:5 [INFO] [stdout] | [INFO] [stdout] 1737 | / if workspace_info.exists() { [INFO] [stdout] 1738 | | if let Ok(content) = fs::read_to_string(&workspace_info) { [INFO] [stdout] 1739 | | for line in content.lines() { [INFO] [stdout] 1740 | | if line.starts_with("issue_id=") { [INFO] [stdout] ... | [INFO] [stdout] 1749 | | } [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] 1737 ~ if workspace_info.exists() [INFO] [stdout] 1738 ~ && let Ok(content) = fs::read_to_string(&workspace_info) { [INFO] [stdout] 1739 | for line in content.lines() { [INFO] [stdout] ... [INFO] [stdout] 1747 | } [INFO] [stdout] 1748 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1858:9 [INFO] [stdout] | [INFO] [stdout] 1858 | / if let Ok(output) = output { [INFO] [stdout] 1859 | | if output.status.success() { [INFO] [stdout] 1860 | | let pid_str = String::from_utf8_lossy(&output.stdout).trim().to_string(); [INFO] [stdout] 1861 | | if let Ok(pane_pid) = pid_str.parse::() { [INFO] [stdout] ... | [INFO] [stdout] 1936 | | } [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] 1858 ~ if let Ok(output) = output [INFO] [stdout] 1859 ~ && output.status.success() { [INFO] [stdout] 1860 | let pid_str = String::from_utf8_lossy(&output.stdout).trim().to_string(); [INFO] [stdout] ... [INFO] [stdout] 1934 | } [INFO] [stdout] 1935 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1867:21 [INFO] [stdout] | [INFO] [stdout] 1867 | / if let Ok(claude_output) = claude_output { [INFO] [stdout] 1868 | | if claude_output.status.success() { [INFO] [stdout] 1869 | | let claude_pids: Vec = String::from_utf8_lossy(&claude_output.stdout) [INFO] [stdout] 1870 | | .lines() [INFO] [stdout] ... | [INFO] [stdout] 1933 | | } [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] 1867 ~ if let Ok(claude_output) = claude_output [INFO] [stdout] 1868 ~ && claude_output.status.success() { [INFO] [stdout] 1869 | let claude_pids: Vec = String::from_utf8_lossy(&claude_output.stdout) [INFO] [stdout] ... [INFO] [stdout] 1931 | } [INFO] [stdout] 1932 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> crates/otto/src/main.rs:1883:60 [INFO] [stdout] | [INFO] [stdout] 1883 | ... let ppid_str = line["PPid:".len()..].trim(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> crates/otto/src/main.rs:1882:41 [INFO] [stdout] | [INFO] [stdout] 1882 | ... if line.starts_with("PPid:") { [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] 1882 ~ if let Some() = line.strip_prefix("PPid:") { [INFO] [stdout] 1883 ~ let ppid_str = .trim(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:1884:45 [INFO] [stdout] | [INFO] [stdout] 1884 | / ... if let Ok(ppid) = ppid_str.parse::() { [INFO] [stdout] 1885 | | ... if ppid == pane_pid { [INFO] [stdout] 1886 | | ... // This Claude process is a direct child of our pane [INFO] [stdout] 1887 | | ... child_claude_pids.push(claude_pid); [INFO] [stdout] 1888 | | ... } [INFO] [stdout] 1889 | | ... } [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] 1884 ~ if let Ok(ppid) = ppid_str.parse::() [INFO] [stdout] 1885 ~ && ppid == pane_pid { [INFO] [stdout] 1886 | // This Claude process is a direct child of our pane [INFO] [stdout] 1887 | child_claude_pids.push(claude_pid); [INFO] [stdout] 1888 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2005:5 [INFO] [stdout] | [INFO] [stdout] 2005 | / if let Ok(output) = output { [INFO] [stdout] 2006 | | if output.status.success() { [INFO] [stdout] 2007 | | let stdout = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 2008 | | for line in stdout.lines() { [INFO] [stdout] ... | [INFO] [stdout] 2016 | | } [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] 2005 ~ if let Ok(output) = output [INFO] [stdout] 2006 ~ && output.status.success() { [INFO] [stdout] 2007 | let stdout = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] ... [INFO] [stdout] 2014 | } [INFO] [stdout] 2015 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> crates/otto/src/main.rs:2273:96 [INFO] [stdout] | [INFO] [stdout] 2273 | println!("{:<22} {:<26} {:<9} {:<11} {}", "WORKSPACE", "BRANCH", "STATUS", "BEAD", "AGE"); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2273 - println!("{:<22} {:<26} {:<9} {:<11} {}", "WORKSPACE", "BRANCH", "STATUS", "BEAD", "AGE"); [INFO] [stdout] 2273 + println!("{:<22} {:<26} {:<9} {:<11} AGE", "WORKSPACE", "BRANCH", "STATUS", "BEAD"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> crates/otto/src/main.rs:2281:44 [INFO] [stdout] | [INFO] [stdout] 2281 | rel.to_str().unwrap_or(&path) [INFO] [stdout] | ^^^^^ help: change this to: `path` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> crates/otto/src/main.rs:2283:21 [INFO] [stdout] | [INFO] [stdout] 2283 | &path [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> crates/otto/src/main.rs:2287:45 [INFO] [stdout] | [INFO] [stdout] 2287 | let age = get_workspace_age(&path); [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2350:21 [INFO] [stdout] | [INFO] [stdout] 2350 | / if let Ok(output) = output { [INFO] [stdout] 2351 | | if output.status.success() { [INFO] [stdout] 2352 | | let branch = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 2353 | | println!(" current_branch: {}", branch.trim()); [INFO] [stdout] 2354 | | } [INFO] [stdout] 2355 | | } [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] 2350 ~ if let Ok(output) = output [INFO] [stdout] 2351 ~ && output.status.success() { [INFO] [stdout] 2352 | let branch = String::from_utf8_lossy(&output.stdout); [INFO] [stdout] 2353 | println!(" current_branch: {}", branch.trim()); [INFO] [stdout] 2354 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2639:5 [INFO] [stdout] | [INFO] [stdout] 2639 | / if let Ok(output) = output { [INFO] [stdout] 2640 | | if output.status.success() { [INFO] [stdout] 2641 | | let commit = String::from_utf8_lossy(&output.stdout).trim().to_string(); [INFO] [stdout] 2642 | | if !commit.is_empty() { [INFO] [stdout] ... | [INFO] [stdout] 2673 | | } [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] 2639 ~ if let Ok(output) = output [INFO] [stdout] 2640 ~ && output.status.success() { [INFO] [stdout] 2641 | let commit = String::from_utf8_lossy(&output.stdout).trim().to_string(); [INFO] [stdout] ... [INFO] [stdout] 2671 | } [INFO] [stdout] 2672 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2647:17 [INFO] [stdout] | [INFO] [stdout] 2647 | / if let Ok(output) = output { [INFO] [stdout] 2648 | | if output.status.success() { [INFO] [stdout] 2649 | | let timestamp = String::from_utf8_lossy(&output.stdout).trim().parse().unwrap_or(0); [INFO] [stdout] ... | [INFO] [stdout] 2670 | | } [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] 2647 ~ if let Ok(output) = output [INFO] [stdout] 2648 ~ && output.status.success() { [INFO] [stdout] 2649 | let timestamp = String::from_utf8_lossy(&output.stdout).trim().parse().unwrap_or(0); [INFO] [stdout] ... [INFO] [stdout] 2668 | } [INFO] [stdout] 2669 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/otto/src/main.rs:2676:5 [INFO] [stdout] | [INFO] [stdout] 2676 | / if let Ok(metadata) = std::fs::metadata(workspace_path) { [INFO] [stdout] 2677 | | if let Ok(modified) = metadata.modified() { [INFO] [stdout] 2678 | | use std::time::{SystemTime, UNIX_EPOCH}; [INFO] [stdout] 2679 | | let modified_time = modified [INFO] [stdout] ... | [INFO] [stdout] 2702 | | } [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] 2676 ~ if let Ok(metadata) = std::fs::metadata(workspace_path) [INFO] [stdout] 2677 ~ && let Ok(modified) = metadata.modified() { [INFO] [stdout] 2678 | use std::time::{SystemTime, UNIX_EPOCH}; [INFO] [stdout] ... [INFO] [stdout] 2700 | } [INFO] [stdout] 2701 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> crates/otto/src/main.rs:2740:21 [INFO] [stdout] | [INFO] [stdout] 2740 | / if !SHUTDOWN_REQUESTED.load(Ordering::SeqCst) { [INFO] [stdout] 2741 | | SHUTDOWN_REQUESTED.store(true, Ordering::SeqCst); [INFO] [stdout] 2742 | | println!("\nShutdown signal received, waiting for agent to finish..."); [INFO] [stdout] 2743 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2739 ~ signal_hook::consts::SIGTERM [INFO] [stdout] 2740 ~ if !SHUTDOWN_REQUESTED.load(Ordering::SeqCst) => { [INFO] [stdout] 2741 | SHUTDOWN_REQUESTED.store(true, Ordering::SeqCst); [INFO] [stdout] 2742 | println!("\nShutdown signal received, waiting for agent to finish..."); [INFO] [stdout] 2743 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.81s [INFO] running `Command { std: "docker" "inspect" "2ae880a9a509a54efac109b2b2ea1bf24d8c90c8a9c8d608fba33c92ebf7e8f8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2ae880a9a509a54efac109b2b2ea1bf24d8c90c8a9c8d608fba33c92ebf7e8f8", kill_on_drop: false }` [INFO] [stdout] 2ae880a9a509a54efac109b2b2ea1bf24d8c90c8a9c8d608fba33c92ebf7e8f8