[INFO] cloning repository https://github.com/hubermann/inbestia-nexus-yew
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hubermann/inbestia-nexus-yew" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhubermann%2Finbestia-nexus-yew", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhubermann%2Finbestia-nexus-yew'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7422c6a3c0ad5d30cbb693fb7fbd0ac399e969bd
[INFO] checking hubermann/inbestia-nexus-yew/7422c6a3c0ad5d30cbb693fb7fbd0ac399e969bd against master#57f772f25c5ce2bd870d6f8c3ab318eaee5a3326 for pr-133502-22
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhubermann%2Finbestia-nexus-yew" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hubermann/inbestia-nexus-yew
[INFO] finished tweaking git repo https://github.com/hubermann/inbestia-nexus-yew
[INFO] tweaked toml for git repo https://github.com/hubermann/inbestia-nexus-yew written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hubermann/inbestia-nexus-yew on toolchain 57f772f25c5ce2bd870d6f8c3ab318eaee5a3326
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hubermann/inbestia-nexus-yew 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" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded yewdux-macros v0.11.0
[INFO] [stderr]   Downloaded yewdux v0.11.0
[INFO] [stderr]   Downloaded yew-macro v0.21.0
[INFO] [stderr]   Downloaded gloo-events v0.2.0
[INFO] [stderr]   Downloaded gloo-render v0.2.0
[INFO] [stderr]   Downloaded gloo-dialogs v0.2.0
[INFO] [stderr]   Downloaded wasm-logger v0.2.0
[INFO] [stderr]   Downloaded gloo-history v0.1.5
[INFO] [stderr]   Downloaded gloo-file v0.3.0
[INFO] [stderr]   Downloaded gloo-utils v0.1.7
[INFO] [stderr]   Downloaded gloo-console v0.3.0
[INFO] [stderr]   Downloaded gloo-history v0.2.2
[INFO] [stderr]   Downloaded stylist-core v0.13.0
[INFO] [stderr]   Downloaded implicit-clone-derive v0.1.2
[INFO] [stderr]   Downloaded gloo-worker v0.4.0
[INFO] [stderr]   Downloaded yew-router-macro v0.18.0
[INFO] [stderr]   Downloaded gloo-worker-macros v0.1.0
[INFO] [stderr]   Downloaded yew-router v0.18.0
[INFO] [stderr]   Downloaded implicit-clone v0.4.9
[INFO] [stderr]   Downloaded serde-wasm-bindgen v0.5.0
[INFO] [stderr]   Downloaded gloo-net v0.3.1
[INFO] [stderr]   Downloaded gloo-net v0.4.0
[INFO] [stderr]   Downloaded stylist v0.13.0
[INFO] [stderr]   Downloaded stylist-macros v0.13.0
[INFO] [stderr]   Downloaded yew v0.21.0
[INFO] [stderr]   Downloaded gloo v0.8.1
[INFO] [stderr]   Downloaded gloo v0.10.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 90efa5a748812124a93c848f38c665783f40119a0c7b769a490bed28af890fdd
[INFO] running `Command { std: "docker" "start" "-a" "90efa5a748812124a93c848f38c665783f40119a0c7b769a490bed28af890fdd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "90efa5a748812124a93c848f38c665783f40119a0c7b769a490bed28af890fdd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "90efa5a748812124a93c848f38c665783f40119a0c7b769a490bed28af890fdd", kill_on_drop: false }`
[INFO] [stdout] 90efa5a748812124a93c848f38c665783f40119a0c7b769a490bed28af890fdd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+57f772f25c5ce2bd870d6f8c3ab318eaee5a3326" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 56bf6a61c9f60cf62abc18acc25e58d9c18483812098f791a6ba15627f1e3b31
[INFO] running `Command { std: "docker" "start" "-a" "56bf6a61c9f60cf62abc18acc25e58d9c18483812098f791a6ba15627f1e3b31", kill_on_drop: false }`
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.105
[INFO] [stderr]    Compiling bumpalo v3.19.0
[INFO] [stderr]     Checking unicode-ident v1.0.22
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling hashbrown v0.16.0
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling wasm-bindgen v0.2.105
[INFO] [stderr]    Compiling syn v2.0.110
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]    Compiling litrs v0.4.2
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]     Checking indexmap v2.12.0
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]     Checking route-recognizer v0.3.1
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.105
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling gloo-worker-macros v0.1.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling implicit-clone-derive v0.1.2
[INFO] [stderr]    Compiling yew-router-macro v0.18.0
[INFO] [stderr]     Checking implicit-clone v0.4.9
[INFO] [stderr]    Compiling yew-macro v0.21.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling yewdux-macros v0.11.0
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.105
[INFO] [stderr]     Checking js-sys v0.3.82
[INFO] [stderr]     Checking console_error_panic_hook v0.1.7
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking stylist-core v0.13.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking pinned v0.1.0
[INFO] [stderr]     Checking prokio v0.1.0
[INFO] [stderr]    Compiling stylist-macros v0.13.0
[INFO] [stderr]     Checking web-sys v0.3.82
[INFO] [stderr]     Checking wasm-bindgen-futures v0.4.55
[INFO] [stderr]     Checking serde-wasm-bindgen v0.6.5
[INFO] [stderr]     Checking gloo-timers v0.3.0
[INFO] [stderr]     Checking gloo-utils v0.2.0
[INFO] [stderr]     Checking gloo-events v0.2.0
[INFO] [stderr]     Checking gloo-render v0.2.0
[INFO] [stderr]     Checking gloo-dialogs v0.2.0
[INFO] [stderr]     Checking wasm-logger v0.2.0
[INFO] [stderr]     Checking gloo-console v0.3.0
[INFO] [stderr]     Checking gloo-worker v0.4.0
[INFO] [stderr]     Checking gloo-net v0.4.0
[INFO] [stderr]     Checking gloo-storage v0.3.0
[INFO] [stderr]     Checking gloo-net v0.6.0
[INFO] [stderr]     Checking gloo-file v0.3.0
[INFO] [stderr]     Checking gloo-history v0.2.2
[INFO] [stderr]     Checking gloo v0.10.0
[INFO] [stderr]     Checking yew v0.21.0
[INFO] [stderr]     Checking yewdux v0.11.0
[INFO] [stderr]     Checking yew-router v0.18.0
[INFO] [stderr]     Checking stylist v0.13.0
[INFO] [stderr]     Checking inbestia_nexus v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/services/inbestia_api.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde::{Deserialize, Serialize};
[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 imports: `AlertCondition` and `AlertStatus`
[INFO] [stdout]  --> src/services/alert_service.rs:2:35
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::types::alerts::{Alert, AlertCondition, AlertStatus, AlertTrigger};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/services/fibo_api.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `js_sys::Date`
[INFO] [stdout]  --> src/routes/alerts/alerts.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use js_sys::Date;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FiboError`
[INFO] [stdout]  --> src/routes/auth/login.rs:5:48
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::services::fibo_api::{FiboApiClient, FiboError};
[INFO] [stdout]   |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `login::Login`
[INFO] [stdout]  --> src/routes/auth/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use login::Login;
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signup::Signup`
[INFO] [stdout]  --> src/routes/auth/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use signup::Signup;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::components::scoring::dual_score_card::DualScoreCard`
[INFO] [stdout]  --> src/routes/scoring/details.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::components::scoring::dual_score_card::DualScoreCard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::api::CandleData`
[INFO] [stdout]  --> src/routes/scoring/history.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::api::CandleData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::app::AppRoute`
[INFO] [stdout]  --> src/components/scoring/dual_score_card.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::app::AppRoute;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/services/inbestia_api.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde::{Deserialize, Serialize};
[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 imports: `AlertCondition` and `AlertStatus`
[INFO] [stdout]  --> src/services/alert_service.rs:2:35
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::types::alerts::{Alert, AlertCondition, AlertStatus, AlertTrigger};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/services/fibo_api.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `js_sys::Date`
[INFO] [stdout]  --> src/components/dashboard/news_feed.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use js_sys::Date;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `js_sys::Date`
[INFO] [stdout]  --> src/routes/alerts/alerts.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use js_sys::Date;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FiboError`
[INFO] [stdout]  --> src/routes/auth/login.rs:5:48
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::services::fibo_api::{FiboApiClient, FiboError};
[INFO] [stdout]   |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `login::Login`
[INFO] [stdout]  --> src/routes/auth/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use login::Login;
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signup::Signup`
[INFO] [stdout]  --> src/routes/auth/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use signup::Signup;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::components::scoring::dual_score_card::DualScoreCard`
[INFO] [stdout]  --> src/routes/scoring/details.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::components::scoring::dual_score_card::DualScoreCard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::api::CandleData`
[INFO] [stdout]  --> src/routes/scoring/history.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::api::CandleData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::app::AppRoute`
[INFO] [stdout]  --> src/components/scoring/dual_score_card.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::app::AppRoute;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `js_sys::Date`
[INFO] [stdout]  --> src/components/dashboard/news_feed.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use js_sys::Date;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `yew_router::prelude`
[INFO] [stdout]  --> src/components/scoring/dual_score_card.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use yew_router::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `yew_router::prelude`
[INFO] [stdout]  --> src/routes/watchlist.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use yew_router::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `url_clone`
[INFO] [stdout]    --> src/services/websocket_client.rs:155:25
[INFO] [stdout]     |
[INFO] [stdout] 155 |                     let url_clone = url.clone();
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_url_clone`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `on_timeframe_change`
[INFO] [stdout]    --> src/routes/dashboard.rs:328:9
[INFO] [stdout]     |
[INFO] [stdout] 328 |     let on_timeframe_change = {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_on_timeframe_change`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loading`
[INFO] [stdout]   --> src/routes/watchlist.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let loading = loading.clone();
[INFO] [stdout]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loading`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_context`
[INFO] [stdout]   --> src/routes/watchlist.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 86 |             let auth_context = auth_context.clone();
[INFO] [stdout]    |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `plan_code`
[INFO] [stdout]    --> src/routes/settings.rs:363:39
[INFO] [stdout]     |
[INFO] [stdout] 363 |                         {if let Some((plan_code, plan_color, plan_name)) = plan_info {
[INFO] [stdout]     |                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_plan_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/routes/settings.rs:533:63
[INFO] [stdout]     |
[INFO] [stdout] 533 |                     {for (*sessions).iter().enumerate().map(|(idx, session)| {
[INFO] [stdout]     |                                                               ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `load_alerts`
[INFO] [stdout]    --> src/routes/alerts/alerts.rs:134:53
[INFO] [stdout]     |
[INFO] [stdout] 134 | ...                   let load_alerts = load_alerts.clone();
[INFO] [stdout]     |                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_load_alerts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `yew_router::prelude`
[INFO] [stdout]  --> src/components/scoring/dual_score_card.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use yew_router::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `yew_router::prelude`
[INFO] [stdout]  --> src/routes/watchlist.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use yew_router::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `url_clone`
[INFO] [stdout]    --> src/services/websocket_client.rs:155:25
[INFO] [stdout]     |
[INFO] [stdout] 155 |                     let url_clone = url.clone();
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_url_clone`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `on_timeframe_change`
[INFO] [stdout]    --> src/routes/dashboard.rs:328:9
[INFO] [stdout]     |
[INFO] [stdout] 328 |     let on_timeframe_change = {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_on_timeframe_change`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `navigator`
[INFO] [stdout]    --> src/routes/billing/success.rs:310:41
[INFO] [stdout]     |
[INFO] [stdout] 310 | ...                   let navigator = navigator.clone();
[INFO] [stdout]     |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_navigator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loading`
[INFO] [stdout]   --> src/routes/watchlist.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let loading = loading.clone();
[INFO] [stdout]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loading`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_context`
[INFO] [stdout]   --> src/routes/watchlist.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 86 |             let auth_context = auth_context.clone();
[INFO] [stdout]    |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `plan_code`
[INFO] [stdout]    --> src/routes/settings.rs:363:39
[INFO] [stdout]     |
[INFO] [stdout] 363 |                         {if let Some((plan_code, plan_color, plan_name)) = plan_info {
[INFO] [stdout]     |                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_plan_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/routes/settings.rs:533:63
[INFO] [stdout]     |
[INFO] [stdout] 533 |                     {for (*sessions).iter().enumerate().map(|(idx, session)| {
[INFO] [stdout]     |                                                               ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `load_alerts`
[INFO] [stdout]    --> src/routes/alerts/alerts.rs:134:53
[INFO] [stdout]     |
[INFO] [stdout] 134 | ...                   let load_alerts = load_alerts.clone();
[INFO] [stdout]     |                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_load_alerts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `long_class`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let long_class = get_score_class(score.long_score, true);
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_long_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `short_class`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let short_class = get_score_class(score.short_score, false);
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_short_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `confidence_class`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let confidence_class = get_confidence_class(score.confidence);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_confidence_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `long_width`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let long_width = format!("{}%", score.long_score * 10.0);
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_long_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `short_width`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let short_width = format!("{}%", score.short_score * 10.0);
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_short_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `navigator`
[INFO] [stdout]    --> src/routes/billing/success.rs:310:41
[INFO] [stdout]     |
[INFO] [stdout] 310 | ...                   let navigator = navigator.clone();
[INFO] [stdout]     |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_navigator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/components/scoring/score_chart.rs:53:17
[INFO] [stdout]    |
[INFO] [stdout] 53 |             let y = e.offset_y() as f64;
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `on_mouse_move`
[INFO] [stdout]   --> src/components/scoring/score_chart.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let on_mouse_move = {
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_on_mouse_move`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `on_mouse_move_drag`
[INFO] [stdout]    --> src/components/scoring/score_chart.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     let on_mouse_move_drag = {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_on_mouse_move_drag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_price`
[INFO] [stdout]    --> src/components/scoring/score_chart.rs:134:21
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let (min_price, max_price, price_range) = if has_candles {
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `long_class`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let long_class = get_score_class(score.long_score, true);
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_long_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `short_class`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let short_class = get_score_class(score.short_score, false);
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_short_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `confidence_class`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let confidence_class = get_confidence_class(score.confidence);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_confidence_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `long_width`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let long_width = format!("{}%", score.long_score * 10.0);
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_long_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `short_width`
[INFO] [stdout]   --> src/components/scoring/dual_score_card.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let short_width = format!("{}%", score.short_score * 10.0);
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_short_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/components/scoring/score_chart.rs:53:17
[INFO] [stdout]    |
[INFO] [stdout] 53 |             let y = e.offset_y() as f64;
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `on_mouse_move`
[INFO] [stdout]   --> src/components/scoring/score_chart.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let on_mouse_move = {
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_on_mouse_move`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `on_mouse_move_drag`
[INFO] [stdout]    --> src/components/scoring/score_chart.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     let on_mouse_move_drag = {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_on_mouse_move_drag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_price`
[INFO] [stdout]    --> src/components/scoring/score_chart.rs:134:21
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let (min_price, max_price, price_range) = if has_candles {
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SubscriptionTier` is never used
[INFO] [stdout]  --> src/services/mock_auth.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum SubscriptionTier {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]   --> src/services/mock_auth.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct User {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TierLimits` is never constructed
[INFO] [stdout]   --> src/services/mock_auth.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct TierLimits {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_limits` is never used
[INFO] [stdout]   --> src/services/mock_auth.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl SubscriptionTier {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 31 |     pub fn get_limits(&self) -> TierLimits {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MockAuthService` is never constructed
[INFO] [stdout]   --> src/services/mock_auth.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct MockAuthService;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_current_user` is never used
[INFO] [stdout]   --> src/services/mock_auth.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl MockAuthService {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 67 |     pub fn get_current_user() -> User {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `analyze_asset`, `analyze_multi_timeframe`, `get_fundamental_data`, and `get_dual_scores_batch` are never used
[INFO] [stdout]    --> src/services/inbestia_api.rs:26:18
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl InBestiaApiClient {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub async fn analyze_asset(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub async fn analyze_multi_timeframe(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub async fn get_fundamental_data(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub async fn get_dual_scores_batch(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScoringService` is never constructed
[INFO] [stdout]  --> src/services/scoring_service.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ScoringService {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/services/scoring_service.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl ScoringService {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_message` is never used
[INFO] [stdout]    --> src/services/websocket_client.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl WebSocketClient {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn send_message(&self, msg: &WebSocketMessage) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_by_id` and `get_active` are never used
[INFO] [stdout]   --> src/services/alert_service.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl AlertService {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn get_by_id(alert_id: &str) -> Option<Alert> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn get_active() -> Vec<Alert> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_error` is never used
[INFO] [stdout]   --> src/contexts/app_state.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl AppState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn clear_error(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ShortScore` and `Symbol` are never constructed
[INFO] [stdout]   --> src/routes/dashboard.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | enum SortBy {
[INFO] [stdout]    |      ------ variants in this enum
[INFO] [stdout] 21 |     LongScore,
[INFO] [stdout] 22 |     ShortScore,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 23 |     Confidence,
[INFO] [stdout] 24 |     Symbol,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SortBy` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/auth/protected_route.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_score_text_color` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn get_score_text_color(score: f64, is_long: bool) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_score_label` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:238:4
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn get_score_label(score: f64) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_confidence_text_color` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:267:4
[INFO] [stdout]     |
[INFO] [stdout] 267 | fn get_confidence_text_color(confidence: f64) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_confidence_bar_color` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:275:4
[INFO] [stdout]     |
[INFO] [stdout] 275 | fn get_confidence_bar_color(confidence: f64) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_action_recommendation` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:283:4
[INFO] [stdout]     |
[INFO] [stdout] 283 | fn get_action_recommendation(score: &DualScoreResponse) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_action_with_emoji` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:304:4
[INFO] [stdout]     |
[INFO] [stdout] 304 | fn get_action_with_emoji(score: &DualScoreResponse) -> (String, &'static str) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_top_drivers` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:385:4
[INFO] [stdout]     |
[INFO] [stdout] 385 | fn get_top_drivers(breakdown: &crate::types::api::ScoreBreakdown) -> Html {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiniProps` is never constructed
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:413:12
[INFO] [stdout]     |
[INFO] [stdout] 413 | pub struct MiniProps {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/scoring/category_breakdown.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/scoring/confidence_meter.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/scoring/explanation_panel.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/charts/candlestick.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/charts/line_chart.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/common/button.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ButtonVariant` is never used
[INFO] [stdout]   --> src/components/common/button.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ButtonVariant {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/common/card.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/common/modal.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_score` is never used
[INFO] [stdout]  --> src/utils/format.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub fn format_score(score: f64) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_percentage` is never used
[INFO] [stdout]  --> src/utils/format.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn format_percentage(value: f64) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_currency` is never used
[INFO] [stdout]   --> src/utils/format.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn format_currency(value: f64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_timestamp` is never used
[INFO] [stdout]   --> src/utils/format.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn format_timestamp(timestamp: i64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_api_error` is never used
[INFO] [stdout]  --> src/utils/api_client.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn handle_api_error(error: &ApiError) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_claims_from_token` is never used
[INFO] [stdout]  --> src/utils/jwt.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn get_claims_from_token(token: &str) -> Option<JwtClaims> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_current_token_expired` is never used
[INFO] [stdout]   --> src/utils/jwt.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn is_current_token_expired() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_rate_limits_from_token` is never used
[INFO] [stdout]   --> src/utils/jwt.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn get_rate_limits_from_token(token: &str) -> Option<RateLimits> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Size` is never used
[INFO] [stdout]   --> src/types/scoring.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum Size {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnalysisRequest` is never constructed
[INFO] [stdout]  --> src/types/api.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AnalysisRequest {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiTimeframeAnalysisRequest` is never constructed
[INFO] [stdout]   --> src/types/api.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct MultiTimeframeAnalysisRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompareRequest` is never constructed
[INFO] [stdout]   --> src/types/api.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct CompareRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScoreResponse` is never constructed
[INFO] [stdout]    --> src/types/api.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct ScoreResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CategoryScores` is never constructed
[INFO] [stdout]    --> src/types/api.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub struct CategoryScores {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimeframeAnalysisResult` is never constructed
[INFO] [stdout]    --> src/types/api.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct TimeframeAnalysisResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfluenceAnalysis` is never constructed
[INFO] [stdout]    --> src/types/api.rs:174:12
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub struct ConfluenceAnalysis {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerformanceMetrics` is never constructed
[INFO] [stdout]    --> src/types/api.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub struct PerformanceMetrics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiTimeframeMetadata` is never constructed
[INFO] [stdout]    --> src/types/api.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub struct MultiTimeframeMetadata {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiTimeframeAnalysisResponse` is never constructed
[INFO] [stdout]    --> src/types/api.rs:206:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct MultiTimeframeAnalysisResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FundamentalResponse` is never constructed
[INFO] [stdout]    --> src/types/api.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub struct FundamentalResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompareResult` is never constructed
[INFO] [stdout]    --> src/types/api.rs:255:12
[INFO] [stdout]     |
[INFO] [stdout] 255 | pub struct CompareResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompareResponse` is never constructed
[INFO] [stdout]    --> src/types/api.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct CompareResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateWatchlistRequest` is never constructed
[INFO] [stdout]    --> src/types/fibo.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct UpdateWatchlistRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display_name` is never used
[INFO] [stdout]   --> src/i18n/mod.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Language {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn display_name(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SubscriptionTier` is never used
[INFO] [stdout]  --> src/services/mock_auth.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum SubscriptionTier {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]   --> src/services/mock_auth.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct User {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TierLimits` is never constructed
[INFO] [stdout]   --> src/services/mock_auth.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct TierLimits {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_limits` is never used
[INFO] [stdout]   --> src/services/mock_auth.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl SubscriptionTier {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 31 |     pub fn get_limits(&self) -> TierLimits {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MockAuthService` is never constructed
[INFO] [stdout]   --> src/services/mock_auth.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct MockAuthService;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_current_user` is never used
[INFO] [stdout]   --> src/services/mock_auth.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl MockAuthService {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 67 |     pub fn get_current_user() -> User {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `analyze_asset`, `analyze_multi_timeframe`, `get_fundamental_data`, and `get_dual_scores_batch` are never used
[INFO] [stdout]    --> src/services/inbestia_api.rs:26:18
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl InBestiaApiClient {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub async fn analyze_asset(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub async fn analyze_multi_timeframe(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub async fn get_fundamental_data(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub async fn get_dual_scores_batch(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScoringService` is never constructed
[INFO] [stdout]  --> src/services/scoring_service.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ScoringService {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/services/scoring_service.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl ScoringService {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_message` is never used
[INFO] [stdout]    --> src/services/websocket_client.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl WebSocketClient {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn send_message(&self, msg: &WebSocketMessage) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_by_id` and `get_active` are never used
[INFO] [stdout]   --> src/services/alert_service.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl AlertService {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn get_by_id(alert_id: &str) -> Option<Alert> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn get_active() -> Vec<Alert> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_error` is never used
[INFO] [stdout]   --> src/contexts/app_state.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl AppState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 15 |     pub fn clear_error(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ShortScore` and `Symbol` are never constructed
[INFO] [stdout]   --> src/routes/dashboard.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | enum SortBy {
[INFO] [stdout]    |      ------ variants in this enum
[INFO] [stdout] 21 |     LongScore,
[INFO] [stdout] 22 |     ShortScore,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 23 |     Confidence,
[INFO] [stdout] 24 |     Symbol,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SortBy` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/auth/protected_route.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_score_text_color` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn get_score_text_color(score: f64, is_long: bool) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_score_label` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:238:4
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn get_score_label(score: f64) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_confidence_text_color` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:267:4
[INFO] [stdout]     |
[INFO] [stdout] 267 | fn get_confidence_text_color(confidence: f64) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_confidence_bar_color` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:275:4
[INFO] [stdout]     |
[INFO] [stdout] 275 | fn get_confidence_bar_color(confidence: f64) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_action_recommendation` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:283:4
[INFO] [stdout]     |
[INFO] [stdout] 283 | fn get_action_recommendation(score: &DualScoreResponse) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_action_with_emoji` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:304:4
[INFO] [stdout]     |
[INFO] [stdout] 304 | fn get_action_with_emoji(score: &DualScoreResponse) -> (String, &'static str) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_top_drivers` is never used
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:385:4
[INFO] [stdout]     |
[INFO] [stdout] 385 | fn get_top_drivers(breakdown: &crate::types::api::ScoreBreakdown) -> Html {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiniProps` is never constructed
[INFO] [stdout]    --> src/components/scoring/dual_score_card.rs:413:12
[INFO] [stdout]     |
[INFO] [stdout] 413 | pub struct MiniProps {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/scoring/category_breakdown.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/scoring/confidence_meter.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/scoring/explanation_panel.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/charts/candlestick.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/charts/line_chart.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/common/button.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ButtonVariant` is never used
[INFO] [stdout]   --> src/components/common/button.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ButtonVariant {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/common/card.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Props` is never constructed
[INFO] [stdout]  --> src/components/common/modal.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Props {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_score` is never used
[INFO] [stdout]  --> src/utils/format.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub fn format_score(score: f64) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_percentage` is never used
[INFO] [stdout]  --> src/utils/format.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn format_percentage(value: f64) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_currency` is never used
[INFO] [stdout]   --> src/utils/format.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn format_currency(value: f64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_timestamp` is never used
[INFO] [stdout]   --> src/utils/format.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn format_timestamp(timestamp: i64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_api_error` is never used
[INFO] [stdout]  --> src/utils/api_client.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn handle_api_error(error: &ApiError) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_claims_from_token` is never used
[INFO] [stdout]  --> src/utils/jwt.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn get_claims_from_token(token: &str) -> Option<JwtClaims> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_current_token_expired` is never used
[INFO] [stdout]   --> src/utils/jwt.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn is_current_token_expired() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_rate_limits_from_token` is never used
[INFO] [stdout]   --> src/utils/jwt.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn get_rate_limits_from_token(token: &str) -> Option<RateLimits> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Size` is never used
[INFO] [stdout]   --> src/types/scoring.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum Size {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnalysisRequest` is never constructed
[INFO] [stdout]  --> src/types/api.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AnalysisRequest {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiTimeframeAnalysisRequest` is never constructed
[INFO] [stdout]   --> src/types/api.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct MultiTimeframeAnalysisRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompareRequest` is never constructed
[INFO] [stdout]   --> src/types/api.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct CompareRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScoreResponse` is never constructed
[INFO] [stdout]    --> src/types/api.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct ScoreResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CategoryScores` is never constructed
[INFO] [stdout]    --> src/types/api.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub struct CategoryScores {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimeframeAnalysisResult` is never constructed
[INFO] [stdout]    --> src/types/api.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct TimeframeAnalysisResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfluenceAnalysis` is never constructed
[INFO] [stdout]    --> src/types/api.rs:174:12
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub struct ConfluenceAnalysis {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerformanceMetrics` is never constructed
[INFO] [stdout]    --> src/types/api.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub struct PerformanceMetrics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiTimeframeMetadata` is never constructed
[INFO] [stdout]    --> src/types/api.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub struct MultiTimeframeMetadata {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiTimeframeAnalysisResponse` is never constructed
[INFO] [stdout]    --> src/types/api.rs:206:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct MultiTimeframeAnalysisResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FundamentalResponse` is never constructed
[INFO] [stdout]    --> src/types/api.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub struct FundamentalResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompareResult` is never constructed
[INFO] [stdout]    --> src/types/api.rs:255:12
[INFO] [stdout]     |
[INFO] [stdout] 255 | pub struct CompareResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompareResponse` is never constructed
[INFO] [stdout]    --> src/types/api.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct CompareResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateWatchlistRequest` is never constructed
[INFO] [stdout]    --> src/types/fibo.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct UpdateWatchlistRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display_name` is never used
[INFO] [stdout]   --> src/i18n/mod.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Language {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn display_name(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 01s
[INFO] running `Command { std: "docker" "inspect" "56bf6a61c9f60cf62abc18acc25e58d9c18483812098f791a6ba15627f1e3b31", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "56bf6a61c9f60cf62abc18acc25e58d9c18483812098f791a6ba15627f1e3b31", kill_on_drop: false }`
[INFO] [stdout] 56bf6a61c9f60cf62abc18acc25e58d9c18483812098f791a6ba15627f1e3b31
