[INFO] fetching crate todo-mcp 0.1.1... [INFO] linting todo-mcp-0.1.1 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate todo-mcp 0.1.1 into /workspace/builds/worker-5-tc1/source [INFO] started tweaking crates.io crate todo-mcp 0.1.1 [INFO] finished tweaking crates.io crate todo-mcp 0.1.1 [INFO] tweaked toml for crates.io crate todo-mcp 0.1.1 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate todo-mcp 0.1.1 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate todo-mcp 0.1.1 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] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded windows-result v0.1.2 [INFO] [stderr] Downloaded sledgehammer_utils v0.3.1 [INFO] [stderr] Downloaded memfd v0.6.5 [INFO] [stderr] Downloaded libxdo-sys v0.11.0 [INFO] [stderr] Downloaded psl-types v2.0.11 [INFO] [stderr] Downloaded const-serialize v0.7.2 [INFO] [stderr] Downloaded gloo-net v0.6.0 [INFO] [stderr] Downloaded hybrid-array v0.4.6 [INFO] [stderr] Downloaded cocoa v0.26.1 [INFO] [stderr] Downloaded dioxus-interpreter-js v0.7.3 [INFO] [stderr] Downloaded rmcp v0.14.0 [INFO] [stderr] Downloaded dioxus-rsx v0.7.3 [INFO] [stderr] Downloaded longest-increasing-subsequence v0.1.0 [INFO] [stderr] Downloaded const-serialize v0.8.0-alpha.0 [INFO] [stderr] Downloaded subsecond v0.7.3 [INFO] [stderr] Downloaded dioxus-html v0.7.3 [INFO] [stderr] Downloaded const_format_proc_macros v0.2.34 [INFO] [stderr] Downloaded dioxus-web v0.7.3 [INFO] [stderr] Downloaded shellexpand v3.1.1 [INFO] [stderr] Downloaded convert_case v0.8.0 [INFO] [stderr] Downloaded dioxus-devtools v0.7.3 [INFO] [stderr] Downloaded const-oid v0.10.2 [INFO] [stderr] Downloaded smol_str v0.3.5 [INFO] [stderr] Downloaded objc_id v0.1.1 [INFO] [stderr] Downloaded headers-core v0.3.0 [INFO] [stderr] Downloaded xxhash-rust v0.8.15 [INFO] [stderr] Downloaded dioxus-stores v0.7.3 [INFO] [stderr] Downloaded android-build v0.1.3 [INFO] [stderr] Downloaded dioxus-cli-config v0.7.3 [INFO] [stderr] Downloaded libxdo v0.6.0 [INFO] [stderr] Downloaded manganis v0.7.3 [INFO] [stderr] Downloaded autosurgeon-derive v0.10.1 [INFO] [stderr] Downloaded cookie_store v0.22.0 [INFO] [stderr] Downloaded async-tungstenite v0.31.0 [INFO] [stderr] Downloaded block-buffer v0.11.0 [INFO] [stderr] Downloaded dioxus-logger v0.7.3 [INFO] [stderr] Downloaded sledgehammer_bindgen v0.6.0 [INFO] [stderr] Downloaded const_format v0.2.35 [INFO] [stderr] Downloaded dioxus-config-macro v0.7.3 [INFO] [stderr] Downloaded windows-core v0.56.0 [INFO] [stderr] Downloaded time v0.3.46 [INFO] [stderr] Downloaded rfd v0.17.2 [INFO] [stderr] Downloaded subsecond-types v0.7.3 [INFO] [stderr] Downloaded windows-implement v0.56.0 [INFO] [stderr] Downloaded send_wrapper v0.6.0 [INFO] [stderr] Downloaded multer v3.1.0 [INFO] [stderr] Downloaded tungstenite v0.27.0 [INFO] [stderr] Downloaded fs2 v0.4.3 [INFO] [stderr] Downloaded dioxus-history v0.7.3 [INFO] [stderr] Downloaded const-serialize-macro v0.7.2 [INFO] [stderr] Downloaded dioxus-core v0.7.3 [INFO] [stderr] Downloaded dioxus-devtools-types v0.7.3 [INFO] [stderr] Downloaded sha2 v0.11.0-rc.4 [INFO] [stderr] Downloaded content_disposition v0.4.0 [INFO] [stderr] Downloaded cocoa-foundation v0.2.1 [INFO] [stderr] Downloaded lazy-js-bundle v0.7.3 [INFO] [stderr] Downloaded const-serialize-macro v0.8.0-alpha.0 [INFO] [stderr] Downloaded warnings-macro v0.2.0 [INFO] [stderr] Downloaded pollster v0.4.0 [INFO] [stderr] Downloaded dioxus-asset-resolver v0.7.3 [INFO] [stderr] Downloaded proc-macro2-diagnostics v0.10.1 [INFO] [stderr] Downloaded netwatcher v0.4.1 [INFO] [stderr] Downloaded automerge v0.7.3 [INFO] [stderr] Downloaded publicsuffix v2.3.0 [INFO] [stderr] Downloaded zerocopy-derive v0.8.36 [INFO] [stderr] Downloaded warnings v0.2.1 [INFO] [stderr] Downloaded dioxus-fullstack v0.7.3 [INFO] [stderr] Downloaded zerocopy v0.8.36 [INFO] [stderr] Downloaded sledgehammer_bindgen_macro v0.6.5 [INFO] [stderr] Downloaded global-hotkey v0.7.0 [INFO] [stderr] Downloaded time-macros v0.2.26 [INFO] [stderr] Downloaded macro-string v0.1.4 [INFO] [stderr] Downloaded const-str v0.7.1 [INFO] [stderr] Downloaded generational-box v0.7.3 [INFO] [stderr] Downloaded dioxus v0.7.3 [INFO] [stderr] Downloaded charset v0.1.5 [INFO] [stderr] Downloaded dioxus-document v0.7.3 [INFO] [stderr] Downloaded dioxus-stores-macro v0.7.3 [INFO] [stderr] Downloaded dioxus-config-macros v0.7.3 [INFO] [stderr] Downloaded digest v0.11.0-rc.9 [INFO] [stderr] Downloaded dioxus-fullstack-core v0.7.3 [INFO] [stderr] Downloaded windows-interface v0.56.0 [INFO] [stderr] Downloaded dioxus-signals v0.7.3 [INFO] [stderr] Downloaded dioxus-hooks v0.7.3 [INFO] [stderr] Downloaded webbrowser v1.0.6 [INFO] [stderr] Downloaded manganis-core v0.7.3 [INFO] [stderr] Downloaded crypto-common v0.2.0-rc.13 [INFO] [stderr] Downloaded dioxus-html-internal-macro v0.7.3 [INFO] [stderr] Downloaded hexane v0.1.7 [INFO] [stderr] Downloaded autosurgeon v0.10.1 [INFO] [stderr] Downloaded dioxus-core-macro v0.7.3 [INFO] [stderr] Downloaded rmcp-macros v0.14.0 [INFO] [stderr] Downloaded headers v0.4.1 [INFO] [stderr] Downloaded dioxus-desktop v0.7.3 [INFO] [stderr] Downloaded dioxus-core-types v0.7.3 [INFO] [stderr] Downloaded serde_qs v0.15.0 [INFO] [stderr] Downloaded dioxus-fullstack-macro v0.7.3 [INFO] [stderr] Downloaded manganis-macro v0.7.3 [INFO] [stderr] Downloaded windows v0.56.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] cf9426de5baa827e9592a87b393fe6f13421d3cbd435edaf5f9ffa1583e258bc [INFO] running `Command { std: "docker" "start" "-a" "cf9426de5baa827e9592a87b393fe6f13421d3cbd435edaf5f9ffa1583e258bc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "cf9426de5baa827e9592a87b393fe6f13421d3cbd435edaf5f9ffa1583e258bc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cf9426de5baa827e9592a87b393fe6f13421d3cbd435edaf5f9ffa1583e258bc", kill_on_drop: false }` [INFO] [stdout] cf9426de5baa827e9592a87b393fe6f13421d3cbd435edaf5f9ffa1583e258bc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] ec90ae876306da3b18c94fa448a939bb2a66718567ee31393fdd6c2cca9e8fda [INFO] running `Command { std: "docker" "start" "-a" "ec90ae876306da3b18c94fa448a939bb2a66718567ee31393fdd6c2cca9e8fda", kill_on_drop: false }` [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking tracing-core v0.1.36 [INFO] [stderr] Checking bitflags v2.10.0 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking simd-adler32 v0.3.8 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling slotmap v1.1.1 [INFO] [stderr] Checking object v0.37.3 [INFO] [stderr] Compiling anyhow v1.0.100 [INFO] [stderr] Checking rustc-hash v2.1.1 [INFO] [stderr] Checking dioxus-core-types v0.7.3 [INFO] [stderr] Compiling const_format_proc_macros v0.2.34 [INFO] [stderr] Checking memmap2 v0.9.9 [INFO] [stderr] Checking libloading v0.8.9 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Compiling cfg-expr v0.15.8 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking longest-increasing-subsequence v0.1.0 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Compiling field-offset v0.3.6 [INFO] [stderr] Compiling zerocopy v0.8.36 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling gtk v0.18.2 [INFO] [stderr] Compiling lazy-js-bundle v0.7.3 [INFO] [stderr] Compiling convert_case v0.8.0 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Compiling proc-macro2-diagnostics v0.10.1 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking rand_core v0.9.5 [INFO] [stderr] Checking x11 v2.21.0 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling libxdo-sys v0.11.0 [INFO] [stderr] Checking dioxus-cli-config v0.7.3 [INFO] [stderr] Checking dirs-sys v0.5.0 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking flate2 v1.1.8 [INFO] [stderr] Checking socket2 v0.6.2 [INFO] [stderr] Checking linux-raw-sys v0.11.0 [INFO] [stderr] Checking generic-array v0.14.7 [INFO] [stderr] Checking hybrid-array v0.4.6 [INFO] [stderr] Checking dpi v0.1.2 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling time-macros v0.2.26 [INFO] [stderr] Checking dirs v6.0.0 [INFO] [stderr] Compiling cookie v0.18.1 [INFO] [stderr] Checking crypto-common v0.1.7 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Compiling x11-dl v2.21.0 [INFO] [stderr] Checking const_format v0.2.35 [INFO] [stderr] Checking libloading v0.7.4 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking raw-window-handle v0.6.2 [INFO] [stderr] Checking time-core v0.1.8 [INFO] [stderr] Checking uuid v1.20.0 [INFO] [stderr] Checking num-conv v0.2.0 [INFO] [stderr] Checking crypto-common v0.2.0-rc.13 [INFO] [stderr] Checking block-buffer v0.11.0 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Compiling dioxus-interpreter-js v0.7.3 [INFO] [stderr] Checking cfb v0.7.3 [INFO] [stderr] Compiling dioxus-document v0.7.3 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking fdeflate v0.3.7 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking x11rb-protocol v0.13.2 [INFO] [stderr] Checking libxdo v0.6.0 [INFO] [stderr] Checking const-oid v0.10.2 [INFO] [stderr] Checking time v0.3.46 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Checking utf-8 v0.7.6 [INFO] [stderr] Compiling wry v0.53.5 [INFO] [stderr] Checking rustc-hash v1.1.0 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Compiling rfd v0.17.2 [INFO] [stderr] Checking nu-ansi-term v0.50.3 [INFO] [stderr] Checking digest v0.11.0-rc.9 [INFO] [stderr] Checking infer v0.19.0 [INFO] [stderr] Checking sledgehammer_utils v0.3.1 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Compiling dioxus-desktop v0.7.3 [INFO] [stderr] Checking png v0.17.16 [INFO] [stderr] Compiling zmij v1.0.17 [INFO] [stderr] Checking leb128 v0.2.5 [INFO] [stderr] Checking xkeysym v0.2.1 [INFO] [stderr] Checking raw-window-handle v0.5.2 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Checking winnow v0.7.14 [INFO] [stderr] Compiling android-build v0.1.3 [INFO] [stderr] Checking pollster v0.4.0 [INFO] [stderr] Checking tinyvec v1.10.0 [INFO] [stderr] Checking anstream v0.6.21 [INFO] [stderr] Checking backtrace v0.3.76 [INFO] [stderr] Checking sha2 v0.11.0-rc.4 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Checking castaway v0.2.4 [INFO] [stderr] Checking smol_str v0.3.5 [INFO] [stderr] Compiling netwatcher v0.4.1 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking ryu v1.0.22 [INFO] [stderr] Checking dunce v1.0.5 [INFO] [stderr] Compiling virtue v0.0.18 [INFO] [stderr] Compiling rmcp v0.14.0 [INFO] [stderr] Checking clap_lex v0.7.7 [INFO] [stderr] Checking dyn-clone v1.0.20 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking compact_str v0.8.1 [INFO] [stderr] Checking clap_builder v4.5.56 [INFO] [stderr] Checking similar v2.7.0 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Compiling dioxus-config-macro v0.7.3 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Compiling bincode_derive v2.0.1 [INFO] [stderr] Checking unty v0.0.4 [INFO] [stderr] Checking dioxus-config-macros v0.7.3 [INFO] [stderr] Checking cassowary v0.3.0 [INFO] [stderr] Checking unicode-width v0.2.0 [INFO] [stderr] Compiling pastey v0.2.1 [INFO] [stderr] Checking shellexpand v3.1.1 [INFO] [stderr] Checking fs2 v0.4.3 [INFO] [stderr] Checking unicode-truncate v1.1.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.21.3 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling serde_derive_internals v0.29.1 [INFO] [stderr] Compiling macro-string v0.1.4 [INFO] [stderr] Compiling dioxus-rsx v0.7.3 [INFO] [stderr] Checking gethostname v1.1.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling warnings-macro v0.2.0 [INFO] [stderr] Compiling const-serialize-macro v0.7.2 [INFO] [stderr] Compiling const-serialize-macro v0.8.0-alpha.0 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling const-serialize v0.7.2 [INFO] [stderr] Checking pin-project v1.1.10 [INFO] [stderr] Compiling dioxus-core-macro v0.7.3 [INFO] [stderr] Compiling dioxus-html-internal-macro v0.7.3 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Compiling dlopen2_derive v0.4.3 [INFO] [stderr] Compiling sledgehammer_bindgen_macro v0.6.5 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling schemars_derive v1.2.0 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Compiling dioxus-stores-macro v0.7.3 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking generational-box v0.7.3 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking warnings v0.2.1 [INFO] [stderr] Checking x11rb v0.13.2 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Checking dlopen2 v0.8.2 [INFO] [stderr] Checking hexane v0.1.7 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling autosurgeon-derive v0.10.1 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Checking sledgehammer_bindgen v0.6.0 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Compiling darling_macro v0.21.3 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Compiling rmcp-macros v0.14.0 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Compiling darling v0.21.3 [INFO] [stderr] Compiling enumset_derive v0.14.0 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Compiling toml_datetime v0.6.3 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling const-serialize v0.8.0-alpha.0 [INFO] [stderr] Checking bytes v1.11.0 [INFO] [stderr] Checking subsecond-types v0.7.3 [INFO] [stderr] Checking keyboard-types v0.7.0 [INFO] [stderr] Checking euclid v0.22.13 [INFO] [stderr] Checking tracing-serde v0.2.0 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Checking automerge v0.7.3 [INFO] [stderr] Checking ratatui v0.29.0 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking clap v4.5.56 [INFO] [stderr] Checking subsecond v0.7.3 [INFO] [stderr] Compiling toml_edit v0.20.2 [INFO] [stderr] Compiling toml_edit v0.19.15 [INFO] [stderr] Checking bincode v2.0.1 [INFO] [stderr] Checking manganis-core v0.7.3 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking dioxus-core v0.7.3 [INFO] [stderr] Checking enumset v1.1.10 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking webbrowser v1.0.6 [INFO] [stderr] Checking global-hotkey v0.7.0 [INFO] [stderr] Checking schemars v1.2.0 [INFO] [stderr] Compiling manganis-macro v0.7.3 [INFO] [stderr] Checking dioxus-signals v0.7.3 [INFO] [stderr] Checking dioxus-devtools-types v0.7.3 [INFO] [stderr] Checking dioxus-history v0.7.3 [INFO] [stderr] Checking tungstenite v0.27.0 [INFO] [stderr] Checking dioxus-logger v0.7.3 [INFO] [stderr] Checking tracing-error v0.2.1 [INFO] [stderr] Checking manganis v0.7.3 [INFO] [stderr] Compiling proc-macro-crate v1.3.1 [INFO] [stderr] Checking dioxus-hooks v0.7.3 [INFO] [stderr] Checking dioxus-devtools v0.7.3 [INFO] [stderr] Checking dioxus-stores v0.7.3 [INFO] [stderr] Checking dioxus-html v0.7.3 [INFO] [stderr] Compiling gtk3-macros v0.18.2 [INFO] [stderr] Compiling toml v0.8.2 [INFO] [stderr] Compiling proc-macro-crate v2.0.2 [INFO] [stderr] Compiling system-deps v6.2.2 [INFO] [stderr] Compiling glib-macros v0.18.5 [INFO] [stderr] Compiling glib-sys v0.18.1 [INFO] [stderr] Compiling gobject-sys v0.18.0 [INFO] [stderr] Compiling gio-sys v0.18.1 [INFO] [stderr] Compiling gdk-sys v0.18.2 [INFO] [stderr] Compiling gdk-pixbuf-sys v0.18.0 [INFO] [stderr] Compiling cairo-sys-rs v0.18.2 [INFO] [stderr] Compiling atk-sys v0.18.2 [INFO] [stderr] Compiling pango-sys v0.18.0 [INFO] [stderr] Compiling gtk-sys v0.18.2 [INFO] [stderr] Compiling soup3-sys v0.5.0 [INFO] [stderr] Compiling javascriptcore-rs-sys v1.1.1 [INFO] [stderr] Compiling webkit2gtk-sys v2.0.1 [INFO] [stderr] Compiling gdkx11-sys v0.18.2 [INFO] [stderr] Checking glib v0.18.5 [INFO] [stderr] Checking dioxus-asset-resolver v0.7.3 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking gdkwayland-sys v0.18.2 [INFO] [stderr] Checking autosurgeon v0.10.1 [INFO] [stderr] Checking libappindicator-sys v0.9.0 [INFO] [stderr] Checking gio v0.18.4 [INFO] [stderr] Checking cairo-rs v0.18.5 [INFO] [stderr] Checking atk v0.18.2 [INFO] [stderr] Checking javascriptcore-rs v1.1.2 [INFO] [stderr] Checking gdk-pixbuf v0.18.5 [INFO] [stderr] Checking pango v0.18.3 [INFO] [stderr] Checking soup3 v0.5.0 [INFO] [stderr] Checking gdk v0.18.2 [INFO] [stderr] Checking libappindicator v0.9.0 [INFO] [stderr] Checking muda v0.17.1 [INFO] [stderr] Checking webkit2gtk v2.0.1 [INFO] [stderr] Checking tao v0.34.5 [INFO] [stderr] Checking tray-icon v0.21.3 [INFO] [stderr] Checking dioxus v0.7.3 [INFO] [stderr] Checking todo-mcp v0.1.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: this is an `else {..}` but the formatting might hide it [INFO] [stdout] --> src/components/todo_item_row.rs:86:24 [INFO] [stdout] | [INFO] [stdout] 86 | class: if todo.read().completed { [INFO] [stdout] | ________________________^ [INFO] [stdout] 87 | | "w-full text-gray-500 line-through resize-none overflow-hidden bg-transparent" [INFO] [stdout] 88 | | } else { [INFO] [stdout] 89 | | "w-full text-gray-900 resize-none overflow-hidden bg-transparent" [INFO] [stdout] 90 | | }, [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = note: to remove this lint, remove the `else` or remove the new line between `else` and `{..}` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stdout] = note: `#[warn(clippy::suspicious_else_formatting)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is an `else {..}` but the formatting might hide it [INFO] [stdout] --> src/components/todo_item_row.rs:86:24 [INFO] [stdout] | [INFO] [stdout] 86 | class: if todo.read().completed { [INFO] [stdout] | ________________________^ [INFO] [stdout] 87 | | "w-full text-gray-500 line-through resize-none overflow-hidden bg-transparent" [INFO] [stdout] 88 | | } else { [INFO] [stdout] 89 | | "w-full text-gray-900 resize-none overflow-hidden bg-transparent" [INFO] [stdout] 90 | | }, [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = note: to remove this lint, remove the `else` or remove the new line between `else` and `{..}` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stdout] = note: `#[warn(clippy::suspicious_else_formatting)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/tui/state.rs:230:12 [INFO] [stdout] | [INFO] [stdout] 230 | if self.selected_list + 1 <= self.list_count() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `self.selected_list < self.list_count()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] = note: `#[warn(clippy::int_plus_one)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/tui/state.rs:230:12 [INFO] [stdout] | [INFO] [stdout] 230 | if self.selected_list + 1 <= self.list_count() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `self.selected_list < self.list_count()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] = note: `#[warn(clippy::int_plus_one)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/components/main_screen.rs:14:27 [INFO] [stdout] | [INFO] [stdout] 14 | let state = use_store(|| TodoState::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `TodoState::new` [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] --> src/components/main_screen.rs:14:27 [INFO] [stdout] | [INFO] [stdout] 14 | let state = use_store(|| TodoState::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `TodoState::new` [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] --> src/components/mod.rs:71:60 [INFO] [stdout] | [INFO] [stdout] 71 | pub static TODOS: GlobalStore> = Global::new(|| Vec::new()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Vec::new` [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: redundant closure [INFO] [stdout] --> src/components/mod.rs:72:64 [INFO] [stdout] | [INFO] [stdout] 72 | pub static CONNECTION_STATE: GlobalStore = Global::new(|| String::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `String::new` [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: redundant closure [INFO] [stdout] --> src/components/mod.rs:71:60 [INFO] [stdout] | [INFO] [stdout] 71 | pub static TODOS: GlobalStore> = Global::new(|| Vec::new()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Vec::new` [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: redundant closure [INFO] [stdout] --> src/components/mod.rs:72:64 [INFO] [stdout] | [INFO] [stdout] 72 | pub static CONNECTION_STATE: GlobalStore = Global::new(|| String::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `String::new` [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: you should consider adding a `Default` implementation for `TodoMcp` [INFO] [stdout] --> src/backends/mcp.rs:130:5 [INFO] [stdout] | [INFO] [stdout] 130 | / pub fn new() -> Self { [INFO] [stdout] 131 | | let todo_state = Arc::new(RwLock::new(TodoState::default())); [INFO] [stdout] 132 | | [INFO] [stdout] 133 | | let bg_state = todo_state.clone(); [INFO] [stdout] ... | [INFO] [stdout] 153 | | } [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] 129 + impl Default for TodoMcp { [INFO] [stdout] 130 + fn default() -> Self { [INFO] [stdout] 131 + Self::new() [INFO] [stdout] 132 + } [INFO] [stdout] 133 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TodoMcp` [INFO] [stdout] --> src/backends/mcp.rs:130:5 [INFO] [stdout] | [INFO] [stdout] 130 | / pub fn new() -> Self { [INFO] [stdout] 131 | | let todo_state = Arc::new(RwLock::new(TodoState::default())); [INFO] [stdout] 132 | | [INFO] [stdout] 133 | | let bg_state = todo_state.clone(); [INFO] [stdout] ... | [INFO] [stdout] 153 | | } [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] 129 + impl Default for TodoMcp { [INFO] [stdout] 130 + fn default() -> Self { [INFO] [stdout] 131 + Self::new() [INFO] [stdout] 132 + } [INFO] [stdout] 133 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backends/mcp.rs:366:17 [INFO] [stdout] | [INFO] [stdout] 366 | / l.metadata [INFO] [stdout] 367 | | .get("session_id") [INFO] [stdout] 368 | | .map_or(false, |s| s == ¶ms.session_id) [INFO] [stdout] | |_______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use a standard comparison instead [INFO] [stdout] | [INFO] [stdout] 366 ~ l.metadata [INFO] [stdout] 367 + .get("session_id") == Some(¶ms.session_id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backends/mcp.rs:366:17 [INFO] [stdout] | [INFO] [stdout] 366 | / l.metadata [INFO] [stdout] 367 | | .get("session_id") [INFO] [stdout] 368 | | .map_or(false, |s| s == ¶ms.session_id) [INFO] [stdout] | |_______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use a standard comparison instead [INFO] [stdout] | [INFO] [stdout] 366 ~ l.metadata [INFO] [stdout] 367 + .get("session_id") == Some(¶ms.session_id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backends/hook.rs:98:13 [INFO] [stdout] | [INFO] [stdout] 98 | / i.metadata [INFO] [stdout] 99 | | .get("session_id") [INFO] [stdout] 100 | | .map_or(false, |s| s == session_id) [INFO] [stdout] | |___________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 100 - .map_or(false, |s| s == session_id) [INFO] [stdout] 100 + .is_some_and(|s| s == session_id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backends/hook.rs:113:13 [INFO] [stdout] | [INFO] [stdout] 113 | / l.metadata [INFO] [stdout] 114 | | .get("session_id") [INFO] [stdout] 115 | | .map_or(false, |s| s == session_id) [INFO] [stdout] | |___________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 115 - .map_or(false, |s| s == session_id) [INFO] [stdout] 115 + .is_some_and(|s| s == session_id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backends/hook.rs:98:13 [INFO] [stdout] | [INFO] [stdout] 98 | / i.metadata [INFO] [stdout] 99 | | .get("session_id") [INFO] [stdout] 100 | | .map_or(false, |s| s == session_id) [INFO] [stdout] | |___________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 100 - .map_or(false, |s| s == session_id) [INFO] [stdout] 100 + .is_some_and(|s| s == session_id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backends/hook.rs:113:13 [INFO] [stdout] | [INFO] [stdout] 113 | / l.metadata [INFO] [stdout] 114 | | .get("session_id") [INFO] [stdout] 115 | | .map_or(false, |s| s == session_id) [INFO] [stdout] | |___________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 115 - .map_or(false, |s| s == session_id) [INFO] [stdout] 115 + .is_some_and(|s| s == session_id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backends/hook.rs:238:31 [INFO] [stdout] | [INFO] [stdout] 238 | .position(|i| i.metadata.get("task_id").map_or(false, |t| t == &task_id)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use a standard comparison instead [INFO] [stdout] | [INFO] [stdout] 238 - .position(|i| i.metadata.get("task_id").map_or(false, |t| t == &task_id)); [INFO] [stdout] 238 + .position(|i| i.metadata.get("task_id") == Some(&task_id)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/backends/hook.rs:241:13 [INFO] [stdout] | [INFO] [stdout] 241 | / if item_idx.is_none() { [INFO] [stdout] 242 | | if let Some(subject) = read_claude_todo_subject(&hook.session_id, &task_id) { [INFO] [stdout] 243 | | debug!("task_id={task_id} not in metadata, falling back to subject match: {subject}"); [INFO] [stdout] 244 | | if let Some(idx) = todo_state.lists[list_idx] [INFO] [stdout] ... | [INFO] [stdout] 256 | | } [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] 241 ~ if item_idx.is_none() [INFO] [stdout] 242 ~ && let Some(subject) = read_claude_todo_subject(&hook.session_id, &task_id) { [INFO] [stdout] 243 | debug!("task_id={task_id} not in metadata, falling back to subject match: {subject}"); [INFO] [stdout] ... [INFO] [stdout] 254 | } [INFO] [stdout] 255 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backends/hook.rs:238:31 [INFO] [stdout] | [INFO] [stdout] 238 | .position(|i| i.metadata.get("task_id").map_or(false, |t| t == &task_id)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use a standard comparison instead [INFO] [stdout] | [INFO] [stdout] 238 - .position(|i| i.metadata.get("task_id").map_or(false, |t| t == &task_id)); [INFO] [stdout] 238 + .position(|i| i.metadata.get("task_id") == Some(&task_id)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/backends/hook.rs:241:13 [INFO] [stdout] | [INFO] [stdout] 241 | / if item_idx.is_none() { [INFO] [stdout] 242 | | if let Some(subject) = read_claude_todo_subject(&hook.session_id, &task_id) { [INFO] [stdout] 243 | | debug!("task_id={task_id} not in metadata, falling back to subject match: {subject}"); [INFO] [stdout] 244 | | if let Some(idx) = todo_state.lists[list_idx] [INFO] [stdout] ... | [INFO] [stdout] 256 | | } [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] 241 ~ if item_idx.is_none() [INFO] [stdout] 242 ~ && let Some(subject) = read_claude_todo_subject(&hook.session_id, &task_id) { [INFO] [stdout] 243 | debug!("task_id={task_id} not in metadata, falling back to subject match: {subject}"); [INFO] [stdout] ... [INFO] [stdout] 254 | } [INFO] [stdout] 255 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/backends/proto.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | partials.sort_by(|(left, _), (right, _)| left.cmp(right)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 139 - partials.sort_by(|(left, _), (right, _)| left.cmp(right)); [INFO] [stdout] 139 + partials.sort_by_key(|(left, _)| *left); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/backends/proto.rs:144:18 [INFO] [stdout] | [INFO] [stdout] 144 | .map(|(_idx, buf)| buf) [INFO] [stdout] | __________________^ [INFO] [stdout] 145 | | .flatten() [INFO] [stdout] | |__________________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|(_idx, buf)| buf)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/backends/proto.rs:151:1 [INFO] [stdout] | [INFO] [stdout] 151 | / impl Default for SitePartials { [INFO] [stdout] 152 | | fn default() -> Self { [INFO] [stdout] 153 | | Self { [INFO] [stdout] 154 | | seq: 0, [INFO] [stdout] ... | [INFO] [stdout] 159 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 96 + #[derive(Default)] [INFO] [stdout] 97 | struct SitePartials { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/backends/proto.rs:225:13 [INFO] [stdout] | [INFO] [stdout] 225 | to_send = to_send - end; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `to_send -= end` [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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/input.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | / if !state.on_add_list_row() && state.list_count() > 0 { [INFO] [stdout] 42 | | let idx = state.selected_list; [INFO] [stdout] 43 | | state.remove_list(idx); [INFO] [stdout] 44 | | } [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] 40 ~ KeyCode::Char('d') [INFO] [stdout] 41 ~ if !state.on_add_list_row() && state.list_count() > 0 => { [INFO] [stdout] 42 | let idx = state.selected_list; [INFO] [stdout] 43 | state.remove_list(idx); [INFO] [stdout] 44 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/input.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | / if !state.on_add_list_row() && state.list_count() > 0 { [INFO] [stdout] 48 | | let idx = state.selected_list; [INFO] [stdout] 49 | | let title = state.todo_state.lists[idx].title.clone(); [INFO] [stdout] 50 | | state.start_edit(EditTarget::RenameList { list_index: idx }, &title); [INFO] [stdout] 51 | | } [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] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 46 ~ KeyCode::Char('r') [INFO] [stdout] 47 ~ if !state.on_add_list_row() && state.list_count() > 0 => { [INFO] [stdout] 48 | let idx = state.selected_list; [INFO] [stdout] 49 | let title = state.todo_state.lists[idx].title.clone(); [INFO] [stdout] 50 | state.start_edit(EditTarget::RenameList { list_index: idx }, &title); [INFO] [stdout] 51 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/backends/proto.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | partials.sort_by(|(left, _), (right, _)| left.cmp(right)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 139 - partials.sort_by(|(left, _), (right, _)| left.cmp(right)); [INFO] [stdout] 139 + partials.sort_by_key(|(left, _)| *left); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/backends/proto.rs:144:18 [INFO] [stdout] | [INFO] [stdout] 144 | .map(|(_idx, buf)| buf) [INFO] [stdout] | __________________^ [INFO] [stdout] 145 | | .flatten() [INFO] [stdout] | |__________________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|(_idx, buf)| buf)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/backends/proto.rs:151:1 [INFO] [stdout] | [INFO] [stdout] 151 | / impl Default for SitePartials { [INFO] [stdout] 152 | | fn default() -> Self { [INFO] [stdout] 153 | | Self { [INFO] [stdout] 154 | | seq: 0, [INFO] [stdout] ... | [INFO] [stdout] 159 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 96 + #[derive(Default)] [INFO] [stdout] 97 | struct SitePartials { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/state.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 241 | / if let Some(ui) = self.list_ui.get_mut(self.selected_list) { [INFO] [stdout] 242 | | if ui.selected_item > 0 { [INFO] [stdout] 243 | | ui.selected_item -= 1; [INFO] [stdout] 244 | | } [INFO] [stdout] 245 | | } [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] 241 ~ if let Some(ui) = self.list_ui.get_mut(self.selected_list) [INFO] [stdout] 242 ~ && ui.selected_item > 0 { [INFO] [stdout] 243 | ui.selected_item -= 1; [INFO] [stdout] 244 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/state.rs:250:9 [INFO] [stdout] | [INFO] [stdout] 250 | / if let Some(ui) = self.list_ui.get_mut(self.selected_list) { [INFO] [stdout] 251 | | if ui.selected_item + 1 < max { [INFO] [stdout] 252 | | ui.selected_item += 1; [INFO] [stdout] 253 | | } [INFO] [stdout] 254 | | } [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] 250 ~ if let Some(ui) = self.list_ui.get_mut(self.selected_list) [INFO] [stdout] 251 ~ && ui.selected_item + 1 < max { [INFO] [stdout] 252 | ui.selected_item += 1; [INFO] [stdout] 253 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/state.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | / if let Some(list) = self.todo_state.lists.get_mut(list_index) { [INFO] [stdout] 274 | | if item_index < list.items.len() { [INFO] [stdout] 275 | | list.items.remove(item_index); [INFO] [stdout] 276 | | } [INFO] [stdout] 277 | | } [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] 273 ~ if let Some(list) = self.todo_state.lists.get_mut(list_index) [INFO] [stdout] 274 ~ && item_index < list.items.len() { [INFO] [stdout] 275 | list.items.remove(item_index); [INFO] [stdout] 276 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/backends/proto.rs:225:13 [INFO] [stdout] | [INFO] [stdout] 225 | to_send = to_send - end; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `to_send -= end` [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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/input.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | / if !state.on_add_list_row() && state.list_count() > 0 { [INFO] [stdout] 42 | | let idx = state.selected_list; [INFO] [stdout] 43 | | state.remove_list(idx); [INFO] [stdout] 44 | | } [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] 40 ~ KeyCode::Char('d') [INFO] [stdout] 41 ~ if !state.on_add_list_row() && state.list_count() > 0 => { [INFO] [stdout] 42 | let idx = state.selected_list; [INFO] [stdout] 43 | state.remove_list(idx); [INFO] [stdout] 44 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/input.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | / if !state.on_add_list_row() && state.list_count() > 0 { [INFO] [stdout] 48 | | let idx = state.selected_list; [INFO] [stdout] 49 | | let title = state.todo_state.lists[idx].title.clone(); [INFO] [stdout] 50 | | state.start_edit(EditTarget::RenameList { list_index: idx }, &title); [INFO] [stdout] 51 | | } [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] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 46 ~ KeyCode::Char('r') [INFO] [stdout] 47 ~ if !state.on_add_list_row() && state.list_count() > 0 => { [INFO] [stdout] 48 | let idx = state.selected_list; [INFO] [stdout] 49 | let title = state.todo_state.lists[idx].title.clone(); [INFO] [stdout] 50 | state.start_edit(EditTarget::RenameList { list_index: idx }, &title); [INFO] [stdout] 51 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/state.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 241 | / if let Some(ui) = self.list_ui.get_mut(self.selected_list) { [INFO] [stdout] 242 | | if ui.selected_item > 0 { [INFO] [stdout] 243 | | ui.selected_item -= 1; [INFO] [stdout] 244 | | } [INFO] [stdout] 245 | | } [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] 241 ~ if let Some(ui) = self.list_ui.get_mut(self.selected_list) [INFO] [stdout] 242 ~ && ui.selected_item > 0 { [INFO] [stdout] 243 | ui.selected_item -= 1; [INFO] [stdout] 244 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/state.rs:250:9 [INFO] [stdout] | [INFO] [stdout] 250 | / if let Some(ui) = self.list_ui.get_mut(self.selected_list) { [INFO] [stdout] 251 | | if ui.selected_item + 1 < max { [INFO] [stdout] 252 | | ui.selected_item += 1; [INFO] [stdout] 253 | | } [INFO] [stdout] 254 | | } [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] 250 ~ if let Some(ui) = self.list_ui.get_mut(self.selected_list) [INFO] [stdout] 251 ~ && ui.selected_item + 1 < max { [INFO] [stdout] 252 | ui.selected_item += 1; [INFO] [stdout] 253 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/state.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | / if let Some(list) = self.todo_state.lists.get_mut(list_index) { [INFO] [stdout] 274 | | if item_index < list.items.len() { [INFO] [stdout] 275 | | list.items.remove(item_index); [INFO] [stdout] 276 | | } [INFO] [stdout] 277 | | } [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] 273 ~ if let Some(list) = self.todo_state.lists.get_mut(list_index) [INFO] [stdout] 274 ~ && item_index < list.items.len() { [INFO] [stdout] 275 | list.items.remove(item_index); [INFO] [stdout] 276 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 02s [INFO] running `Command { std: "docker" "inspect" "ec90ae876306da3b18c94fa448a939bb2a66718567ee31393fdd6c2cca9e8fda", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ec90ae876306da3b18c94fa448a939bb2a66718567ee31393fdd6c2cca9e8fda", kill_on_drop: false }` [INFO] [stdout] ec90ae876306da3b18c94fa448a939bb2a66718567ee31393fdd6c2cca9e8fda