[INFO] cloning repository https://github.com/RcityHarold/Rainbow-Blog-Front
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/RcityHarold/Rainbow-Blog-Front" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRcityHarold%2FRainbow-Blog-Front", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRcityHarold%2FRainbow-Blog-Front'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 05a302a69deb22c25038e252ea17235e531e71a6
[INFO] checking RcityHarold/Rainbow-Blog-Front against try#4f260f0f20b3133d20cfb50353c0221943af5796+rustflags=-Dunmustuse_in_always_ok for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRcityHarold%2FRainbow-Blog-Front" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-1-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/RcityHarold/Rainbow-Blog-Front
[INFO] finished tweaking git repo https://github.com/RcityHarold/Rainbow-Blog-Front
[INFO] tweaked toml for git repo https://github.com/RcityHarold/Rainbow-Blog-Front written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/RcityHarold/Rainbow-Blog-Front on toolchain 4f260f0f20b3133d20cfb50353c0221943af5796
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/RcityHarold/Rainbow-Blog-Front 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" "+4f260f0f20b3133d20cfb50353c0221943af5796" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7d2c1d7aee3df970cacfd5ca7bbc0ea51f209a3622604654de34a291217d439a
[INFO] running `Command { std: "docker" "start" "-a" "7d2c1d7aee3df970cacfd5ca7bbc0ea51f209a3622604654de34a291217d439a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7d2c1d7aee3df970cacfd5ca7bbc0ea51f209a3622604654de34a291217d439a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7d2c1d7aee3df970cacfd5ca7bbc0ea51f209a3622604654de34a291217d439a", kill_on_drop: false }`
[INFO] [stdout] 7d2c1d7aee3df970cacfd5ca7bbc0ea51f209a3622604654de34a291217d439a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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 -Dunmustuse_in_always_ok" "-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e86378054d04298387cd5fb757cb171b1e779e95a1b08d3d2e378103ff33f5e7
[INFO] running `Command { std: "docker" "start" "-a" "e86378054d04298387cd5fb757cb171b1e779e95a1b08d3d2e378103ff33f5e7", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.101
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling wasm-bindgen v0.2.101
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking dioxus-core-types v0.6.2
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]     Checking longest-increasing-subsequence v0.1.0
[INFO] [stderr]    Compiling lazy-js-bundle v0.6.2
[INFO] [stderr]    Compiling serde_json v1.0.143
[INFO] [stderr]    Compiling find-msvc-tools v0.1.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]    Compiling cc v1.2.36
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]    Compiling dioxus-document v0.6.3
[INFO] [stderr]     Checking keyboard-types v0.7.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling dioxus-interpreter-js v0.6.2
[INFO] [stderr]    Compiling const_format_proc_macros v0.2.34
[INFO] [stderr]    Compiling dioxus-config-macro v0.6.2
[INFO] [stderr]     Checking euclid v0.22.11
[INFO] [stderr]     Checking tracing-subscriber v0.3.20
[INFO] [stderr]     Checking const_format v0.2.34
[INFO] [stderr]    Compiling dioxus-web v0.6.3
[INFO] [stderr]     Checking sledgehammer_utils v0.3.1
[INFO] [stderr]    Compiling slab v0.4.11
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking dioxus-rsx v0.6.2
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]    Compiling wasm-bindgen-backend v0.2.101
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.21.3
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.101
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]    Compiling warnings-macro v0.2.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]     Checking generational-box v0.6.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling const-serialize-macro v0.6.2
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking warnings v0.2.1
[INFO] [stderr]    Compiling dioxus-core-macro v0.6.3
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.101
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling dioxus-html-internal-macro v0.6.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]    Compiling enumset_derive v0.14.0
[INFO] [stderr]     Checking js-sys v0.3.78
[INFO] [stderr]     Checking dioxus-cli-config v0.6.3
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.3
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tungstenite v0.23.0
[INFO] [stderr]    Compiling sledgehammer_bindgen_macro v0.6.1
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking hyper-util v0.1.16
[INFO] [stderr]     Checking enumset v1.1.10
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking dioxus-logger v0.6.2
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking sledgehammer_bindgen v0.6.0
[INFO] [stderr]    Compiling dioxus-router-macro v0.6.3
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking console_error_panic_hook v0.1.7
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking const-serialize v0.6.2
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking manganis-core v0.6.2
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking dioxus-core v0.6.3
[INFO] [stderr]     Checking web-sys v0.3.78
[INFO] [stderr]     Checking wasm-bindgen-futures v0.4.51
[INFO] [stderr]     Checking serde-wasm-bindgen v0.5.0
[INFO] [stderr]     Checking reqwest v0.12.23
[INFO] [stderr]     Checking serde-wasm-bindgen v0.6.5
[INFO] [stderr]     Checking gloo-timers v0.3.0
[INFO] [stderr]    Compiling manganis-macro v0.6.2
[INFO] [stderr]     Checking manganis v0.6.2
[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 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 v0.6.3
[INFO] [stderr]     Checking dioxus-router v0.6.3
[INFO] [stderr]     Checking gloo-utils v0.2.0
[INFO] [stderr]     Checking gloo-storage v0.3.0
[INFO] [stderr]     Checking rainbow-blog-front v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `ApiError`
[INFO] [stdout]  --> src/api/auth.rs:1:43
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::client::{ApiClient, ApiResult, ApiError};
[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: `RegisterRequest`
[INFO] [stdout]  --> src/api/auth.rs:3:55
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::models::auth::{AuthResponse, LoginRequest, RegisterRequest, User, RainbowAuthResponse, RainbowAuthUser};
[INFO] [stdout]   |                                                       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/api/auth.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use chrono::Utc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Pagination`
[INFO] [stdout]  --> src/api/users.rs:4:53
[INFO] [stdout]   |
[INFO] [stdout] 4 |     article::{ArticleListResponse, Article, Author, Pagination},
[INFO] [stdout]   |                                                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/api/users.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Serialize, Deserialize};
[INFO] [stdout]   |                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/api/tags.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `article::ArticleListResponse`
[INFO] [stdout]  --> src/api/series.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     article::ArticleListResponse,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dioxus_router::prelude::*`
[INFO] [stdout]  --> src/components/article_card.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use dioxus_router::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gloo_timers::future::TimeoutFuture`
[INFO] [stdout]  --> src/components/comment_v2.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use gloo_timers::future::TimeoutFuture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `File`
[INFO] [stdout]  --> src/components/image_upload.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use web_sys::{File, HtmlInputElement};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HtmlElement`
[INFO] [stdout]  --> src/components/highlight_system.rs:2:41
[INFO] [stdout]   |
[INFO] [stdout] 2 | use web_sys::{window, Selection, Range, HtmlElement};
[INFO] [stdout]   |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wasm_bindgen::JsCast`
[INFO] [stdout]  --> src/components/highlight_system.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use wasm_bindgen::JsCast;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CreateHighlightRequest`
[INFO] [stdout]  --> src/components/highlight_system.rs:4:43
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::models::highlight::{Highlight, CreateHighlightRequest};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/components/highlight_system.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `subscription_widget::*`
[INFO] [stdout]   --> src/components/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use subscription_widget::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::user::User`
[INFO] [stdout]  --> src/models/comment.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::models::user::User;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/pages/home.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ArticleListResponse`
[INFO] [stdout]  --> src/pages/home.rs:8:33
[INFO] [stdout]   |
[INFO] [stdout] 8 |     models::{article::{Article, ArticleListResponse}, tag::Tag},
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `articles::ArticleService`
[INFO] [stdout]  --> src/pages/profile.rs:4:31
[INFO] [stdout]   |
[INFO] [stdout] 4 |     api::{users::UserService, articles::ArticleService, bookmarks::BookmarkService},
[INFO] [stdout]   |                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchArticlesRequest`
[INFO] [stdout]  --> src/pages/search.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 |     api::search::{SearchService, SearchArticlesRequest, SearchSuggestionsRequest, SearchAllRequest},
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hooks::use_auth`
[INFO] [stdout]  --> src/pages/series.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     hooks::use_auth,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `articles::ArticleService` and `domains::DomainService`
[INFO] [stdout]  --> src/pages/publication_detail.rs:4:45
[INFO] [stdout]   |
[INFO] [stdout] 4 |     api::{publications::PublicationService, articles::ArticleService, domains::DomainService},
[INFO] [stdout]   |                                             ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ApiError`
[INFO] [stdout]  --> src/api/auth.rs:1:43
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::client::{ApiClient, ApiResult, ApiError};
[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: `RegisterRequest`
[INFO] [stdout]  --> src/api/auth.rs:3:55
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::models::auth::{AuthResponse, LoginRequest, RegisterRequest, User, RainbowAuthResponse, RainbowAuthUser};
[INFO] [stdout]   |                                                       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/api/auth.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use chrono::Utc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Pagination`
[INFO] [stdout]  --> src/api/users.rs:4:53
[INFO] [stdout]   |
[INFO] [stdout] 4 |     article::{ArticleListResponse, Article, Author, Pagination},
[INFO] [stdout]   |                                                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/api/users.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Serialize, Deserialize};
[INFO] [stdout]   |                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/api/tags.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `article::ArticleListResponse`
[INFO] [stdout]  --> src/api/series.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     article::ArticleListResponse,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dioxus_router::prelude::*`
[INFO] [stdout]  --> src/components/article_card.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use dioxus_router::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gloo_timers::future::TimeoutFuture`
[INFO] [stdout]  --> src/components/comment_v2.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use gloo_timers::future::TimeoutFuture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `File`
[INFO] [stdout]  --> src/components/image_upload.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use web_sys::{File, HtmlInputElement};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HtmlElement`
[INFO] [stdout]  --> src/components/highlight_system.rs:2:41
[INFO] [stdout]   |
[INFO] [stdout] 2 | use web_sys::{window, Selection, Range, HtmlElement};
[INFO] [stdout]   |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wasm_bindgen::JsCast`
[INFO] [stdout]  --> src/components/highlight_system.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use wasm_bindgen::JsCast;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CreateHighlightRequest`
[INFO] [stdout]  --> src/components/highlight_system.rs:4:43
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::models::highlight::{Highlight, CreateHighlightRequest};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/components/highlight_system.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `subscription_widget::*`
[INFO] [stdout]   --> src/components/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use subscription_widget::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::user::User`
[INFO] [stdout]  --> src/models/comment.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::models::user::User;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/pages/home.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ArticleListResponse`
[INFO] [stdout]  --> src/pages/home.rs:8:33
[INFO] [stdout]   |
[INFO] [stdout] 8 |     models::{article::{Article, ArticleListResponse}, tag::Tag},
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `articles::ArticleService`
[INFO] [stdout]  --> src/pages/profile.rs:4:31
[INFO] [stdout]   |
[INFO] [stdout] 4 |     api::{users::UserService, articles::ArticleService, bookmarks::BookmarkService},
[INFO] [stdout]   |                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchArticlesRequest`
[INFO] [stdout]  --> src/pages/search.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 |     api::search::{SearchService, SearchArticlesRequest, SearchSuggestionsRequest, SearchAllRequest},
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hooks::use_auth`
[INFO] [stdout]  --> src/pages/series.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     hooks::use_auth,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `articles::ArticleService` and `domains::DomainService`
[INFO] [stdout]  --> src/pages/publication_detail.rs:4:45
[INFO] [stdout]   |
[INFO] [stdout] 4 |     api::{publications::PublicationService, articles::ArticleService, domains::DomainService},
[INFO] [stdout]   |                                             ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures_util::StreamExt`
[INFO] [stdout]  --> src/pages/home.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use futures_util::StreamExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/api/auth.rs:89:20
[INFO] [stdout]    |
[INFO] [stdout] 89 |         if let Err(e) = UserService::create_user_profile(&profile_request).await {
[INFO] [stdout]    |                    ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `page`
[INFO] [stdout]   --> src/api/comments.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         page: Option<i32>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `per_page`
[INFO] [stdout]   --> src/api/comments.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         per_page: Option<i32>,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_per_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sort`
[INFO] [stdout]   --> src/api/comments.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         sort: Option<&str>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_sort`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/comment_v2.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let mut show_reply_form = use_signal(|| None::<String>);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parent_id_clone`
[INFO] [stdout]    --> src/components/comment_v2.rs:431:9
[INFO] [stdout]     |
[INFO] [stdout] 431 |     let parent_id_clone = parent_id.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_id_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures_util::StreamExt`
[INFO] [stdout]  --> src/pages/home.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use futures_util::StreamExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/api/auth.rs:89:20
[INFO] [stdout]    |
[INFO] [stdout] 89 |         if let Err(e) = UserService::create_user_profile(&profile_request).await {
[INFO] [stdout]    |                    ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `highlight`
[INFO] [stdout]    --> src/components/highlight_system.rs:141:37
[INFO] [stdout]     |
[INFO] [stdout] 141 |     let show_highlight_note = move |highlight: &Highlight| {
[INFO] [stdout]     |                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_highlight`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_highlight_color`
[INFO] [stdout]   --> src/components/highlight_system.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let current_highlight_color = current_highlight_color.clone();
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_highlight_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_highlight_note`
[INFO] [stdout]    --> src/components/highlight_system.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |     let show_highlight_note = move |highlight: &Highlight| {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_highlight_note`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/components/recommendations.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let mut articles = use_signal(|| Vec::<TrendingArticle>::new());
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/components/recommendations.rs:152:9
[INFO] [stdout]     |
[INFO] [stdout] 152 |     let mut loading = use_signal(|| true);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/components/recommendations.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |         let mut articles = articles.clone();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/components/recommendations.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let mut loading = loading.clone();
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/subscription_widget.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut loading = use_signal(|| false);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/subscription_widget.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut plans = use_signal(|| Vec::<SubscriptionPlan>::new());
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/subscription_widget.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut loading = loading.clone();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/subscription_widget.rs:32:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let mut subscription_status = subscription_status.clone();
[INFO] [stdout]    |             ----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/hooks/use_theme.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut theme = use_signal(|| {
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `page`
[INFO] [stdout]   --> src/api/comments.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         page: Option<i32>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `per_page`
[INFO] [stdout]   --> src/api/comments.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         per_page: Option<i32>,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_per_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sort`
[INFO] [stdout]   --> src/api/comments.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         sort: Option<&str>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_sort`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/comment_v2.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let mut show_reply_form = use_signal(|| None::<String>);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parent_id_clone`
[INFO] [stdout]    --> src/components/comment_v2.rs:431:9
[INFO] [stdout]     |
[INFO] [stdout] 431 |     let parent_id_clone = parent_id.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_id_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `highlight`
[INFO] [stdout]    --> src/components/highlight_system.rs:141:37
[INFO] [stdout]     |
[INFO] [stdout] 141 |     let show_highlight_note = move |highlight: &Highlight| {
[INFO] [stdout]     |                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_highlight`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_highlight_color`
[INFO] [stdout]   --> src/components/highlight_system.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let current_highlight_color = current_highlight_color.clone();
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_highlight_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_highlight_note`
[INFO] [stdout]    --> src/components/highlight_system.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |     let show_highlight_note = move |highlight: &Highlight| {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_highlight_note`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/components/recommendations.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let mut articles = use_signal(|| Vec::<TrendingArticle>::new());
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/components/recommendations.rs:152:9
[INFO] [stdout]     |
[INFO] [stdout] 152 |     let mut loading = use_signal(|| true);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/components/recommendations.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |         let mut articles = articles.clone();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/components/recommendations.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let mut loading = loading.clone();
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/subscription_widget.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut loading = use_signal(|| false);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/subscription_widget.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut plans = use_signal(|| Vec::<SubscriptionPlan>::new());
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/subscription_widget.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut loading = loading.clone();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/components/subscription_widget.rs:32:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let mut subscription_status = subscription_status.clone();
[INFO] [stdout]    |             ----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/hooks/use_theme.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut theme = use_signal(|| {
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut articles = use_signal(|| Vec::<Article>::new());
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let mut loading = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut error = use_signal(|| None::<String>);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let mut current_page = use_signal(|| 1);
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut has_more = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut selected_sort = use_signal(|| "newest");
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let mut tags = use_signal(|| Vec::<Tag>::new());
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:75:13
[INFO] [stdout]    |
[INFO] [stdout] 75 |         let mut loading = loading.clone();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut error = error.clone();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:77:13
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let mut has_more = has_more.clone();
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/home.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut articles = articles.clone();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/home.rs:114:13
[INFO] [stdout]     |
[INFO] [stdout] 114 |         let mut loading = loading.clone();
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/home.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut has_more = has_more.clone();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/article.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut loading = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/article.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut error = use_signal(|| None::<String>);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/editor_v2.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut auto_save_enabled = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/pages/editor_v2.rs:186:17
[INFO] [stdout]     |
[INFO] [stdout] 186 |             let handle = gloo_timers::callback::Interval::new(30_000, move || {
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/pages/editor_v2.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let auth = use_auth();
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `navigator`
[INFO] [stdout]   --> src/pages/editor_v2.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let navigator = use_navigator();
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_navigator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/profile.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut articles = use_signal(|| Vec::<Article>::new());
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/profile.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut bookmarks = use_signal(|| Vec::<BookmarkItem>::new());
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/profile.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let mut loading = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/profile.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut error = use_signal(|| None::<String>);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bookmarks`
[INFO] [stdout]   --> src/pages/profile.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut bookmarks = use_signal(|| Vec::<BookmarkItem>::new());
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bookmarks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/profile.rs:653:9
[INFO] [stdout]     |
[INFO] [stdout] 653 |     let mut articles = use_signal(|| Vec::<Article>::new());
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/profile.rs:655:9
[INFO] [stdout]     |
[INFO] [stdout] 655 |     let mut loading = use_signal(|| true);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/profile.rs:656:9
[INFO] [stdout]     |
[INFO] [stdout] 656 |     let mut error = use_signal(|| None::<String>);
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/search.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut current_page = use_signal(|| 1);
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_page`
[INFO] [stdout]   --> src/pages/search.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut current_page = use_signal(|| 1);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `route`
[INFO] [stdout]   --> src/pages/search.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let route = use_route::<Route>();
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_route`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/tags.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |     let mut tag = use_signal(|| None::<Tag>);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/tags.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let mut articles = use_signal(|| Vec::<Article>::new());
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/tags.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut loading = use_signal(|| true);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle_save`
[INFO] [stdout]    --> src/pages/series.rs:243:9
[INFO] [stdout]     |
[INFO] [stdout] 243 |     let handle_save = move |_: Event<FormData>| {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle_save`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `add_article_to_series`
[INFO] [stdout]   --> src/pages/series_detail.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     let add_article_to_series = move |article_id: String| {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_add_article_to_series`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remove_article`
[INFO] [stdout]   --> src/pages/series_detail.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let remove_article = move |article_id: String| {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remove_article`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/publication_detail.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut domains = use_signal(|| Vec::<PublicationDomain>::new());
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `domains`
[INFO] [stdout]   --> src/pages/publication_detail.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut domains = use_signal(|| Vec::<PublicationDomain>::new());
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_domains`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/create_publication.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 let mut handle_create = handle_create.clone();
[INFO] [stdout]    |                     ----^^^^^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle_create`
[INFO] [stdout]   --> src/pages/create_publication.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 let mut handle_create = handle_create.clone();
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle_create`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/domain_management.rs:249:41
[INFO] [stdout]     |
[INFO] [stdout] 249 | ...                   let mut domains = domains.clone();
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/domain_management.rs:265:41
[INFO] [stdout]     |
[INFO] [stdout] 265 | ...                   let mut domains = domains.clone();
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/domain_management.rs:281:41
[INFO] [stdout]     |
[INFO] [stdout] 281 | ...                   let mut domains = domains.clone();
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/domain_management.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let mut domains = use_signal(|| Vec::<PublicationDomain>::new());
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/domain_management.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut loading = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/domain_management.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let mut creating = use_signal(|| false);
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/domain_management.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let mut platform_host = use_signal(|| String::from("platform.com"));
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/pages/domain_management.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let auth = use_auth();
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `patch` is never used
[INFO] [stdout]    --> src/api/client.rs:215:18
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl ApiClient {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub async fn patch<T: Serialize, R: for<'de> Deserialize<'de>>(
[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 functions `logout` and `refresh_token` are never used
[INFO] [stdout]    --> src/api/auth.rs:98:18
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl AuthService {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub async fn logout() -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn refresh_token() -> ApiResult<AuthResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_trending_articles`, `get_popular_articles`, `unpublish_article`, and `delete_article` are never used
[INFO] [stdout]    --> src/api/articles.rs:202:18
[INFO] [stdout]     |
[INFO] [stdout] 120 | impl ArticleService {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub async fn get_trending_articles(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub async fn get_popular_articles(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 502 |     pub async fn unpublish_article(id: &str) -> ApiResult<Article> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     pub async fn delete_article(id: &str) -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_user_stats`, `get_followers`, and `get_following` are never used
[INFO] [stdout]    --> src/api/users.rs:37:18
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl UserService {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub async fn get_user_stats(username: &str) -> ApiResult<UserStats> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn get_followers(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub async fn get_following(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchArticlesRequest` is never constructed
[INFO] [stdout]  --> src/api/search.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct SearchArticlesRequest {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchArticlesResponse` is never constructed
[INFO] [stdout]   --> src/api/search.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SearchArticlesResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `series` is never read
[INFO] [stdout]   --> src/api/search.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct SearchAllResponse {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub series: Vec<Series>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchAllResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `type` and `relevance` are never read
[INFO] [stdout]   --> src/api/search.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct SearchSuggestion {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 51 |     pub text: String,
[INFO] [stdout] 52 |     pub r#type: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 53 |     pub relevance: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchSuggestion` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `search_articles` and `get_trending_searches` are never used
[INFO] [stdout]   --> src/api/search.rs:64:18
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl SearchService {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 64 |     pub async fn search_articles(request: SearchArticlesRequest) -> ApiResult<SearchArticlesResponse> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub async fn get_trending_searches(limit: Option<i32>) -> ApiResult<Vec<String>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateCommentRequest` is never constructed
[INFO] [stdout]   --> src/api/comments.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct UpdateCommentRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommentListResponse` is never constructed
[INFO] [stdout]   --> src/api/comments.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CommentListResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `update_comment`, `delete_comment`, and `report_comment` are never used
[INFO] [stdout]   --> src/api/comments.rs:48:18
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl CommentService {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub async fn update_comment(id: &str, request: &UpdateCommentRequest) -> ApiResult<Comment> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub async fn delete_comment(id: &str) -> ApiResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub async fn report_comment(id: &str, reason: &str) -> ApiResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_version`, `compare_versions`, and `restore_version` are never used
[INFO] [stdout]   --> src/api/versions.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl VersionService {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn get_version(article_id: &str, version_id: &str) -> ApiResult<ArticleVersion> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn compare_versions(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub async fn restore_version(request: &RestoreVersionRequest) -> ApiResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_series` and `reorder_series_articles` are never used
[INFO] [stdout]   --> src/api/series.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl SeriesService {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub async fn get_series(series_id: &str) -> ApiResult<SeriesWithArticles> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub async fn reorder_series_articles(series_id: &str, article_orders: Vec<(String, i32)>) -> ApiResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `API_CLIENT` is never used
[INFO] [stdout]  --> src/api/upload.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | static API_CLIENT: Lazy<ApiClient> = Lazy::new(ApiClient::new);
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `filename`, `size`, and `content_type` are never read
[INFO] [stdout]   --> src/api/upload.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct UploadResponse {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 10 |     pub url: String,
[INFO] [stdout] 11 |     pub filename: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 12 |     pub size: i64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 13 |     pub content_type: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UploadResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `upload_avatar` is never used
[INFO] [stdout]   --> src/api/upload.rs:85:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl UploadService {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub async fn upload_avatar(file: File) -> ApiResult<UploadResponse> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total`, `algorithm_used`, and `generated_at` are never read
[INFO] [stdout]   --> src/api/recommendations.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct RecommendationResponse {
[INFO] [stdout]    |            ---------------------- fields in this struct
[INFO] [stdout] 45 |     pub articles: Vec<RecommendedArticle>,
[INFO] [stdout] 46 |     pub total: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 47 |     pub algorithm_used: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     pub generated_at: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RecommendationResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total`, `algorithm_used`, and `generated_at` are never read
[INFO] [stdout]   --> src/api/recommendations.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct TrendingResponse {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 60 |     pub articles: Vec<TrendingArticle>,
[INFO] [stdout] 61 |     pub total: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 62 |     pub algorithm_used: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 63 |     pub generated_at: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrendingResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/api/recommendations.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct TrendingArticle {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 68 |     #[serde(deserialize_with = "deserialize_article_id")]
[INFO] [stdout] 69 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 70 |     pub title: String,
[INFO] [stdout] 71 |     pub subtitle: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 72 |     pub slug: String,
[INFO] [stdout] 73 |     pub excerpt: Option<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 74 |     pub cover_image_url: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     pub author: AuthorInfo,
[INFO] [stdout] 76 |     pub publication: Option<PublicationInfo>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 77 |     pub status: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 78 |     pub is_paid_content: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub is_featured: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 80 |     pub reading_time: i32,
[INFO] [stdout] 81 |     pub view_count: i32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 82 |     pub clap_count: i32,
[INFO] [stdout] 83 |     pub comment_count: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub tags: Vec<TagInfo>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 85 |     pub created_at: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 86 |     pub published_at: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub score: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 88 |     pub reason: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrendingArticle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `username`, `avatar_url`, and `is_verified` are never read
[INFO] [stdout]   --> src/api/recommendations.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct AuthorInfo {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 93 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 94 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 95 |     pub display_name: String,
[INFO] [stdout] 96 |     pub avatar_url: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 97 |     pub is_verified: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuthorInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, `slug`, and `logo_url` are never read
[INFO] [stdout]    --> src/api/recommendations.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct PublicationInfo {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 102 |     pub id: String,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 103 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 104 |     pub slug: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 105 |     pub logo_url: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PublicationInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, and `slug` are never read
[INFO] [stdout]    --> src/api/recommendations.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct TagInfo {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] 110 |     pub id: String,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 111 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 112 |     pub slug: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TagInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_following_feed` is never used
[INFO] [stdout]    --> src/api/recommendations.rs:193:18
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl RecommendationService {
[INFO] [stdout]     | -------------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn get_following_feed(limit: Option<i32>, page: Option<i32>) -> ApiResult<Vec<Article>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `update_publication`, `delete_publication`, `update_member_role`, `remove_member`, and `get_following_publications` are never used
[INFO] [stdout]    --> src/api/publications.rs:83:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl PublicationService {
[INFO] [stdout]     | ----------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub async fn update_publication(slug: &str, request: &UpdatePublicationRequest) -> ApiResult<Publication> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub async fn delete_publication(slug: &str) -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub async fn update_member_role(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub async fn remove_member(publication_id: &str, user_id: &str) -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn get_following_publications() -> ApiResult<Vec<Publication>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `per_page` is never read
[INFO] [stdout]   --> src/api/publications.rs:53:13
[INFO] [stdout]    |
[INFO] [stdout] 49 |         struct BackendPage {
[INFO] [stdout]    |                ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 53 |             per_page: i32,
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `per_page` is never read
[INFO] [stdout]    --> src/api/publications.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |         struct BackendMembersPage {
[INFO] [stdout]     |                ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 131 |             per_page: i32,
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tags` is never read
[INFO] [stdout]    --> src/api/publications.rs:238:31
[INFO] [stdout]     |
[INFO] [stdout] 225 |         struct BackendItem {
[INFO] [stdout]     |                ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 238 |             #[serde(default)] tags: Option<Vec<String>>,
[INFO] [stdout]     |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_domain_status` is never used
[INFO] [stdout]   --> src/api/domains.rs:50:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl DomainService {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub async fn get_domain_status(domain_id: &str) -> ApiResult<PublicationDomain> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total` is never read
[INFO] [stdout]   --> src/api/domains.rs:14:63
[INFO] [stdout]    |
[INFO] [stdout] 14 |         struct BackendList { domains: Vec<PublicationDomain>, total: i64 }
[INFO] [stdout]    |                ----------- field in this struct               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/api/subscriptions.rs:18:18
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl SubscriptionService {
[INFO] [stdout]     | ------------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub async fn get_plan(plan_id: &str) -> ApiResult<SubscriptionPlan> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub async fn update_plan(plan_id: &str, request: &UpdateSubscriptionPlanRequest) -> ApiResult<SubscriptionPlan> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn create_subscription(request: &CreateSubscriptionRequest) -> ApiResult<Subscription> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub async fn get_subscription(subscription_id: &str) -> ApiResult<Subscription> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub async fn get_payment_methods() -> ApiResult<Vec<PaymentMethod>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub async fn add_payment_method(request: &CreatePaymentMethodRequest) -> ApiResult<PaymentMethod> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub async fn delete_payment_method(payment_method_id: &str) -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub async fn set_default_payment_method(payment_method_id: &str) -> ApiResult<PaymentMethod> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub async fn check_subscription_status(creator_id: &str) -> ApiResult<Option<Subscription>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `class` and `toggle` are never used
[INFO] [stdout]   --> src/hooks/use_theme.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Theme {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 11 |     pub fn class(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn toggle(&self) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `theme` is never read
[INFO] [stdout]   --> src/hooks/use_theme.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct ThemeState {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 34 |     theme: Signal<Theme>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ThemeState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current` and `toggle` are never used
[INFO] [stdout]   --> src/hooks/use_theme.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl ThemeState {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 38 |     pub fn current(&self) -> Theme {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn toggle(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_theme` is never used
[INFO] [stdout]    --> src/hooks/use_theme.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn use_theme() -> ThemeState {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegisterRequest` is never constructed
[INFO] [stdout]   --> src/models/auth.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct RegisterRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserProfile` is never constructed
[INFO] [stdout]   --> src/models/auth.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct UserProfile {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserStats` is never constructed
[INFO] [stdout]   --> src/models/user.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct UserStats {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserListResponse` is never constructed
[INFO] [stdout]    --> src/models/user.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct UserListResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VersionDiff` is never constructed
[INFO] [stdout]   --> src/models/version.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct VersionDiff {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArticleVersionComparison` is never constructed
[INFO] [stdout]   --> src/models/version.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct ArticleVersionComparison {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RestoreVersionRequest` is never constructed
[INFO] [stdout]   --> src/models/version.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct RestoreVersionRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateHighlightRequest` is never constructed
[INFO] [stdout]   --> src/models/highlight.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CreateHighlightRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateHighlightRequest` is never constructed
[INFO] [stdout]   --> src/models/highlight.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct UpdateHighlightRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HighlightListResponse` is never constructed
[INFO] [stdout]   --> src/models/highlight.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct HighlightListResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdatePublicationRequest` is never constructed
[INFO] [stdout]   --> src/models/publication.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct UpdatePublicationRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateSubdomainResponse` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct CreateSubdomainResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateCustomDomainResponse` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct CreateCustomDomainResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AutoVerification` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct AutoVerification {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DomainStatusResponse` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct DomainStatusResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DomainProgress` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct DomainProgress {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VerificationStatus` is never constructed
[INFO] [stdout]    --> src/models/domain.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct VerificationStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecordVerification` is never constructed
[INFO] [stdout]    --> src/models/domain.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct RecordVerification {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateSubscriptionPlanRequest` is never constructed
[INFO] [stdout]   --> src/models/subscription.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct UpdateSubscriptionPlanRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateSubscriptionRequest` is never constructed
[INFO] [stdout]   --> src/models/subscription.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct CreateSubscriptionRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PaymentMethod` is never constructed
[INFO] [stdout]   --> src/models/subscription.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct PaymentMethod {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreatePaymentMethodRequest` is never constructed
[INFO] [stdout]   --> src/models/subscription.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct CreatePaymentMethodRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `article_id`, `created_at`, and `author_username` are never read
[INFO] [stdout]   --> src/models/bookmark.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct BookmarkItem {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout]  6 |     pub id: String,
[INFO] [stdout]  7 |     pub article_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]  8 |     pub note: Option<String>,
[INFO] [stdout]  9 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub author_username: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BookmarkItem` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `success` is never read
[INFO] [stdout]   --> src/models/bookmark.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct BookmarkListResponse {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] 23 |     pub success: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BookmarkListResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<std::string::String, Infallible>
[INFO] [stdout]   --> src/main.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 | #[derive(Clone, Routable, Debug, PartialEq)]
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout]    = note: this error originates in the derive macro `Routable` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<Vec<std::string::String>, Infallible>
[INFO] [stdout]   --> src/main.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 | #[derive(Clone, Routable, Debug, PartialEq)]
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the derive macro `Routable` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut articles = use_signal(|| Vec::<Article>::new());
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let mut loading = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut error = use_signal(|| None::<String>);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let mut current_page = use_signal(|| 1);
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut has_more = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut selected_sort = use_signal(|| "newest");
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let mut tags = use_signal(|| Vec::<Tag>::new());
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:75:13
[INFO] [stdout]    |
[INFO] [stdout] 75 |         let mut loading = loading.clone();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut error = error.clone();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/home.rs:77:13
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let mut has_more = has_more.clone();
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/home.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut articles = articles.clone();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/home.rs:114:13
[INFO] [stdout]     |
[INFO] [stdout] 114 |         let mut loading = loading.clone();
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/home.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut has_more = has_more.clone();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/article.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut loading = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/article.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut error = use_signal(|| None::<String>);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/editor_v2.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut auto_save_enabled = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/pages/editor_v2.rs:186:17
[INFO] [stdout]     |
[INFO] [stdout] 186 |             let handle = gloo_timers::callback::Interval::new(30_000, move || {
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/pages/editor_v2.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let auth = use_auth();
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `navigator`
[INFO] [stdout]   --> src/pages/editor_v2.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let navigator = use_navigator();
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_navigator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/profile.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut articles = use_signal(|| Vec::<Article>::new());
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rainbow-blog-front` (bin "rainbow-blog-front") due to 2 previous errors; 148 warnings emitted
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/profile.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut bookmarks = use_signal(|| Vec::<BookmarkItem>::new());
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/profile.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let mut loading = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/profile.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut error = use_signal(|| None::<String>);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bookmarks`
[INFO] [stdout]   --> src/pages/profile.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut bookmarks = use_signal(|| Vec::<BookmarkItem>::new());
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bookmarks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/profile.rs:653:9
[INFO] [stdout]     |
[INFO] [stdout] 653 |     let mut articles = use_signal(|| Vec::<Article>::new());
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/profile.rs:655:9
[INFO] [stdout]     |
[INFO] [stdout] 655 |     let mut loading = use_signal(|| true);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/profile.rs:656:9
[INFO] [stdout]     |
[INFO] [stdout] 656 |     let mut error = use_signal(|| None::<String>);
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/search.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut current_page = use_signal(|| 1);
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_page`
[INFO] [stdout]   --> src/pages/search.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut current_page = use_signal(|| 1);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `route`
[INFO] [stdout]   --> src/pages/search.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let route = use_route::<Route>();
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_route`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/tags.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |     let mut tag = use_signal(|| None::<Tag>);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/tags.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let mut articles = use_signal(|| Vec::<Article>::new());
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/tags.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut loading = use_signal(|| true);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle_save`
[INFO] [stdout]    --> src/pages/series.rs:243:9
[INFO] [stdout]     |
[INFO] [stdout] 243 |     let handle_save = move |_: Event<FormData>| {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle_save`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `add_article_to_series`
[INFO] [stdout]   --> src/pages/series_detail.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     let add_article_to_series = move |article_id: String| {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_add_article_to_series`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remove_article`
[INFO] [stdout]   --> src/pages/series_detail.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let remove_article = move |article_id: String| {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remove_article`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/publication_detail.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut domains = use_signal(|| Vec::<PublicationDomain>::new());
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `domains`
[INFO] [stdout]   --> src/pages/publication_detail.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut domains = use_signal(|| Vec::<PublicationDomain>::new());
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_domains`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/create_publication.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 let mut handle_create = handle_create.clone();
[INFO] [stdout]    |                     ----^^^^^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle_create`
[INFO] [stdout]   --> src/pages/create_publication.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 let mut handle_create = handle_create.clone();
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle_create`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/domain_management.rs:249:41
[INFO] [stdout]     |
[INFO] [stdout] 249 | ...                   let mut domains = domains.clone();
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/domain_management.rs:265:41
[INFO] [stdout]     |
[INFO] [stdout] 265 | ...                   let mut domains = domains.clone();
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pages/domain_management.rs:281:41
[INFO] [stdout]     |
[INFO] [stdout] 281 | ...                   let mut domains = domains.clone();
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/domain_management.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let mut domains = use_signal(|| Vec::<PublicationDomain>::new());
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/domain_management.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut loading = use_signal(|| true);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/domain_management.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let mut creating = use_signal(|| false);
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/pages/domain_management.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let mut platform_host = use_signal(|| String::from("platform.com"));
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/pages/domain_management.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let auth = use_auth();
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `patch` is never used
[INFO] [stdout]    --> src/api/client.rs:215:18
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl ApiClient {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub async fn patch<T: Serialize, R: for<'de> Deserialize<'de>>(
[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 functions `logout` and `refresh_token` are never used
[INFO] [stdout]    --> src/api/auth.rs:98:18
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl AuthService {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub async fn logout() -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn refresh_token() -> ApiResult<AuthResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_trending_articles`, `get_popular_articles`, `unpublish_article`, and `delete_article` are never used
[INFO] [stdout]    --> src/api/articles.rs:202:18
[INFO] [stdout]     |
[INFO] [stdout] 120 | impl ArticleService {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub async fn get_trending_articles(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub async fn get_popular_articles(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 502 |     pub async fn unpublish_article(id: &str) -> ApiResult<Article> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     pub async fn delete_article(id: &str) -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_user_stats`, `get_followers`, and `get_following` are never used
[INFO] [stdout]    --> src/api/users.rs:37:18
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl UserService {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub async fn get_user_stats(username: &str) -> ApiResult<UserStats> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn get_followers(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub async fn get_following(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchArticlesRequest` is never constructed
[INFO] [stdout]  --> src/api/search.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct SearchArticlesRequest {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchArticlesResponse` is never constructed
[INFO] [stdout]   --> src/api/search.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SearchArticlesResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `series` is never read
[INFO] [stdout]   --> src/api/search.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct SearchAllResponse {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub series: Vec<Series>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchAllResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `type` and `relevance` are never read
[INFO] [stdout]   --> src/api/search.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct SearchSuggestion {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 51 |     pub text: String,
[INFO] [stdout] 52 |     pub r#type: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 53 |     pub relevance: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchSuggestion` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `search_articles` and `get_trending_searches` are never used
[INFO] [stdout]   --> src/api/search.rs:64:18
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl SearchService {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 64 |     pub async fn search_articles(request: SearchArticlesRequest) -> ApiResult<SearchArticlesResponse> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub async fn get_trending_searches(limit: Option<i32>) -> ApiResult<Vec<String>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateCommentRequest` is never constructed
[INFO] [stdout]   --> src/api/comments.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct UpdateCommentRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommentListResponse` is never constructed
[INFO] [stdout]   --> src/api/comments.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CommentListResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `update_comment`, `delete_comment`, and `report_comment` are never used
[INFO] [stdout]   --> src/api/comments.rs:48:18
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl CommentService {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub async fn update_comment(id: &str, request: &UpdateCommentRequest) -> ApiResult<Comment> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub async fn delete_comment(id: &str) -> ApiResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub async fn report_comment(id: &str, reason: &str) -> ApiResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_version`, `compare_versions`, and `restore_version` are never used
[INFO] [stdout]   --> src/api/versions.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl VersionService {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn get_version(article_id: &str, version_id: &str) -> ApiResult<ArticleVersion> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn compare_versions(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub async fn restore_version(request: &RestoreVersionRequest) -> ApiResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_series` and `reorder_series_articles` are never used
[INFO] [stdout]   --> src/api/series.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl SeriesService {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub async fn get_series(series_id: &str) -> ApiResult<SeriesWithArticles> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub async fn reorder_series_articles(series_id: &str, article_orders: Vec<(String, i32)>) -> ApiResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `API_CLIENT` is never used
[INFO] [stdout]  --> src/api/upload.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | static API_CLIENT: Lazy<ApiClient> = Lazy::new(ApiClient::new);
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `filename`, `size`, and `content_type` are never read
[INFO] [stdout]   --> src/api/upload.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct UploadResponse {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 10 |     pub url: String,
[INFO] [stdout] 11 |     pub filename: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 12 |     pub size: i64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 13 |     pub content_type: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UploadResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `upload_avatar` is never used
[INFO] [stdout]   --> src/api/upload.rs:85:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl UploadService {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub async fn upload_avatar(file: File) -> ApiResult<UploadResponse> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total`, `algorithm_used`, and `generated_at` are never read
[INFO] [stdout]   --> src/api/recommendations.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct RecommendationResponse {
[INFO] [stdout]    |            ---------------------- fields in this struct
[INFO] [stdout] 45 |     pub articles: Vec<RecommendedArticle>,
[INFO] [stdout] 46 |     pub total: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 47 |     pub algorithm_used: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     pub generated_at: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RecommendationResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total`, `algorithm_used`, and `generated_at` are never read
[INFO] [stdout]   --> src/api/recommendations.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct TrendingResponse {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 60 |     pub articles: Vec<TrendingArticle>,
[INFO] [stdout] 61 |     pub total: i64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 62 |     pub algorithm_used: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 63 |     pub generated_at: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrendingResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/api/recommendations.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct TrendingArticle {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 68 |     #[serde(deserialize_with = "deserialize_article_id")]
[INFO] [stdout] 69 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 70 |     pub title: String,
[INFO] [stdout] 71 |     pub subtitle: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 72 |     pub slug: String,
[INFO] [stdout] 73 |     pub excerpt: Option<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 74 |     pub cover_image_url: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     pub author: AuthorInfo,
[INFO] [stdout] 76 |     pub publication: Option<PublicationInfo>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 77 |     pub status: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 78 |     pub is_paid_content: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     pub is_featured: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 80 |     pub reading_time: i32,
[INFO] [stdout] 81 |     pub view_count: i32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 82 |     pub clap_count: i32,
[INFO] [stdout] 83 |     pub comment_count: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 84 |     pub tags: Vec<TagInfo>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 85 |     pub created_at: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 86 |     pub published_at: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub score: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 88 |     pub reason: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrendingArticle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `username`, `avatar_url`, and `is_verified` are never read
[INFO] [stdout]   --> src/api/recommendations.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct AuthorInfo {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 93 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 94 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 95 |     pub display_name: String,
[INFO] [stdout] 96 |     pub avatar_url: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 97 |     pub is_verified: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuthorInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, `slug`, and `logo_url` are never read
[INFO] [stdout]    --> src/api/recommendations.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct PublicationInfo {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 102 |     pub id: String,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 103 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 104 |     pub slug: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 105 |     pub logo_url: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PublicationInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, and `slug` are never read
[INFO] [stdout]    --> src/api/recommendations.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct TagInfo {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] 110 |     pub id: String,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 111 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 112 |     pub slug: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TagInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_following_feed` is never used
[INFO] [stdout]    --> src/api/recommendations.rs:193:18
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl RecommendationService {
[INFO] [stdout]     | -------------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn get_following_feed(limit: Option<i32>, page: Option<i32>) -> ApiResult<Vec<Article>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `update_publication`, `delete_publication`, `update_member_role`, `remove_member`, and `get_following_publications` are never used
[INFO] [stdout]    --> src/api/publications.rs:83:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl PublicationService {
[INFO] [stdout]     | ----------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub async fn update_publication(slug: &str, request: &UpdatePublicationRequest) -> ApiResult<Publication> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub async fn delete_publication(slug: &str) -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub async fn update_member_role(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub async fn remove_member(publication_id: &str, user_id: &str) -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn get_following_publications() -> ApiResult<Vec<Publication>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `per_page` is never read
[INFO] [stdout]   --> src/api/publications.rs:53:13
[INFO] [stdout]    |
[INFO] [stdout] 49 |         struct BackendPage {
[INFO] [stdout]    |                ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 53 |             per_page: i32,
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `per_page` is never read
[INFO] [stdout]    --> src/api/publications.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |         struct BackendMembersPage {
[INFO] [stdout]     |                ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 131 |             per_page: i32,
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tags` is never read
[INFO] [stdout]    --> src/api/publications.rs:238:31
[INFO] [stdout]     |
[INFO] [stdout] 225 |         struct BackendItem {
[INFO] [stdout]     |                ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 238 |             #[serde(default)] tags: Option<Vec<String>>,
[INFO] [stdout]     |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_domain_status` is never used
[INFO] [stdout]   --> src/api/domains.rs:50:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl DomainService {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub async fn get_domain_status(domain_id: &str) -> ApiResult<PublicationDomain> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total` is never read
[INFO] [stdout]   --> src/api/domains.rs:14:63
[INFO] [stdout]    |
[INFO] [stdout] 14 |         struct BackendList { domains: Vec<PublicationDomain>, total: i64 }
[INFO] [stdout]    |                ----------- field in this struct               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/api/subscriptions.rs:18:18
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl SubscriptionService {
[INFO] [stdout]     | ------------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub async fn get_plan(plan_id: &str) -> ApiResult<SubscriptionPlan> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub async fn update_plan(plan_id: &str, request: &UpdateSubscriptionPlanRequest) -> ApiResult<SubscriptionPlan> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn create_subscription(request: &CreateSubscriptionRequest) -> ApiResult<Subscription> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub async fn get_subscription(subscription_id: &str) -> ApiResult<Subscription> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub async fn get_payment_methods() -> ApiResult<Vec<PaymentMethod>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub async fn add_payment_method(request: &CreatePaymentMethodRequest) -> ApiResult<PaymentMethod> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub async fn delete_payment_method(payment_method_id: &str) -> ApiResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub async fn set_default_payment_method(payment_method_id: &str) -> ApiResult<PaymentMethod> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub async fn check_subscription_status(creator_id: &str) -> ApiResult<Option<Subscription>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `class` and `toggle` are never used
[INFO] [stdout]   --> src/hooks/use_theme.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Theme {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 11 |     pub fn class(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn toggle(&self) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `theme` is never read
[INFO] [stdout]   --> src/hooks/use_theme.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct ThemeState {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 34 |     theme: Signal<Theme>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ThemeState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current` and `toggle` are never used
[INFO] [stdout]   --> src/hooks/use_theme.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl ThemeState {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 38 |     pub fn current(&self) -> Theme {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn toggle(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_theme` is never used
[INFO] [stdout]    --> src/hooks/use_theme.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn use_theme() -> ThemeState {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegisterRequest` is never constructed
[INFO] [stdout]   --> src/models/auth.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct RegisterRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserProfile` is never constructed
[INFO] [stdout]   --> src/models/auth.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct UserProfile {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserStats` is never constructed
[INFO] [stdout]   --> src/models/user.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct UserStats {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserListResponse` is never constructed
[INFO] [stdout]    --> src/models/user.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct UserListResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VersionDiff` is never constructed
[INFO] [stdout]   --> src/models/version.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct VersionDiff {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArticleVersionComparison` is never constructed
[INFO] [stdout]   --> src/models/version.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct ArticleVersionComparison {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RestoreVersionRequest` is never constructed
[INFO] [stdout]   --> src/models/version.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct RestoreVersionRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateHighlightRequest` is never constructed
[INFO] [stdout]   --> src/models/highlight.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CreateHighlightRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateHighlightRequest` is never constructed
[INFO] [stdout]   --> src/models/highlight.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct UpdateHighlightRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HighlightListResponse` is never constructed
[INFO] [stdout]   --> src/models/highlight.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct HighlightListResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdatePublicationRequest` is never constructed
[INFO] [stdout]   --> src/models/publication.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct UpdatePublicationRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateSubdomainResponse` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct CreateSubdomainResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateCustomDomainResponse` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct CreateCustomDomainResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AutoVerification` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct AutoVerification {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DomainStatusResponse` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct DomainStatusResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DomainProgress` is never constructed
[INFO] [stdout]   --> src/models/domain.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct DomainProgress {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VerificationStatus` is never constructed
[INFO] [stdout]    --> src/models/domain.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct VerificationStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecordVerification` is never constructed
[INFO] [stdout]    --> src/models/domain.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct RecordVerification {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateSubscriptionPlanRequest` is never constructed
[INFO] [stdout]   --> src/models/subscription.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct UpdateSubscriptionPlanRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateSubscriptionRequest` is never constructed
[INFO] [stdout]   --> src/models/subscription.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct CreateSubscriptionRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PaymentMethod` is never constructed
[INFO] [stdout]   --> src/models/subscription.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct PaymentMethod {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreatePaymentMethodRequest` is never constructed
[INFO] [stdout]   --> src/models/subscription.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct CreatePaymentMethodRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `article_id`, `created_at`, and `author_username` are never read
[INFO] [stdout]   --> src/models/bookmark.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct BookmarkItem {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout]  6 |     pub id: String,
[INFO] [stdout]  7 |     pub article_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]  8 |     pub note: Option<String>,
[INFO] [stdout]  9 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub author_username: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BookmarkItem` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `success` is never read
[INFO] [stdout]   --> src/models/bookmark.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct BookmarkListResponse {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] 23 |     pub success: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BookmarkListResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<std::string::String, Infallible>
[INFO] [stdout]   --> src/main.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 | #[derive(Clone, Routable, Debug, PartialEq)]
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout]    = note: this error originates in the derive macro `Routable` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<Vec<std::string::String>, Infallible>
[INFO] [stdout]   --> src/main.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 | #[derive(Clone, Routable, Debug, PartialEq)]
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the derive macro `Routable` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rainbow-blog-front` (bin "rainbow-blog-front" test) due to 2 previous errors; 148 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "e86378054d04298387cd5fb757cb171b1e779e95a1b08d3d2e378103ff33f5e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e86378054d04298387cd5fb757cb171b1e779e95a1b08d3d2e378103ff33f5e7", kill_on_drop: false }`
[INFO] [stdout] e86378054d04298387cd5fb757cb171b1e779e95a1b08d3d2e378103ff33f5e7
