[INFO] cloning repository https://github.com/valaises/rust-chat [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/valaises/rust-chat" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvalaises%2Frust-chat", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvalaises%2Frust-chat'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] aa67bb1837527640d76dafce52fc7aa67f471dd6 [INFO] linting valaises/rust-chat against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvalaises%2Frust-chat" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/valaises/rust-chat [INFO] finished tweaking git repo https://github.com/valaises/rust-chat [INFO] tweaked toml for git repo https://github.com/valaises/rust-chat written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/valaises/rust-chat 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/valaises/rust-chat 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 avif-serialize v0.8.3 [INFO] [stderr] Downloaded manganis v0.6.2 [INFO] [stderr] Downloaded server_fn_macro v0.6.15 [INFO] [stderr] Downloaded windows-version v0.1.4 [INFO] [stderr] Downloaded dioxus-config-macro v0.6.2 [INFO] [stderr] Downloaded const-serialize-macro v0.6.2 [INFO] [stderr] Downloaded dioxus-isrg v0.6.2 [INFO] [stderr] Downloaded terminal_size v0.4.2 [INFO] [stderr] Downloaded server_fn_macro_default v0.6.15 [INFO] [stderr] Downloaded zvariant_derive v4.0.0 [INFO] [stderr] Downloaded dioxus_server_macro v0.6.2 [INFO] [stderr] Downloaded dioxus-liveview v0.6.2 [INFO] [stderr] Downloaded infer v0.11.0 [INFO] [stderr] Downloaded clap v4.5.37 [INFO] [stderr] Downloaded bon v3.6.3 [INFO] [stderr] Downloaded zvariant v4.0.0 [INFO] [stderr] Downloaded bon-macros v3.6.3 [INFO] [stderr] Downloaded plist v1.7.1 [INFO] [stderr] Downloaded dioxus-core v0.6.3 [INFO] [stderr] Downloaded clap_builder v4.5.37 [INFO] [stderr] Downloaded comrak v0.39.0 [INFO] [stderr] Downloaded zbus v4.0.1 [INFO] [stderr] Downloaded wry v0.45.0 [INFO] [stderr] Downloaded h2 v0.4.9 [INFO] [stderr] Downloaded openssl v0.10.72 [INFO] [stderr] Downloaded nix v0.27.1 [INFO] [stderr] Downloaded muda v0.11.5 [INFO] [stderr] Downloaded objc2 v0.6.1 [INFO] [stderr] Downloaded rustls v0.23.26 [INFO] [stderr] Downloaded muda v0.15.3 [INFO] [stderr] Downloaded dioxus-desktop v0.6.3 [INFO] [stderr] Downloaded tray-icon v0.19.3 [INFO] [stderr] Downloaded libfuzzer-sys v0.4.9 [INFO] [stderr] Downloaded ashpd v0.8.1 [INFO] [stderr] Downloaded objc2-core-graphics v0.3.1 [INFO] [stderr] Downloaded serde_qs v0.12.0 [INFO] [stderr] Downloaded tungstenite v0.24.0 [INFO] [stderr] Downloaded global-hotkey v0.5.5 [INFO] [stderr] Downloaded async-io v2.4.0 [INFO] [stderr] Downloaded tungstenite v0.23.0 [INFO] [stderr] Downloaded dioxus-html v0.6.3 [INFO] [stderr] Downloaded openssl-sys v0.9.107 [INFO] [stderr] Downloaded dioxus-fullstack v0.6.3 [INFO] [stderr] Downloaded async-signal v0.2.10 [INFO] [stderr] Downloaded rfd v0.14.1 [INFO] [stderr] Downloaded dioxus-rsx v0.6.2 [INFO] [stderr] Downloaded enumset v1.1.5 [INFO] [stderr] Downloaded dioxus v0.6.3 [INFO] [stderr] Downloaded async-process v2.3.0 [INFO] [stderr] Downloaded enumflags2 v0.7.11 [INFO] [stderr] Downloaded zbus_macros v4.0.1 [INFO] [stderr] Downloaded dioxus-router-macro v0.6.3 [INFO] [stderr] Downloaded dioxus-router v0.6.3 [INFO] [stderr] Downloaded dioxus-document v0.6.3 [INFO] [stderr] Downloaded dioxus-core-macro v0.6.3 [INFO] [stderr] Downloaded tokio v1.44.2 [INFO] [stderr] Downloaded dioxus-hooks v0.6.2 [INFO] [stderr] Downloaded dioxus-interpreter-js v0.6.2 [INFO] [stderr] Downloaded dioxus-signals v0.6.3 [INFO] [stderr] Downloaded dioxus-web v0.6.3 [INFO] [stderr] Downloaded server_fn v0.6.15 [INFO] [stderr] Downloaded tokio-tungstenite v0.24.0 [INFO] [stderr] Downloaded enumflags2_derive v0.7.11 [INFO] [stderr] Downloaded redox_users v0.5.0 [INFO] [stderr] Downloaded manganis-core v0.6.2 [INFO] [stderr] Downloaded dioxus-lib v0.6.2 [INFO] [stderr] Downloaded dioxus-logger v0.6.2 [INFO] [stderr] Downloaded xdg-home v1.3.0 [INFO] [stderr] Downloaded dioxus-ssr v0.6.2 [INFO] [stderr] Downloaded const-serialize v0.6.2 [INFO] [stderr] Downloaded manganis-macro v0.6.2 [INFO] [stderr] Downloaded zvariant_utils v1.1.0 [INFO] [stderr] Downloaded dioxus-mobile v0.6.2 [INFO] [stderr] Downloaded dioxus-devtools-types v0.6.2 [INFO] [stderr] Downloaded dioxus-history v0.6.2 [INFO] [stderr] Downloaded dioxus-html-internal-macro v0.6.2 [INFO] [stderr] Downloaded enumset_derive v0.10.0 [INFO] [stderr] Downloaded generational-box v0.6.2 [INFO] [stderr] Downloaded lazy-js-bundle v0.6.2 [INFO] [stderr] Downloaded dioxus-cli-config v0.6.3 [INFO] [stderr] Downloaded dioxus-core-types v0.6.2 [INFO] [stderr] Downloaded dioxus-devtools v0.6.2 [INFO] [stderr] Downloaded image-webp v0.2.1 [INFO] [stderr] Downloaded ravif v0.11.12 [INFO] [stderr] Downloaded tao v0.30.8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] ae83339620194fe852383a2b13720c1fc095a105b02112696452748b12155022 [INFO] running `Command { std: "docker" "start" "-a" "ae83339620194fe852383a2b13720c1fc095a105b02112696452748b12155022", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ae83339620194fe852383a2b13720c1fc095a105b02112696452748b12155022", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ae83339620194fe852383a2b13720c1fc095a105b02112696452748b12155022", kill_on_drop: false }` [INFO] [stdout] ae83339620194fe852383a2b13720c1fc095a105b02112696452748b12155022 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 56a4a1b3d8585b1c73a4e491dddecdf77a0e6ed95622b59363666d9443c664ec [INFO] running `Command { std: "docker" "start" "-a" "56a4a1b3d8585b1c73a4e491dddecdf77a0e6ed95622b59363666d9443c664ec", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling rustversion v1.0.20 [INFO] [stderr] Checking smallvec v1.15.0 [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.100 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Compiling bumpalo v3.17.0 [INFO] [stderr] Compiling log v0.4.27 [INFO] [stderr] Compiling wasm-bindgen v0.2.100 [INFO] [stderr] Checking bitflags v2.9.0 [INFO] [stderr] Compiling cc v1.2.21 [INFO] [stderr] Checking dioxus-core-types v0.6.2 [INFO] [stderr] Compiling slotmap v1.0.7 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Compiling convert_case v0.6.0 [INFO] [stderr] Checking litemap v0.7.5 [INFO] [stderr] Compiling lazy-js-bundle v0.6.2 [INFO] [stderr] Compiling icu_locid_transform_data v1.5.1 [INFO] [stderr] Compiling proc-macro2-diagnostics v0.10.1 [INFO] [stderr] Compiling icu_properties_data v1.5.1 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Compiling icu_normalizer_data v1.5.1 [INFO] [stderr] Compiling zerocopy v0.8.25 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking socket2 v0.5.9 [INFO] [stderr] Checking unicode-ident v1.0.18 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking miniz_oxide v0.8.8 [INFO] [stderr] Compiling dioxus-document v0.6.3 [INFO] [stderr] Checking keyboard-types v0.7.0 [INFO] [stderr] Checking euclid v0.22.11 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking half v2.6.0 [INFO] [stderr] Checking rayon-core v1.12.1 [INFO] [stderr] Compiling xxhash-rust v0.8.15 [INFO] [stderr] Checking hashbrown v0.15.3 [INFO] [stderr] Compiling openssl v0.10.72 [INFO] [stderr] Compiling rustix v1.0.7 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking tokio v1.44.2 [INFO] [stderr] Compiling dioxus-interpreter-js v0.6.2 [INFO] [stderr] Checking ciborium-io v0.2.2 [INFO] [stderr] Checking flate2 v1.1.1 [INFO] [stderr] Checking aligned-vec v0.5.0 [INFO] [stderr] Checking linux-raw-sys v0.9.4 [INFO] [stderr] Compiling prettyplease v0.2.32 [INFO] [stderr] Compiling built v0.7.7 [INFO] [stderr] Checking v_frame v0.3.8 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking ciborium-ll v0.2.2 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Compiling dioxus-web v0.6.3 [INFO] [stderr] Checking sledgehammer_utils v0.3.1 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Checking generic-array v0.14.7 [INFO] [stderr] Compiling rav1e v0.7.1 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking syn v2.0.101 [INFO] [stderr] Checking tinyvec v1.9.0 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Checking thread_local v1.1.8 [INFO] [stderr] Compiling const_format_proc_macros v0.2.34 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Compiling dioxus-config-macro v0.6.2 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking terminal_size v0.4.2 [INFO] [stderr] Checking send_wrapper v0.6.0 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking imgref v1.11.0 [INFO] [stderr] Checking weezl v0.1.8 [INFO] [stderr] Checking bitstream-io v2.6.0 [INFO] [stderr] Checking quick-error v2.0.1 [INFO] [stderr] Compiling noop_proc_macro v0.3.0 [INFO] [stderr] Checking clap_builder v4.5.37 [INFO] [stderr] Checking loop9 v0.1.5 [INFO] [stderr] Checking unicode-normalization v0.1.24 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking avif-serialize v0.8.3 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking const_format v0.2.34 [INFO] [stderr] Checking zune-inflate v0.2.54 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking bytemuck v1.23.0 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking lebe v0.5.2 [INFO] [stderr] Checking urlencoding v2.1.3 [INFO] [stderr] Compiling openssl-sys v0.9.107 [INFO] [stderr] Compiling onig_sys v69.8.1 [INFO] [stderr] Checking bit_field v0.10.2 [INFO] [stderr] Checking jpeg-decoder v0.3.1 [INFO] [stderr] Checking deunicode v1.6.2 [INFO] [stderr] Checking rustls-pki-types v1.11.0 [INFO] [stderr] Checking rgb v0.8.50 [INFO] [stderr] Checking exr v1.73.0 [INFO] [stderr] Checking slug v0.1.6 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking image-webp v0.2.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking av1-grain v0.2.3 [INFO] [stderr] Checking rustls-pemfile v2.2.0 [INFO] [stderr] Checking gif v0.13.1 [INFO] [stderr] Checking qoi v0.4.1 [INFO] [stderr] Checking caseless v0.2.2 [INFO] [stderr] Checking tiff v0.9.1 [INFO] [stderr] Checking png v0.17.16 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking shell-words v1.1.0 [INFO] [stderr] Checking typed-arena v2.0.2 [INFO] [stderr] Checking xdg v2.5.2 [INFO] [stderr] Checking unicode_categories v0.1.1 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking maybe-rayon v0.1.1 [INFO] [stderr] Checking entities v1.0.1 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking dioxus-rsx v0.6.2 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Compiling wasm-bindgen-backend v0.2.100 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling server_fn_macro v0.6.15 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tracing-attributes v0.1.28 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling yoke-derive v0.7.5 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling warnings-macro v0.2.0 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling dioxus-html-internal-macro v0.6.2 [INFO] [stderr] Compiling async-trait v0.1.88 [INFO] [stderr] Compiling const-serialize-macro v0.6.2 [INFO] [stderr] Compiling sledgehammer_bindgen_macro v0.6.1 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tungstenite v0.23.0 [INFO] [stderr] Compiling profiling-procmacros v1.0.16 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.100 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling server_fn_macro_default v0.6.15 [INFO] [stderr] Checking profiling v1.0.16 [INFO] [stderr] Compiling arg_enum_proc_macro v0.3.4 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Checking onig v6.4.0 [INFO] [stderr] Compiling dioxus-core-macro v0.6.3 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Compiling clap_derive v4.5.32 [INFO] [stderr] Checking yoke v0.7.5 [INFO] [stderr] Checking pin-project v1.1.10 [INFO] [stderr] Compiling dioxus-router-macro v0.6.3 [INFO] [stderr] Compiling dioxus_server_macro v0.6.2 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Checking zerovec v0.10.4 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking warnings v0.2.1 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Checking generational-box v0.6.2 [INFO] [stderr] Checking h2 v0.4.9 [INFO] [stderr] Checking async-stream v0.3.6 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.100 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling enumset_derive v0.10.0 [INFO] [stderr] Compiling bon-macros v3.6.3 [INFO] [stderr] Checking enumset v1.1.5 [INFO] [stderr] Checking js-sys v0.3.77 [INFO] [stderr] Checking dioxus-cli-config v0.6.3 [INFO] [stderr] Checking sledgehammer_bindgen v0.6.0 [INFO] [stderr] Checking dioxus-logger v0.6.2 [INFO] [stderr] Checking tinystr v0.7.6 [INFO] [stderr] Checking icu_collections v1.5.0 [INFO] [stderr] Checking icu_locid v1.5.0 [INFO] [stderr] Checking clap v4.5.37 [INFO] [stderr] Checking icu_provider v1.5.0 [INFO] [stderr] Checking icu_locid_transform v1.5.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking hyper v1.6.0 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking bon v3.6.3 [INFO] [stderr] Checking icu_properties v1.5.1 [INFO] [stderr] Checking hyper-util v0.1.11 [INFO] [stderr] Checking web-sys v0.3.77 [INFO] [stderr] Checking wasm-bindgen-futures v0.4.50 [INFO] [stderr] Checking gloo-timers v0.3.0 [INFO] [stderr] Checking serde-wasm-bindgen v0.5.0 [INFO] [stderr] Checking const-serialize v0.6.2 [INFO] [stderr] Checking serde_qs v0.12.0 [INFO] [stderr] Checking ciborium v0.2.2 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking manganis-core v0.6.2 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking dioxus-core v0.6.3 [INFO] [stderr] Checking syntect v5.2.0 [INFO] [stderr] Compiling manganis-macro v0.6.2 [INFO] [stderr] Checking ravif v0.11.12 [INFO] [stderr] Checking image v0.25.6 [INFO] [stderr] Checking manganis v0.6.2 [INFO] [stderr] Checking icu_normalizer v1.5.0 [INFO] [stderr] Checking comrak v0.39.0 [INFO] [stderr] Checking idna_adapter v1.2.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking dioxus-signals v0.6.3 [INFO] [stderr] Checking dioxus-history v0.6.2 [INFO] [stderr] Checking dioxus-devtools-types v0.6.2 [INFO] [stderr] Checking reqwest v0.12.15 [INFO] [stderr] Checking dioxus-hooks v0.6.2 [INFO] [stderr] Checking dioxus-devtools v0.6.2 [INFO] [stderr] Checking dioxus-html v0.6.3 [INFO] [stderr] Checking dioxus-lib v0.6.2 [INFO] [stderr] Checking dioxus-router v0.6.3 [INFO] [stderr] Checking gloo-utils v0.2.0 [INFO] [stderr] Checking wasm-streams v0.4.2 [INFO] [stderr] Checking gloo-net v0.6.0 [INFO] [stderr] Checking server_fn v0.6.15 [INFO] [stderr] Checking dioxus-fullstack v0.6.3 [INFO] [stderr] Checking dioxus v0.6.3 [INFO] [stderr] Checking core v0.1.0 (/opt/rustwide/workdir/crates/core) [INFO] [stdout] warning: unused imports: `API_KEY` and `BACKEND_URL` [INFO] [stdout] --> crates/core/src/models.rs:5:22 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::globals::{BACKEND_URL, API_KEY}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CompletionModelResponse` [INFO] [stdout] --> crates/core/src/models.rs:6:57 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::shared_state::{CompletionModel, SharedState, CompletionModelResponse}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StreamExt` and `Stream` [INFO] [stdout] --> crates/core/src/chat_completions/comp_post.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use futures::{Stream, StreamExt}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_stream::stream` [INFO] [stdout] --> crates/core/src/chat_completions/comp_post.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use async_stream::stream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::chat_completions::comp_stream_utils::ChunkStream` [INFO] [stdout] --> crates/core/src/chat_completions/comp_post.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::chat_completions::comp_stream_utils::ChunkStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `API_KEY` and `BACKEND_URL` [INFO] [stdout] --> crates/core/src/models.rs:5:22 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::globals::{BACKEND_URL, API_KEY}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CompletionModelResponse` [INFO] [stdout] --> crates/core/src/models.rs:6:57 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::shared_state::{CompletionModel, SharedState, CompletionModelResponse}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StreamExt` and `Stream` [INFO] [stdout] --> crates/core/src/chat_completions/comp_post.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use futures::{Stream, StreamExt}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_stream::stream` [INFO] [stdout] --> crates/core/src/chat_completions/comp_post.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use async_stream::stream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::chat_completions::comp_stream_utils::ChunkStream` [INFO] [stdout] --> crates/core/src/chat_completions/comp_post.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::chat_completions::comp_stream_utils::ChunkStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl OContentArrayItemText { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 17 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn from_internal(item: ContentArrayItem) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl OContentArrayItemImage { [INFO] [stdout] | --------------------------- associated items in this implementation [INFO] [stdout] 48 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn from_internal(item: ContentArrayItem) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 73 | impl OContentArrayItem { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 74 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn from_internal(item: ContentArrayItem) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:100:12 [INFO] [stdout] | [INFO] [stdout] 99 | impl OMessageContent { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 100 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn from_internal(item: MessageContent) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:142:12 [INFO] [stdout] | [INFO] [stdout] 132 | impl OMessage { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn from_internal(item: Message) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ContentArrayItem` is never constructed [INFO] [stdout] --> crates/core/src/messages.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct ContentArrayItem { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> crates/core/src/messages.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl ContentArrayItem { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] 13 | pub fn new(m_type: String, m_content: String) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MessageContent` is never used [INFO] [stdout] --> crates/core/src/messages.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | pub enum MessageContent { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Message` is never constructed [INFO] [stdout] --> crates/core/src/messages.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Message { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AnyMessage` is never used [INFO] [stdout] --> crates/core/src/messages.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | pub enum AnyMessage { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `messages2openai` is never used [INFO] [stdout] --> crates/core/src/messages.rs:71:8 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn messages2openai(msgs: Vec) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `any_messages2internal` is never used [INFO] [stdout] --> crates/core/src/messages.rs:75:8 [INFO] [stdout] | [INFO] [stdout] 75 | pub fn any_messages2internal(msgs: Vec) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_image_b64_from_image_url_openai` is never used [INFO] [stdout] --> crates/core/src/image_utils.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn parse_image_b64_from_image_url_openai(image_url: &str) -> Option<(String, String, String)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `image_reader_from_b64string` is never used [INFO] [stdout] --> crates/core/src/image_utils.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn image_reader_from_b64string(image_b64: &str) -> Result>>, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChunkStream` is never constructed [INFO] [stdout] --> crates/core/src/chat_completions/comp_stream_utils.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct ChunkStream [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> crates/core/src/chat_completions/comp_stream_utils.rs:17:19 [INFO] [stdout] | [INFO] [stdout] 13 | / impl ChunkStream [INFO] [stdout] 14 | | where [INFO] [stdout] 15 | | S: Stream> + Send + Sync + 'static, [INFO] [stdout] | |____________________________________________________________________________- associated function in this implementation [INFO] [stdout] 16 | { [INFO] [stdout] 17 | pub(crate) fn new(stream: S) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_completion_not_stream` is never used [INFO] [stdout] --> crates/core/src/chat_completions/comp_post.rs:44:14 [INFO] [stdout] | [INFO] [stdout] 44 | pub async fn get_completion_not_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> crates/core/src/shared_state.rs:38:1 [INFO] [stdout] | [INFO] [stdout] 38 | / impl Default for CompletionModelState { [INFO] [stdout] 39 | | fn default() -> Self { [INFO] [stdout] 40 | | Self { [INFO] [stdout] 41 | | is_loading: false, [INFO] [stdout] ... | [INFO] [stdout] 46 | | } [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] 32 + #[derive(Default)] [INFO] [stdout] 33 | pub struct CompletionModelState { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> crates/core/src/components/ModelSelector.rs:41:43 [INFO] [stdout] | [INFO] [stdout] 41 | let is_selected = active_model.as_ref().map_or(false, |m| m.id == model.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 `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 41 - let is_selected = active_model.as_ref().map_or(false, |m| m.id == model.id); [INFO] [stdout] 41 + let is_selected = active_model.as_ref().is_some_and(|m| m.id == model.id); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl OContentArrayItemText { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 17 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn from_internal(item: ContentArrayItem) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl OContentArrayItemImage { [INFO] [stdout] | --------------------------- associated items in this implementation [INFO] [stdout] 48 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn from_internal(item: ContentArrayItem) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 73 | impl OContentArrayItem { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 74 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn from_internal(item: ContentArrayItem) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:100:12 [INFO] [stdout] | [INFO] [stdout] 99 | impl OMessageContent { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 100 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn from_internal(item: MessageContent) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_internal` and `from_internal` are never used [INFO] [stdout] --> crates/core/src/openai.rs:142:12 [INFO] [stdout] | [INFO] [stdout] 132 | impl OMessage { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn to_internal(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn from_internal(item: Message) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ContentArrayItem` is never constructed [INFO] [stdout] --> crates/core/src/messages.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct ContentArrayItem { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> crates/core/src/messages.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl ContentArrayItem { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] 13 | pub fn new(m_type: String, m_content: String) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MessageContent` is never used [INFO] [stdout] --> crates/core/src/messages.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | pub enum MessageContent { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Message` is never constructed [INFO] [stdout] --> crates/core/src/messages.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Message { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AnyMessage` is never used [INFO] [stdout] --> crates/core/src/messages.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | pub enum AnyMessage { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `messages2openai` is never used [INFO] [stdout] --> crates/core/src/messages.rs:71:8 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn messages2openai(msgs: Vec) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `any_messages2internal` is never used [INFO] [stdout] --> crates/core/src/messages.rs:75:8 [INFO] [stdout] | [INFO] [stdout] 75 | pub fn any_messages2internal(msgs: Vec) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_image_b64_from_image_url_openai` is never used [INFO] [stdout] --> crates/core/src/image_utils.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn parse_image_b64_from_image_url_openai(image_url: &str) -> Option<(String, String, String)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `image_reader_from_b64string` is never used [INFO] [stdout] --> crates/core/src/image_utils.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn image_reader_from_b64string(image_b64: &str) -> Result>>, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChunkStream` is never constructed [INFO] [stdout] --> crates/core/src/chat_completions/comp_stream_utils.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct ChunkStream [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> crates/core/src/chat_completions/comp_stream_utils.rs:17:19 [INFO] [stdout] | [INFO] [stdout] 13 | / impl ChunkStream [INFO] [stdout] 14 | | where [INFO] [stdout] 15 | | S: Stream> + Send + Sync + 'static, [INFO] [stdout] | |____________________________________________________________________________- associated function in this implementation [INFO] [stdout] 16 | { [INFO] [stdout] 17 | pub(crate) fn new(stream: S) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_completion_not_stream` is never used [INFO] [stdout] --> crates/core/src/chat_completions/comp_post.rs:44:14 [INFO] [stdout] | [INFO] [stdout] 44 | pub async fn get_completion_not_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/SendButton.rs:21:32 [INFO] [stdout] | [INFO] [stdout] 21 | let mut chat_input_value = props.chat_input_value.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `props.chat_input_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> crates/core/src/shared_state.rs:38:1 [INFO] [stdout] | [INFO] [stdout] 38 | / impl Default for CompletionModelState { [INFO] [stdout] 39 | | fn default() -> Self { [INFO] [stdout] 40 | | Self { [INFO] [stdout] 41 | | is_loading: false, [INFO] [stdout] ... | [INFO] [stdout] 46 | | } [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] 32 + #[derive(Default)] [INFO] [stdout] 33 | pub struct CompletionModelState { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/InputBox.rs:37:43 [INFO] [stdout] | [INFO] [stdout] 37 | chat_input_value: chat_input_value.clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `chat_input_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:10:34 [INFO] [stdout] | [INFO] [stdout] 10 | let mut empty_space_height = sh.empty_space_height.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sh.empty_space_height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | / if let Some(recent_messages_el) = recent_messages.cloned() { [INFO] [stdout] 23 | | if let Some(window) = web_sys::window() { [INFO] [stdout] 24 | | let viewport_height = match window.inner_height() { [INFO] [stdout] 25 | | Ok(height) => height.as_f64().unwrap_or(0.0), [INFO] [stdout] ... | [INFO] [stdout] 38 | | } [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] 22 ~ if let Some(recent_messages_el) = recent_messages.cloned() [INFO] [stdout] 23 ~ && let Some(window) = web_sys::window() { [INFO] [stdout] 24 | let viewport_height = match window.inner_height() { [INFO] [stdout] ... [INFO] [stdout] 36 | } [INFO] [stdout] 37 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:32:21 [INFO] [stdout] | [INFO] [stdout] 32 | / if needed_space > 0.0 { [INFO] [stdout] 33 | | if empty_space_height.read().clone() != needed_space as usize { [INFO] [stdout] 34 | | empty_space_height.set(needed_space as usize); [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | } [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] 32 ~ if needed_space > 0.0 [INFO] [stdout] 33 ~ && empty_space_height.read().clone() != needed_space as usize { [INFO] [stdout] 34 | empty_space_height.set(needed_space as usize); [INFO] [stdout] 35 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:33:28 [INFO] [stdout] | [INFO] [stdout] 33 | if empty_space_height.read().clone() != needed_space as usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*empty_space_height.read()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:46:17 [INFO] [stdout] | [INFO] [stdout] 46 | if !sh.scrolled_to_bottom_element.read().clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*sh.scrolled_to_bottom_element.read()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:73:57 [INFO] [stdout] | [INFO] [stdout] 73 | ... empty_space_height: empty_space_height.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `empty_space_height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:92:57 [INFO] [stdout] | [INFO] [stdout] 92 | ... empty_space_height: empty_space_height.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `empty_space_height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> crates/core/src/components/ModelSelector.rs:41:43 [INFO] [stdout] | [INFO] [stdout] 41 | let is_selected = active_model.as_ref().map_or(false, |m| m.id == model.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 `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 41 - let is_selected = active_model.as_ref().map_or(false, |m| m.id == model.id); [INFO] [stdout] 41 + let is_selected = active_model.as_ref().is_some_and(|m| m.id == model.id); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/SideBar.rs:28:29 [INFO] [stdout] | [INFO] [stdout] 28 | let mut sidebar_state = sh.side_bar_state.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sh.side_bar_state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/SendButton.rs:21:32 [INFO] [stdout] | [INFO] [stdout] 21 | let mut chat_input_value = props.chat_input_value.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `props.chat_input_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> crates/core/src/messages.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | if !(m_type == "text") && !m_type.starts_with("image/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `(m_type != "text")` [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: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/InputBox.rs:37:43 [INFO] [stdout] | [INFO] [stdout] 37 | chat_input_value: chat_input_value.clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `chat_input_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:10:34 [INFO] [stdout] | [INFO] [stdout] 10 | let mut empty_space_height = sh.empty_space_height.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sh.empty_space_height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | / if let Some(recent_messages_el) = recent_messages.cloned() { [INFO] [stdout] 23 | | if let Some(window) = web_sys::window() { [INFO] [stdout] 24 | | let viewport_height = match window.inner_height() { [INFO] [stdout] 25 | | Ok(height) => height.as_f64().unwrap_or(0.0), [INFO] [stdout] ... | [INFO] [stdout] 38 | | } [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] 22 ~ if let Some(recent_messages_el) = recent_messages.cloned() [INFO] [stdout] 23 ~ && let Some(window) = web_sys::window() { [INFO] [stdout] 24 | let viewport_height = match window.inner_height() { [INFO] [stdout] ... [INFO] [stdout] 36 | } [INFO] [stdout] 37 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:32:21 [INFO] [stdout] | [INFO] [stdout] 32 | / if needed_space > 0.0 { [INFO] [stdout] 33 | | if empty_space_height.read().clone() != needed_space as usize { [INFO] [stdout] 34 | | empty_space_height.set(needed_space as usize); [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | } [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] 32 ~ if needed_space > 0.0 [INFO] [stdout] 33 ~ && empty_space_height.read().clone() != needed_space as usize { [INFO] [stdout] 34 | empty_space_height.set(needed_space as usize); [INFO] [stdout] 35 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:33:28 [INFO] [stdout] | [INFO] [stdout] 33 | if empty_space_height.read().clone() != needed_space as usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*empty_space_height.read()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:46:17 [INFO] [stdout] | [INFO] [stdout] 46 | if !sh.scrolled_to_bottom_element.read().clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*sh.scrolled_to_bottom_element.read()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:73:57 [INFO] [stdout] | [INFO] [stdout] 73 | ... empty_space_height: empty_space_height.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `empty_space_height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/ChatBody.rs:92:57 [INFO] [stdout] | [INFO] [stdout] 92 | ... empty_space_height: empty_space_height.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `empty_space_height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> crates/core/src/messages.rs:60:35 [INFO] [stdout] | [INFO] [stdout] 60 | pub fn is_empty_string(something: &String) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 60 - pub fn is_empty_string(something: &String) -> bool { [INFO] [stdout] 60 + pub fn is_empty_string(something: &str) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> crates/core/src/messages.rs:72:26 [INFO] [stdout] | [INFO] [stdout] 72 | msgs.into_iter().map(|m| OMessage::from_internal(m)).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `OMessage::from_internal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signal` which implements the `Copy` trait [INFO] [stdout] --> crates/core/src/components/SideBar.rs:28:29 [INFO] [stdout] | [INFO] [stdout] 28 | let mut sidebar_state = sh.side_bar_state.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sh.side_bar_state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `ok` [INFO] [stdout] --> crates/core/src/chat_completions/comp_stream.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | / match result { [INFO] [stdout] 170 | | Ok(chunk) => Some(chunk), [INFO] [stdout] 171 | | Err(_) => None // Filter out our "No chunks yet" placeholder errors [INFO] [stdout] 172 | | } [INFO] [stdout] | |_____________^ help: replace with: `result.ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_ok_err [INFO] [stdout] = note: `#[warn(clippy::manual_ok_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:8:44 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn extract_content_from_chunks(chunks: &Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 8 - pub fn extract_content_from_chunks(chunks: &Vec) -> String { [INFO] [stdout] 8 + pub fn extract_content_from_chunks(chunks: &[CollectedChunk]) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> crates/core/src/messages.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | if !(m_type == "text") && !m_type.starts_with("image/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `(m_type != "text")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:70:17 [INFO] [stdout] | [INFO] [stdout] 70 | / if let Some(content) = delta.content { [INFO] [stdout] 71 | | if !content.is_empty() { [INFO] [stdout] 72 | | yield CollectedChunk::ContentDelta { [INFO] [stdout] 73 | | content, [INFO] [stdout] ... | [INFO] [stdout] 76 | | } [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] 70 ~ if let Some(content) = delta.content [INFO] [stdout] 71 ~ && !content.is_empty() { [INFO] [stdout] 72 | yield CollectedChunk::ContentDelta { [INFO] [stdout] 73 | content, [INFO] [stdout] 74 | }; [INFO] [stdout] 75 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:79:17 [INFO] [stdout] | [INFO] [stdout] 79 | / if let Some(tool_calls_value) = delta.tool_calls { [INFO] [stdout] 80 | | if let Ok(tool_calls) = serde_json::from_value::>(tool_calls_value) { [INFO] [stdout] 81 | | for tool_call_value in tool_calls { [INFO] [stdout] 82 | | if let Ok(tool_call) = serde_json::from_value::(tool_call_value) { [INFO] [stdout] ... | [INFO] [stdout] 121 | | } [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] 79 ~ if let Some(tool_calls_value) = delta.tool_calls [INFO] [stdout] 80 ~ && let Ok(tool_calls) = serde_json::from_value::>(tool_calls_value) { [INFO] [stdout] 81 | for tool_call_value in tool_calls { [INFO] [stdout] ... [INFO] [stdout] 119 | } [INFO] [stdout] 120 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:99:37 [INFO] [stdout] | [INFO] [stdout] 99 | / ... if let Some(function) = &tool_call.function { [INFO] [stdout] 100 | | ... if let Some(arguments) = &function.arguments { [INFO] [stdout] 101 | | ... current.function.arguments.push_str(arguments); [INFO] [stdout] 102 | | ... } [INFO] [stdout] 103 | | ... } [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] 99 ~ if let Some(function) = &tool_call.function [INFO] [stdout] 100 ~ && let Some(arguments) = &function.arguments { [INFO] [stdout] 101 | current.function.arguments.push_str(arguments); [INFO] [stdout] 102 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:112:37 [INFO] [stdout] | [INFO] [stdout] 112 | / ... if let Some(function) = &tool_call.function { [INFO] [stdout] 113 | | ... if let Some(name) = &function.name { [INFO] [stdout] 114 | | ... current.function.name = Some(name.clone()); [INFO] [stdout] 115 | | ... } [INFO] [stdout] 116 | | ... } [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] 112 ~ if let Some(function) = &tool_call.function [INFO] [stdout] 113 ~ && let Some(name) = &function.name { [INFO] [stdout] 114 | current.function.name = Some(name.clone()); [INFO] [stdout] 115 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:124:17 [INFO] [stdout] | [INFO] [stdout] 124 | / if choice.finish_reason.as_deref() == Some("tool_calls") && current_tool_call.is_some() { [INFO] [stdout] 125 | | if let Some(tool_call) = current_tool_call.take() { [INFO] [stdout] 126 | | yield CollectedChunk::ToolCall { [INFO] [stdout] 127 | | content: tool_call, [INFO] [stdout] ... | [INFO] [stdout] 130 | | } [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] 124 ~ if choice.finish_reason.as_deref() == Some("tool_calls") && current_tool_call.is_some() [INFO] [stdout] 125 ~ && let Some(tool_call) = current_tool_call.take() { [INFO] [stdout] 126 | yield CollectedChunk::ToolCall { [INFO] [stdout] 127 | content: tool_call, [INFO] [stdout] 128 | }; [INFO] [stdout] 129 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> crates/core/src/messages.rs:60:35 [INFO] [stdout] | [INFO] [stdout] 60 | pub fn is_empty_string(something: &String) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 60 - pub fn is_empty_string(something: &String) -> bool { [INFO] [stdout] 60 + pub fn is_empty_string(something: &str) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> crates/core/src/messages.rs:72:26 [INFO] [stdout] | [INFO] [stdout] 72 | msgs.into_iter().map(|m| OMessage::from_internal(m)).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `OMessage::from_internal` [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] --> crates/core/src/main.rs:28:36 [INFO] [stdout] | [INFO] [stdout] 28 | let _sh = use_context_provider(|| SharedState::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `SharedState::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: module `ModelSelector` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:1:9 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod ModelSelector; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `model_selector` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `SendButton` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:2:9 [INFO] [stdout] | [INFO] [stdout] 2 | pub mod SendButton; [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `send_button` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `InputBox` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub mod InputBox; [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `input_box` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `ChatBody` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:4:9 [INFO] [stdout] | [INFO] [stdout] 4 | pub mod ChatBody; [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `chat_body` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `SideBar` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub mod SideBar; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `side_bar` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `ok` [INFO] [stdout] --> crates/core/src/chat_completions/comp_stream.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | / match result { [INFO] [stdout] 170 | | Ok(chunk) => Some(chunk), [INFO] [stdout] 171 | | Err(_) => None // Filter out our "No chunks yet" placeholder errors [INFO] [stdout] 172 | | } [INFO] [stdout] | |_____________^ help: replace with: `result.ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_ok_err [INFO] [stdout] = note: `#[warn(clippy::manual_ok_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:8:44 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn extract_content_from_chunks(chunks: &Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 8 - pub fn extract_content_from_chunks(chunks: &Vec) -> String { [INFO] [stdout] 8 + pub fn extract_content_from_chunks(chunks: &[CollectedChunk]) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:70:17 [INFO] [stdout] | [INFO] [stdout] 70 | / if let Some(content) = delta.content { [INFO] [stdout] 71 | | if !content.is_empty() { [INFO] [stdout] 72 | | yield CollectedChunk::ContentDelta { [INFO] [stdout] 73 | | content, [INFO] [stdout] ... | [INFO] [stdout] 76 | | } [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] 70 ~ if let Some(content) = delta.content [INFO] [stdout] 71 ~ && !content.is_empty() { [INFO] [stdout] 72 | yield CollectedChunk::ContentDelta { [INFO] [stdout] 73 | content, [INFO] [stdout] 74 | }; [INFO] [stdout] 75 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:79:17 [INFO] [stdout] | [INFO] [stdout] 79 | / if let Some(tool_calls_value) = delta.tool_calls { [INFO] [stdout] 80 | | if let Ok(tool_calls) = serde_json::from_value::>(tool_calls_value) { [INFO] [stdout] 81 | | for tool_call_value in tool_calls { [INFO] [stdout] 82 | | if let Ok(tool_call) = serde_json::from_value::(tool_call_value) { [INFO] [stdout] ... | [INFO] [stdout] 121 | | } [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] 79 ~ if let Some(tool_calls_value) = delta.tool_calls [INFO] [stdout] 80 ~ && let Ok(tool_calls) = serde_json::from_value::>(tool_calls_value) { [INFO] [stdout] 81 | for tool_call_value in tool_calls { [INFO] [stdout] ... [INFO] [stdout] 119 | } [INFO] [stdout] 120 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:99:37 [INFO] [stdout] | [INFO] [stdout] 99 | / ... if let Some(function) = &tool_call.function { [INFO] [stdout] 100 | | ... if let Some(arguments) = &function.arguments { [INFO] [stdout] 101 | | ... current.function.arguments.push_str(arguments); [INFO] [stdout] 102 | | ... } [INFO] [stdout] 103 | | ... } [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] 99 ~ if let Some(function) = &tool_call.function [INFO] [stdout] 100 ~ && let Some(arguments) = &function.arguments { [INFO] [stdout] 101 | current.function.arguments.push_str(arguments); [INFO] [stdout] 102 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:112:37 [INFO] [stdout] | [INFO] [stdout] 112 | / ... if let Some(function) = &tool_call.function { [INFO] [stdout] 113 | | ... if let Some(name) = &function.name { [INFO] [stdout] 114 | | ... current.function.name = Some(name.clone()); [INFO] [stdout] 115 | | ... } [INFO] [stdout] 116 | | ... } [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] 112 ~ if let Some(function) = &tool_call.function [INFO] [stdout] 113 ~ && let Some(name) = &function.name { [INFO] [stdout] 114 | current.function.name = Some(name.clone()); [INFO] [stdout] 115 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/core/src/chat_completions/comp_chunks_collector.rs:124:17 [INFO] [stdout] | [INFO] [stdout] 124 | / if choice.finish_reason.as_deref() == Some("tool_calls") && current_tool_call.is_some() { [INFO] [stdout] 125 | | if let Some(tool_call) = current_tool_call.take() { [INFO] [stdout] 126 | | yield CollectedChunk::ToolCall { [INFO] [stdout] 127 | | content: tool_call, [INFO] [stdout] ... | [INFO] [stdout] 130 | | } [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] 124 ~ if choice.finish_reason.as_deref() == Some("tool_calls") && current_tool_call.is_some() [INFO] [stdout] 125 ~ && let Some(tool_call) = current_tool_call.take() { [INFO] [stdout] 126 | yield CollectedChunk::ToolCall { [INFO] [stdout] 127 | content: tool_call, [INFO] [stdout] 128 | }; [INFO] [stdout] 129 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> crates/core/src/main.rs:28:36 [INFO] [stdout] | [INFO] [stdout] 28 | let _sh = use_context_provider(|| SharedState::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `SharedState::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: module `ModelSelector` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:1:9 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod ModelSelector; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `model_selector` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `SendButton` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:2:9 [INFO] [stdout] | [INFO] [stdout] 2 | pub mod SendButton; [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `send_button` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `InputBox` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub mod InputBox; [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `input_box` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `ChatBody` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:4:9 [INFO] [stdout] | [INFO] [stdout] 4 | pub mod ChatBody; [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `chat_body` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `SideBar` should have a snake case name [INFO] [stdout] --> crates/core/src/components/mod.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub mod SideBar; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `side_bar` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 28s [INFO] running `Command { std: "docker" "inspect" "56a4a1b3d8585b1c73a4e491dddecdf77a0e6ed95622b59363666d9443c664ec", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "56a4a1b3d8585b1c73a4e491dddecdf77a0e6ed95622b59363666d9443c664ec", kill_on_drop: false }` [INFO] [stdout] 56a4a1b3d8585b1c73a4e491dddecdf77a0e6ed95622b59363666d9443c664ec