[INFO] cloning repository https://github.com/linzigeer/dexx-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/linzigeer/dexx-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flinzigeer%2Fdexx-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flinzigeer%2Fdexx-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7c644311d4549bbee91ffccdcbf7d95311a81053
[INFO] checking linzigeer/dexx-rust against master#03c609abb6638f9d7f49f34326d4137d07f5cd61 for pr-155945
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flinzigeer%2Fdexx-rust" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/linzigeer/dexx-rust
[INFO] finished tweaking git repo https://github.com/linzigeer/dexx-rust
[INFO] tweaked toml for git repo https://github.com/linzigeer/dexx-rust written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/linzigeer/dexx-rust on toolchain 03c609abb6638f9d7f49f34326d4137d07f5cd61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/linzigeer/dexx-rust 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" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rust-multipart-rfc7578_2 v0.6.1
[INFO] [stderr]   Downloaded config v0.13.4
[INFO] [stderr]   Downloaded axum-test v14.10.0
[INFO] [stderr]   Downloaded auto-future v1.0.0
[INFO] [stderr]   Downloaded reserve-port v2.2.0
[INFO] [stderr]   Downloaded async-compression v0.4.23
[INFO] [stderr]   Downloaded redis v0.24.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4f5c54310fe1b1548db35f2c1d61c643c3779e7e33c4264217e2a4998da4b1e7
[INFO] running `Command { std: "docker" "start" "-a" "4f5c54310fe1b1548db35f2c1d61c643c3779e7e33c4264217e2a4998da4b1e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4f5c54310fe1b1548db35f2c1d61c643c3779e7e33c4264217e2a4998da4b1e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4f5c54310fe1b1548db35f2c1d61c643c3779e7e33c4264217e2a4998da4b1e7", kill_on_drop: false }`
[INFO] [stdout] 4f5c54310fe1b1548db35f2c1d61c643c3779e7e33c4264217e2a4998da4b1e7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fff41e60b9417350d6dd40ea81865179caaee64cd9fce107cc1220bb2235a421
[INFO] running `Command { std: "docker" "start" "-a" "fff41e60b9417350d6dd40ea81865179caaee64cd9fce107cc1220bb2235a421", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.2.24
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling const-oid v0.9.6
[INFO] [stderr]     Checking tokio v1.45.0
[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]     Checking digest v0.10.7
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling litemap v0.8.0
[INFO] [stderr]    Compiling writeable v0.6.1
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]    Compiling num-bigint-dig v0.8.4
[INFO] [stderr]    Compiling base64ct v1.7.3
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling openssl-sys v0.9.108
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking hashbrown v0.15.3
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking thiserror v2.0.12
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]     Checking indexmap v2.9.0
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling socket2 v0.5.9
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling semver v1.0.26
[INFO] [stderr]    Compiling tinyvec v1.9.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling tracing-core v0.1.33
[INFO] [stderr]    Compiling ahash v0.7.8
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling iana-time-zone v0.1.63
[INFO] [stderr]    Compiling time-core v0.1.4
[INFO] [stderr]    Compiling openssl v0.10.72
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]     Checking deranged v0.4.0
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]    Compiling crc v3.3.0
[INFO] [stderr]    Compiling pest v2.8.0
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling uuid v1.17.0
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]     Checking time v0.3.41
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling pest_meta v2.8.0
[INFO] [stderr]    Compiling rsa v0.9.8
[INFO] [stderr]    Compiling sqlx-core v0.7.4
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]    Compiling whoami v1.6.0
[INFO] [stderr]    Compiling tempfile v3.20.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling pest_generator v2.8.0
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]    Compiling sqlx-mysql v0.7.4
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking dlv-list v0.3.0
[INFO] [stderr]     Checking hyper-util v0.1.12
[INFO] [stderr]     Checking ordered-multimap v0.4.3
[INFO] [stderr]     Checking flate2 v1.1.1
[INFO] [stderr]    Compiling pest_derive v2.8.0
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.4
[INFO] [stderr]     Checking ron v0.7.1
[INFO] [stderr]     Checking simple_asn1 v0.6.3
[INFO] [stderr]     Checking pem v3.0.5
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking async-compression v0.4.23
[INFO] [stderr]     Checking rust-ini v0.18.0
[INFO] [stderr]     Checking tokio-retry v0.3.0
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking ed25519 v2.2.3
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]    Compiling sqlx-macros v0.7.4
[INFO] [stderr]     Checking toml v0.5.11
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking socket2 v0.4.10
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking ed25519-dalek v2.1.1
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking config v0.13.4
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]     Checking rust-multipart-rfc7578_2 v0.6.1
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking reserve-port v2.2.0
[INFO] [stderr]     Checking auto-future v1.0.0
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking axum-test v14.10.0
[INFO] [stderr]     Checking redis v0.24.0
[INFO] [stderr]     Checking dexx-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `http::StatusCode`
[INFO] [stdout]  --> src/handlers/solana.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     http::StatusCode,
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/blockchain/solana_client.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interval`
[INFO] [stdout]  --> src/blockchain/price_service.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::time::{interval, Interval};
[INFO] [stdout]   |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/blockchain/price_service.rs:14:27
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{info, warn, error, debug};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AppError`
[INFO] [stdout]   --> src/blockchain/transaction_listener.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::utils::{AppResult, AppError};
[INFO] [stdout]    |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AppError`
[INFO] [stdout]  --> src/blockchain/wallet_verifier.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::utils::{AppResult, AppError};
[INFO] [stdout]   |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/blockchain/wallet_verifier.rs:10:27
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{info, warn, error, debug};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `http::StatusCode`
[INFO] [stdout]  --> src/handlers/solana.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     http::StatusCode,
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/blockchain/solana_client.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interval`
[INFO] [stdout]  --> src/blockchain/price_service.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::time::{interval, Interval};
[INFO] [stdout]   |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/blockchain/price_service.rs:14:27
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{info, warn, error, debug};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AppError`
[INFO] [stdout]   --> src/blockchain/transaction_listener.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::utils::{AppResult, AppError};
[INFO] [stdout]    |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AppError`
[INFO] [stdout]  --> src/blockchain/wallet_verifier.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::utils::{AppResult, AppError};
[INFO] [stdout]   |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/blockchain/wallet_verifier.rs:10:27
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{info, warn, error, debug};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/blockchain/solana_client.rs:225:36
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 let data = base64::decode(&acc.data[0])
[INFO] [stdout]     |                                    ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/blockchain/solana_client.rs:298:55
[INFO] [stdout]     |
[INFO] [stdout] 298 | ...                   if let Ok(data) = base64::decode(data_str) {
[INFO] [stdout]     |                                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/blockchain/solana_client.rs:225:36
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 let data = base64::decode(&acc.data[0])
[INFO] [stdout]     |                                    ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/blockchain/solana_client.rs:298:55
[INFO] [stdout]     |
[INFO] [stdout] 298 | ...                   if let Ok(data) = base64::decode(data_str) {
[INFO] [stdout]     |                                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pool`
[INFO] [stdout]   --> src/repositories/database.rs:23:29
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn run_migrations(pool: &DatabasePool) -> AppResult<()> {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_pool`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/repositories/trade.rs:32:36
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub async fn find_by_id(&self, id: u32) -> AppResult<Option<Trade>> {
[INFO] [stdout]    |                                    ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]   --> src/repositories/trade.rs:37:41
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Trade>> {
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `limit`
[INFO] [stdout]   --> src/repositories/trade.rs:37:55
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Trade>> {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]   --> src/repositories/trade.rs:37:67
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Trade>> {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/repositories/trade.rs:42:45
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub async fn update_trade_status(&self, id: u32, status: &str, signature: Option<&str>) -> AppResult<()> {
[INFO] [stdout]    |                                             ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]   --> src/repositories/trade.rs:42:54
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub async fn update_trade_status(&self, id: u32, status: &str, signature: Option<&str>) -> AppResult<()> {
[INFO] [stdout]    |                                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signature`
[INFO] [stdout]   --> src/repositories/trade.rs:42:68
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub async fn update_trade_status(&self, id: u32, status: &str, signature: Option<&str>) -> AppResult<()> {
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_signature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commission`
[INFO] [stdout]   --> src/repositories/commission.rs:14:43
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub async fn create_commission(&self, commission: Commission) -> AppResult<u32> {
[INFO] [stdout]    |                                           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commission`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]   --> src/repositories/commission.rs:19:41
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Commission>> {
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `limit`
[INFO] [stdout]   --> src/repositories/commission.rs:19:55
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Commission>> {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]   --> src/repositories/commission.rs:19:67
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Commission>> {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/repositories/commission.rs:24:50
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub async fn update_commission_status(&self, id: u32, status: &str) -> AppResult<()> {
[INFO] [stdout]    |                                                  ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]   --> src/repositories/commission.rs:24:59
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub async fn update_commission_status(&self, id: u32, status: &str) -> AppResult<()> {
[INFO] [stdout]    |                                                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]   --> src/repositories/listen.rs:31:41
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Listen>> {
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `limit`
[INFO] [stdout]   --> src/repositories/listen.rs:31:55
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Listen>> {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]   --> src/repositories/listen.rs:31:67
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Listen>> {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/repositories/listen.rs:36:46
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub async fn update_listen_status(&self, id: u32, is_active: bool) -> AppResult<()> {
[INFO] [stdout]    |                                              ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_active`
[INFO] [stdout]   --> src/repositories/listen.rs:36:55
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub async fn update_listen_status(&self, id: u32, is_active: bool) -> AppResult<()> {
[INFO] [stdout]    |                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_active`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pool`
[INFO] [stdout]   --> src/repositories/database.rs:23:29
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn run_migrations(pool: &DatabasePool) -> AppResult<()> {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_pool`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:118:11
[INFO] [stdout]     |
[INFO] [stdout] 118 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 |     Json(req): Json<SearchRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:127:11
[INFO] [stdout]     |
[INFO] [stdout] 127 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:128:10
[INFO] [stdout]     |
[INFO] [stdout] 128 |     Json(req): Json<RankRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:136:11
[INFO] [stdout]     |
[INFO] [stdout] 136 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:137:10
[INFO] [stdout]     |
[INFO] [stdout] 137 |     Json(req): Json<TokenHolderRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:145:11
[INFO] [stdout]     |
[INFO] [stdout] 145 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:146:10
[INFO] [stdout]     |
[INFO] [stdout] 146 |     Json(req): Json<TradeLatestRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:154:11
[INFO] [stdout]     |
[INFO] [stdout] 154 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:155:10
[INFO] [stdout]     |
[INFO] [stdout] 155 |     Json(req): Json<WalletPositionRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:163:11
[INFO] [stdout]     |
[INFO] [stdout] 163 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:164:10
[INFO] [stdout]     |
[INFO] [stdout] 164 |     Json(req): Json<TokenPositionRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:172:11
[INFO] [stdout]     |
[INFO] [stdout] 172 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:173:10
[INFO] [stdout]     |
[INFO] [stdout] 173 |     Json(req): Json<MultiTokenInfoRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:181:11
[INFO] [stdout]     |
[INFO] [stdout] 181 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:182:10
[INFO] [stdout]     |
[INFO] [stdout] 182 |     Json(req): Json<TransactionVolumeRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:190:11
[INFO] [stdout]     |
[INFO] [stdout] 190 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:191:10
[INFO] [stdout]     |
[INFO] [stdout] 191 |     Json(req): Json<DailyTransactionVolumeRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:199:11
[INFO] [stdout]     |
[INFO] [stdout] 199 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/repositories/trade.rs:32:36
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub async fn find_by_id(&self, id: u32) -> AppResult<Option<Trade>> {
[INFO] [stdout]    |                                    ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]   --> src/repositories/trade.rs:37:41
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Trade>> {
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `limit`
[INFO] [stdout]   --> src/repositories/trade.rs:37:55
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Trade>> {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]   --> src/repositories/trade.rs:37:67
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Trade>> {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/repositories/trade.rs:42:45
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub async fn update_trade_status(&self, id: u32, status: &str, signature: Option<&str>) -> AppResult<()> {
[INFO] [stdout]    |                                             ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]   --> src/repositories/trade.rs:42:54
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub async fn update_trade_status(&self, id: u32, status: &str, signature: Option<&str>) -> AppResult<()> {
[INFO] [stdout]    |                                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signature`
[INFO] [stdout]   --> src/repositories/trade.rs:42:68
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub async fn update_trade_status(&self, id: u32, status: &str, signature: Option<&str>) -> AppResult<()> {
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_signature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commission`
[INFO] [stdout]   --> src/repositories/commission.rs:14:43
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub async fn create_commission(&self, commission: Commission) -> AppResult<u32> {
[INFO] [stdout]    |                                           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commission`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]   --> src/repositories/commission.rs:19:41
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Commission>> {
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `limit`
[INFO] [stdout]   --> src/repositories/commission.rs:19:55
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Commission>> {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]   --> src/repositories/commission.rs:19:67
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Commission>> {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/repositories/commission.rs:24:50
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub async fn update_commission_status(&self, id: u32, status: &str) -> AppResult<()> {
[INFO] [stdout]    |                                                  ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]   --> src/repositories/commission.rs:24:59
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub async fn update_commission_status(&self, id: u32, status: &str) -> AppResult<()> {
[INFO] [stdout]    |                                                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]   --> src/repositories/listen.rs:31:41
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Listen>> {
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `limit`
[INFO] [stdout]   --> src/repositories/listen.rs:31:55
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Listen>> {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]   --> src/repositories/listen.rs:31:67
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Listen>> {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/repositories/listen.rs:36:46
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub async fn update_listen_status(&self, id: u32, is_active: bool) -> AppResult<()> {
[INFO] [stdout]    |                                              ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_active`
[INFO] [stdout]   --> src/repositories/listen.rs:36:55
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub async fn update_listen_status(&self, id: u32, is_active: bool) -> AppResult<()> {
[INFO] [stdout]    |                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_active`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/handlers/response.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         AppError::Business { message } => (400, message),
[INFO] [stdout]    |         ------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 87 |             AppError::Business { message } => (400, message),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/handlers/response.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |         AppError::ExternalService { service, message } => (502, format!("{}: {}", service, message)),
[INFO] [stdout]    |         ---------------------------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 88 |             AppError::ExternalService { service, message } => (502, format!("{}: {}", service, message)),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:118:11
[INFO] [stdout]     |
[INFO] [stdout] 118 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 |     Json(req): Json<SearchRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:127:11
[INFO] [stdout]     |
[INFO] [stdout] 127 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:128:10
[INFO] [stdout]     |
[INFO] [stdout] 128 |     Json(req): Json<RankRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:136:11
[INFO] [stdout]     |
[INFO] [stdout] 136 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:137:10
[INFO] [stdout]     |
[INFO] [stdout] 137 |     Json(req): Json<TokenHolderRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:145:11
[INFO] [stdout]     |
[INFO] [stdout] 145 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:146:10
[INFO] [stdout]     |
[INFO] [stdout] 146 |     Json(req): Json<TradeLatestRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:154:11
[INFO] [stdout]     |
[INFO] [stdout] 154 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:155:10
[INFO] [stdout]     |
[INFO] [stdout] 155 |     Json(req): Json<WalletPositionRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:163:11
[INFO] [stdout]     |
[INFO] [stdout] 163 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:164:10
[INFO] [stdout]     |
[INFO] [stdout] 164 |     Json(req): Json<TokenPositionRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:172:11
[INFO] [stdout]     |
[INFO] [stdout] 172 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:173:10
[INFO] [stdout]     |
[INFO] [stdout] 173 |     Json(req): Json<MultiTokenInfoRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:181:11
[INFO] [stdout]     |
[INFO] [stdout] 181 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:182:10
[INFO] [stdout]     |
[INFO] [stdout] 182 |     Json(req): Json<TransactionVolumeRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:190:11
[INFO] [stdout]     |
[INFO] [stdout] 190 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]    --> src/handlers/solana.rs:191:10
[INFO] [stdout]     |
[INFO] [stdout] 191 |     Json(req): Json<DailyTransactionVolumeRequest>,
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/handlers/solana.rs:199:11
[INFO] [stdout]     |
[INFO] [stdout] 199 |     State(state): State<AppState>,
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/handlers/response.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         AppError::Business { message } => (400, message),
[INFO] [stdout]    |         ------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 87 |             AppError::Business { message } => (400, message),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/handlers/response.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |         AppError::ExternalService { service, message } => (502, format!("{}: {}", service, message)),
[INFO] [stdout]    |         ---------------------------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 88 |             AppError::ExternalService { service, message } => (502, format!("{}: {}", service, message)),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `solana_client`
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:152:9
[INFO] [stdout]     |
[INFO] [stdout] 152 |         solana_client: &SolanaClientService,
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_solana_client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `transaction_data`
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:238:9
[INFO] [stdout]     |
[INFO] [stdout] 238 |         transaction_data: &serde_json::Value,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_transaction_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `transaction_data`
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:250:9
[INFO] [stdout]     |
[INFO] [stdout] 250 |         transaction_data: &serde_json::Value,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_transaction_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `transaction_data`
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:261:9
[INFO] [stdout]     |
[INFO] [stdout] 261 |         transaction_data: &serde_json::Value,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_transaction_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 |         let mut csprng = OsRng;
[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: `csprng`
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 |         let mut csprng = OsRng;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_csprng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `solana_client`
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:152:9
[INFO] [stdout]     |
[INFO] [stdout] 152 |         solana_client: &SolanaClientService,
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_solana_client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `transaction_data`
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:238:9
[INFO] [stdout]     |
[INFO] [stdout] 238 |         transaction_data: &serde_json::Value,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_transaction_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `transaction_data`
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:250:9
[INFO] [stdout]     |
[INFO] [stdout] 250 |         transaction_data: &serde_json::Value,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_transaction_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `transaction_data`
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:261:9
[INFO] [stdout]     |
[INFO] [stdout] 261 |         transaction_data: &serde_json::Value,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_transaction_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 |         let mut csprng = OsRng;
[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: `csprng`
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 |         let mut csprng = OsRng;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_csprng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/utils/error.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum AppError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Crypto(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     NotFound(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     Unauthorized(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Forbidden(String),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     SolanaClient(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     EthereumClient(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     PriceServiceError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     WalletVerificationError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     TransactionParsingError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     Authentication { message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     Authorization { message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     Business { message: String },
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     ExternalService { service: String, message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/utils/error.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl AppError {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout]  79 |     pub fn authentication(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn authorization(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn business(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn external_service(service: impl Into<String>, message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn solana_client(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn ethereum_client(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn blockchain_error(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn price_service_error(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn wallet_verification_error(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn transaction_parsing_error(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn crypto(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn not_found(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn unauthorized(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn forbidden(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `hash_password`, `verify_password`, `generate_random_string`, `generate_invite_code`, and `parse_invite_code` are never used
[INFO] [stdout]    --> src/utils/crypto.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl CryptoUtils {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub fn hash_password(password: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn verify_password(password: &str, hash: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn generate_random_string(length: usize) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn generate_invite_code(user_id: u32) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn parse_invite_code(_invite_code: &str) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimeUtils` is never constructed
[INFO] [stdout]  --> src/utils/time.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TimeUtils;
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/utils/time.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl TimeUtils {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout]  7 |     /// 获取当前UTC时间戳（秒）
[INFO] [stdout]  8 |     pub fn now_timestamp() -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn now_timestamp_millis() -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn now_utc() -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn now_local() -> DateTime<Local> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn timestamp_to_utc(timestamp: i64) -> Option<DateTime<Utc>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn timestamp_to_local(timestamp: i64) -> Option<DateTime<Local>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn format_datetime(dt: &DateTime<Utc>, format: &str) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn parse_datetime(s: &str, format: &str) -> Result<DateTime<Utc>, chrono::ParseError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn today_start_utc() -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn today_end_utc() -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn days_ago(days: i64) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn hours_ago(hours: i64) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn minutes_ago(minutes: i64) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn is_within_range(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn diff_seconds(time1: &DateTime<Utc>, time2: &DateTime<Utc>) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TimePeriod` is never used
[INFO] [stdout]    --> src/utils/time.rs:104:10
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub enum TimePeriod {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_seconds` and `to_string` are never used
[INFO] [stdout]    --> src/utils/time.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl TimePeriod {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 118 |     pub fn to_seconds(&self) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn to_string(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECONDS_PER_MINUTE` is never used
[INFO] [stdout]   --> src/utils/time.rs:92:15
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub const SECONDS_PER_MINUTE: i64 = 60;
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECONDS_PER_HOUR` is never used
[INFO] [stdout]   --> src/utils/time.rs:93:15
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub const SECONDS_PER_HOUR: i64 = 3600;
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECONDS_PER_DAY` is never used
[INFO] [stdout]   --> src/utils/time.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub const SECONDS_PER_DAY: i64 = 86400;
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECONDS_PER_WEEK` is never used
[INFO] [stdout]   --> src/utils/time.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub const SECONDS_PER_WEEK: i64 = 604800;
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATETIME_FORMAT` is never used
[INFO] [stdout]   --> src/utils/time.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub const DATETIME_FORMAT: &str = "%Y-%m-%d %H:%M:%S";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATE_FORMAT` is never used
[INFO] [stdout]   --> src/utils/time.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub const DATE_FORMAT: &str = "%Y-%m-%d";
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TIME_FORMAT` is never used
[INFO] [stdout]   --> src/utils/time.rs:99:15
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub const TIME_FORMAT: &str = "%H:%M:%S";
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parent` is never read
[INFO] [stdout]   --> src/models/user.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct User {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub parent: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `User` 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 `table_name`, `new`, and `with_parent` are never used
[INFO] [stdout]   --> src/models/user.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl User {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] 26 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn new(username: String, email: String, password: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn with_parent(username: String, email: String, password: String, parent: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateUserRequest` is never constructed
[INFO] [stdout]   --> src/models/user.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct CreateUserRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginRequest` is never constructed
[INFO] [stdout]   --> src/models/user.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct LoginRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserResponse` is never constructed
[INFO] [stdout]   --> src/models/user.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct UserResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginResponse` is never constructed
[INFO] [stdout]    --> src/models/user.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub struct LoginResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenSocial` is never constructed
[INFO] [stdout]  --> src/models/solana.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TokenSocial {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/models/solana.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl SolToken {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 41 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_social(&self) -> Result<TokenSocial, serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn set_social(&mut self, social: &TokenSocial) -> Result<(), serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn get_price_change(&self) -> Result<HashMap<String, f64>, serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn set_price_change(&mut self, price_change: &HashMap<String, f64>) -> Result<(), serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn get_volume(&self) -> Result<HashMap<String, serde_json::Value>, serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn set_volume(&mut self, volume: &HashMap<String, serde_json::Value>) -> Result<(), serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SolTransaction` is never constructed
[INFO] [stdout]   --> src/models/solana.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct SolTransaction {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]    --> src/models/solana.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl SolTransaction {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 110 |     pub fn table_name() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]    --> src/models/solana.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl SolHolder {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 130 |     pub fn table_name() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SolPool` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub struct SolPool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]    --> src/models/solana.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | impl SolPool {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 154 |     pub fn table_name() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SolStat` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:160:12
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct SolStat {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]    --> src/models/solana.rs:178:12
[INFO] [stdout]     |
[INFO] [stdout] 177 | impl SolStat {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 178 |     pub fn table_name() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenResponse` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:185:12
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub struct TokenResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionResponse` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub struct TransactionResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenInfoRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:252:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub struct TokenInfoRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenPriceRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub struct TokenPriceRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct SearchRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RankRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct RankRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenHolderRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:274:12
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub struct TokenHolderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeLatestRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:280:12
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub struct TradeLatestRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletPositionRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:286:12
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub struct WalletPositionRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenPositionRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub struct TokenPositionRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiTokenInfoRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:297:12
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub struct MultiTokenInfoRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionVolumeRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:302:12
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub struct TransactionVolumeRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:314:12
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub struct WebhookRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trade` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:340:12
[INFO] [stdout]     |
[INFO] [stdout] 340 | pub struct Trade {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]   --> src/models/trade.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Trade {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 20 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTradeRequest` is never constructed
[INFO] [stdout]   --> src/models/trade.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct CreateTradeRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeResponse` is never constructed
[INFO] [stdout]   --> src/models/trade.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct TradeResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Commission` is never constructed
[INFO] [stdout]  --> src/models/commission.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Commission {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]   --> src/models/commission.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl Commission {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommissionResponse` is never constructed
[INFO] [stdout]   --> src/models/commission.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct CommissionResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Listen` is never constructed
[INFO] [stdout]  --> src/models/listen.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Listen {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]   --> src/models/listen.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Listen {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateListenRequest` is never constructed
[INFO] [stdout]   --> src/models/listen.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct CreateListenRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListenResponse` is never constructed
[INFO] [stdout]   --> src/models/listen.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct ListenResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `trade`, `commission`, `listen`, and `redis` are never read
[INFO] [stdout]   --> src/repositories/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct RepositoriesImpl {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub trade: TradeRepository,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 25 |     pub commission: CommissionRepository,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 26 |     pub listen: ListenRepository,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 27 |     pub redis: RedisRepository,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `trade_repository`, `commission_repository`, `listen_repository`, and `redis_repository` are never used
[INFO] [stdout]   --> src/repositories/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl RepositoriesImpl {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn trade_repository(&self) -> &TradeRepository {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn commission_repository(&self) -> &CommissionRepository {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn listen_repository(&self) -> &ListenRepository {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn redis_repository(&self) -> &RedisRepository {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_migrations` is never used
[INFO] [stdout]   --> src/repositories/database.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn run_migrations(pool: &DatabasePool) -> AppResult<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health_check` is never used
[INFO] [stdout]   --> src/repositories/database.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub async fn health_check(pool: &DatabasePool) -> AppResult<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `connection` is never read
[INFO] [stdout]  --> src/repositories/redis_repo.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct RedisRepository {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 8 |     connection: ConnectionManager,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/repositories/redis_repo.rs:26:18
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl RedisRepository {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub async fn get<T>(&mut self, key: &str) -> AppResult<Option<T>>
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub async fn set<T>(&mut self, key: &str, value: &T, ttl_seconds: Option<usize>) -> AppResult<()>
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub async fn delete(&mut self, key: &str) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn exists(&mut self, key: &str) -> AppResult<bool> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub async fn increment(&mut self, key: &str) -> AppResult<i64> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn set_string(&mut self, key: &str, value: &str, ttl_seconds: Option<usize>) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub async fn get_string(&mut self, key: &str) -> AppResult<Option<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn health_check(&mut self) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn cache_token_info<T>(&mut self, mint: &str, data: &T, ttl_seconds: usize) -> AppResult<()>
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub async fn get_cached_token_info<T>(&mut self, mint: &str) -> AppResult<Option<T>>
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn cache_user_session(&mut self, user_id: u32, token: &str, ttl_seconds: usize) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub async fn get_user_session(&mut self, user_id: u32) -> AppResult<Option<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn invalidate_user_session(&mut self, user_id: u32) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health_check` is never used
[INFO] [stdout]    --> src/repositories/redis_repo.rs:129:14
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub async fn health_check(config: &Config) -> AppResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/repositories/user.rs:15:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl UserRepository {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  15 |     pub async fn create_user(&self, request: CreateUserRequest) -> AppResult<User> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub async fn find_by_id(&self, id: u32) -> AppResult<Option<User>> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub async fn update_user(&self, user: &User) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub async fn update_commission(&self, user_id: u32, sol_commission: f64, base_commission: f64, eth_commission: f64) -> AppResul...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub async fn verify_password(&self, email: &str, password: &str) -> AppResult<Option<User>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub async fn delete_user(&self, id: u32) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub async fn list_users(&self, limit: u32, offset: u32) -> AppResult<Vec<User>> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub async fn count_users(&self) -> AppResult<i64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/repositories/solana.rs:33:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl SolanaRepository {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub async fn list_tokens(&self, limit: u32, offset: u32, ecosystem: Option<&str>) -> AppResult<Vec<SolToken>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn update_token_price(&self, mint: &str, price: f64, market_cap: f64) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub async fn create_transaction(&self, transaction: &SolTransaction) -> AppResult<u32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn find_transactions_by_mint(&self, mint: &str, limit: u32, offset: u32) -> AppResult<Vec<SolTransaction>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn find_transactions_by_signer(&self, signer: &str, limit: u32, offset: u32) -> AppResult<Vec<SolTransaction>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub async fn find_holders_by_mint(&self, mint: &str, limit: u32, offset: u32) -> AppResult<Vec<SolHolder>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn update_holder(&self, mint: &str, holder: &str, amount: f64, price_usd: f64, bet: f64, pnl: f64) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn find_pool_by_curve(&self, curve: &str) -> AppResult<Option<SolPool>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub async fn get_daily_volume(&self, date: DateTime<Utc>) -> AppResult<f64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub async fn get_token_stats(&self, mint: &str, start_time: DateTime<Utc>, end_time: DateTime<Utc>) -> AppResult<Option<SolStat...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]  --> src/repositories/trade.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TradeRepository {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 6 |     pool: MySqlPool,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_trade`, `find_by_id`, `find_by_user_id`, and `update_trade_status` are never used
[INFO] [stdout]   --> src/repositories/trade.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl TradeRepository {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn create_trade(&self, user_id: u32, request: CreateTradeRequest) -> AppResult<Trade> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub async fn find_by_id(&self, id: u32) -> AppResult<Option<Trade>> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Trade>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub async fn update_trade_status(&self, id: u32, status: &str, signature: Option<&str>) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]  --> src/repositories/commission.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct CommissionRepository {
[INFO] [stdout]   |            -------------------- field in this struct
[INFO] [stdout] 6 |     pool: MySqlPool,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_commission`, `find_by_user_id`, and `update_commission_status` are never used
[INFO] [stdout]   --> src/repositories/commission.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl CommissionRepository {
[INFO] [stdout]    | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn create_commission(&self, commission: Commission) -> AppResult<u32> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Commission>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub async fn update_commission_status(&self, id: u32, status: &str) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]  --> src/repositories/listen.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ListenRepository {
[INFO] [stdout]   |            ---------------- field in this struct
[INFO] [stdout] 6 |     pool: MySqlPool,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_listen`, `find_by_user_id`, and `update_listen_status` are never used
[INFO] [stdout]   --> src/repositories/listen.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ListenRepository {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn create_listen(&self, user_id: u32, request: CreateListenRequest) -> AppResult<Listen> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Listen>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn update_listen_status(&self, id: u32, is_active: bool) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletLoginRequest` is never constructed
[INFO] [stdout]   --> src/services/user.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct WalletLoginRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletLoginResponse` is never constructed
[INFO] [stdout]   --> src/services/user.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct WalletLoginResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_username`, `parse_invite_code`, `find_by_email`, and `user_info` are never used
[INFO] [stdout]    --> src/services/user.rs:79:8
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl UserServiceImpl {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  79 |     fn generate_username(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn parse_invite_code(&self, invite_code: &str) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn find_by_email(&self, email: &str) -> AppResult<Option<User>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn user_info(&self, uid: u32) -> AppResult<User> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenQueryRequest` is never constructed
[INFO] [stdout]   --> src/services/solana.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TokenQueryRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenListResponse` is never constructed
[INFO] [stdout]   --> src/services/solana.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct TokenListResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/services/solana.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct SolanaServiceImpl {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 28 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `build_cache_key` and `update_token_price` are never used
[INFO] [stdout]   --> src/services/solana.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl SolanaServiceImpl {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn build_cache_key(&self, prefix: &str, key: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub async fn update_token_price(&self, mint: &str, price: f64, market_cap: f64) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `network`, `signature`, and `invite_code` are never read
[INFO] [stdout]   --> src/handlers/user.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct WalletLoginRequest {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 13 |     pub wallet_address: String,
[INFO] [stdout] 14 |     pub network: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |     pub signature: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 16 |     pub invite_code: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WalletLoginRequest` 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 `email`, `password`, `username`, and `invite_code` are never read
[INFO] [stdout]   --> src/handlers/user.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct UserRegisterRequest {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 38 |     pub email: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 39 |     pub password: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 40 |     pub username: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 41 |     pub invite_code: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserRegisterRequest` 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 `old_password` and `new_password` are never read
[INFO] [stdout]   --> src/handlers/user.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct UpdatePasswordRequest {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] 57 |     pub old_password: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 58 |     pub new_password: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UpdatePasswordRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `username` is never read
[INFO] [stdout]   --> src/handlers/user.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct EditUsernameRequest {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 64 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditUsernameRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `email` is never read
[INFO] [stdout]   --> src/handlers/user.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct FindPasswordRequest {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 70 |     pub email: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FindPasswordRequest` 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 `keyword` and `limit` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct SearchRequest {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 29 |     pub keyword: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 30 |     pub limit: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchRequest` 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 `sort_by`, `limit`, and `offset` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct RankRequest {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 36 |     pub sort_by: Option<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 37 |     pub limit: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 38 |     pub offset: Option<u32>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RankRequest` 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 `mint`, `limit`, and `offset` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct TokenHolderRequest {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 44 |     pub mint: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 45 |     pub limit: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 46 |     pub offset: Option<u32>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenHolderRequest` 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 `mint` and `limit` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct TradeLatestRequest {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 52 |     pub mint: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 53 |     pub limit: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TradeLatestRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wallet` is never read
[INFO] [stdout]   --> src/handlers/solana.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct WalletPositionRequest {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] 59 |     pub wallet: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WalletPositionRequest` 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 `mint` and `wallet` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct TokenPositionRequest {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] 65 |     pub mint: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 66 |     pub wallet: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenPositionRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mints` is never read
[INFO] [stdout]   --> src/handlers/solana.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct MultiTokenInfoRequest {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] 72 |     pub mints: Vec<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MultiTokenInfoRequest` 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 `start_time` and `end_time` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct TransactionVolumeRequest {
[INFO] [stdout]    |            ------------------------ fields in this struct
[INFO] [stdout] 78 |     pub start_time: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 79 |     pub end_time: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransactionVolumeRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `transaction` is never read
[INFO] [stdout]   --> src/handlers/solana.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct WebhookRequest {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 85 |     pub transaction: serde_json::Value,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WebhookRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cors_middleware` is never used
[INFO] [stdout]   --> src/handlers/middleware.rs:49:14
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub async fn cors_middleware(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rate_limit_middleware` is never used
[INFO] [stdout]    --> src/handlers/middleware.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub async fn rate_limit_middleware(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_user_from_request` is never used
[INFO] [stdout]    --> src/handlers/middleware.rs:120:8
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub fn get_user_from_request(request: &Request) -> Option<&User> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `paginated` is never used
[INFO] [stdout]    --> src/handlers/response.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn paginated<T: Serialize>(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUCCESS` is never used
[INFO] [stdout]    --> src/handlers/response.rs:150:15
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub const SUCCESS: i32 = 0;
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARAM_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:151:15
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub const PARAM_ERROR: i32 = 400;
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNAUTHORIZED` is never used
[INFO] [stdout]    --> src/handlers/response.rs:152:15
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub const UNAUTHORIZED: i32 = 401;
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FORBIDDEN` is never used
[INFO] [stdout]    --> src/handlers/response.rs:153:15
[INFO] [stdout]     |
[INFO] [stdout] 153 |     pub const FORBIDDEN: i32 = 403;
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NOT_FOUND` is never used
[INFO] [stdout]    --> src/handlers/response.rs:154:15
[INFO] [stdout]     |
[INFO] [stdout] 154 |     pub const NOT_FOUND: i32 = 404;
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:155:15
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub const INTERNAL_ERROR: i32 = 500;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATABASE_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:158:15
[INFO] [stdout]     |
[INFO] [stdout] 158 |     pub const DATABASE_ERROR: i32 = 1003;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REDIS_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:159:15
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub const REDIS_ERROR: i32 = 1004;
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VALIDATION_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:160:15
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub const VALIDATION_ERROR: i32 = 1005;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop_background_services` is never used
[INFO] [stdout]   --> src/blockchain/mod.rs:60:18
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl BlockchainServices {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub async fn stop_background_services(&self) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `jsonrpc` and `id` are never read
[INFO] [stdout]   --> src/blockchain/solana_client.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct RpcResponse<T> {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 27 |     jsonrpc: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 28 |     id: u64,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RpcResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data` is never read
[INFO] [stdout]   --> src/blockchain/solana_client.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct RpcError {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     data: Option<Value>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RpcError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountInfo` is never constructed
[INFO] [stdout]   --> src/blockchain/solana_client.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct AccountInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenAccount` is never constructed
[INFO] [stdout]   --> src/blockchain/solana_client.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct TokenAccount {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mint` is never constructed
[INFO] [stdout]   --> src/blockchain/solana_client.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct Mint {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenInfo` is never constructed
[INFO] [stdout]   --> src/blockchain/solana_client.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct TokenInfo {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/blockchain/solana_client.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct SolanaClientService {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/blockchain/solana_client.rs:166:18
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl SolanaClientService {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub async fn get_account_info(&self, pubkey: &str) -> AppResult<Option<AccountInfo>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     fn parse_token_account_data(&self, data: &[u8]) -> AppResult<TokenAccount> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub async fn get_token_account_info(&self, pubkey: &str) -> AppResult<Option<TokenAccount>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub async fn get_token_supply(&self, mint_pubkey: &str) -> AppResult<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub async fn get_token_account_balance(&self, token_account: &str) -> AppResult<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub async fn get_token_accounts_by_owner(&self, owner: &str) -> AppResult<Vec<(String, TokenAccount)>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub async fn get_token_info(&self, mint_pubkey: &str) -> AppResult<Option<TokenInfo>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub async fn get_transaction(&self, signature: &str) -> AppResult<Option<Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `mint_symbol`, `vs_token`, and `vs_token_symbol` are never read
[INFO] [stdout]   --> src/blockchain/price_service.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct JupiterTokenPrice {
[INFO] [stdout]    |        ----------------- fields in this struct
[INFO] [stdout] 35 |     id: String,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 36 |     #[serde(rename = "mintSymbol")]
[INFO] [stdout] 37 |     mint_symbol: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 38 |     #[serde(rename = "vsToken")]
[INFO] [stdout] 39 |     vs_token: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 40 |     #[serde(rename = "vsTokenSymbol")]
[INFO] [stdout] 41 |     vs_token_symbol: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `JupiterTokenPrice` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoinGeckoResponse` is never constructed
[INFO] [stdout]   --> src/blockchain/price_service.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct CoinGeckoResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoinGeckoPrice` is never constructed
[INFO] [stdout]   --> src/blockchain/price_service.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct CoinGeckoPrice {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config` and `update_interval` are never read
[INFO] [stdout]   --> src/blockchain/price_service.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct PriceService {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 62 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     update_interval: Option<Interval>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fetch_coingecko_prices`, `get_token_price`, `stop_price_updates`, and `cleanup_expired_cache` are never used
[INFO] [stdout]    --> src/blockchain/price_service.rs:129:14
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl PriceService {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     async fn fetch_coingecko_prices(&self, coin_ids: &[String]) -> AppResult<HashMap<String, PriceData>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub async fn get_token_price(&self, mint: &str) -> AppResult<Option<PriceData>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub async fn stop_price_updates(&self) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     pub async fn cleanup_expired_cache(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `slot` and `timestamp` are never read
[INFO] [stdout]   --> src/blockchain/transaction_listener.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     TokenTransfer {
[INFO] [stdout]    |     ------------- fields in this variant
[INFO] [stdout] ...
[INFO] [stdout] 24 |         slot: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 25 |         timestamp: chrono::DateTime<chrono::Utc>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransactionEvent` 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: variants `TokenSwap` and `TokenMint` are never constructed
[INFO] [stdout]   --> src/blockchain/transaction_listener.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum TransactionEvent {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 28 |     TokenSwap {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     TokenMint {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransactionEvent` 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 `event_sender` is never read
[INFO] [stdout]   --> src/blockchain/transaction_listener.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct TransactionListener {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |     event_sender: Option<mpsc::UnboundedSender<TransactionEvent>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `stop_listening`, `watch_address`, and `watch_token` are never used
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:143:18
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl TransactionListener {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub async fn stop_listening(&self) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub async fn watch_address(&self, address: &str) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub async fn watch_token(&self, mint: &str) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionParser` is never constructed
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub struct TransactionParser;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_token_transfer`, `parse_token_swap`, and `parse_token_mint` are never used
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:236:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl TransactionParser {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout] 235 |     /// 解析代币转账交易
[INFO] [stdout] 236 |     pub fn parse_token_transfer(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn parse_token_swap(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn parse_token_mint(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/blockchain/wallet_verifier.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct WalletVerifier {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 14 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]   --> src/blockchain/wallet_verifier.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct SignatureVerificationResult {
[INFO] [stdout]    |            --------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub message: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SignatureVerificationResult` 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: methods `verify_token_ownership`, `verify_mint_authority`, `verify_multiple_signatures`, and `generate_test_signature` are never used
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:205:18
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl WalletVerifier {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub async fn verify_token_ownership(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub async fn verify_mint_authority(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn verify_multiple_signatures(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn generate_test_signature(&self, message: &str) -> AppResult<(String, String)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WalletType` is never used
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:271:10
[INFO] [stdout]     |
[INFO] [stdout] 271 | pub enum WalletType {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_user_agent` is never used
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:280:12
[INFO] [stdout]     |
[INFO] [stdout] 278 | impl WalletType {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 279 |     /// 从用户代理字符串识别钱包类型
[INFO] [stdout] 280 |     pub fn from_user_agent(user_agent: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletConnection` is never constructed
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct WalletConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_activity`, `mark_verified`, and `is_expired` are never used
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:305:12
[INFO] [stdout]     |
[INFO] [stdout] 303 | impl WalletConnection {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 304 |     /// 创建新的钱包连接
[INFO] [stdout] 305 |     pub fn new(address: String, wallet_type: WalletType) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn update_activity(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn mark_verified(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn is_expired(&self, timeout_minutes: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/utils/error.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum AppError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Crypto(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     NotFound(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     Unauthorized(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Forbidden(String),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     SolanaClient(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     EthereumClient(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     PriceServiceError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     WalletVerificationError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     TransactionParsingError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     Authentication { message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     Authorization { message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     Business { message: String },
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     ExternalService { service: String, message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/utils/error.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl AppError {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout]  79 |     pub fn authentication(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn authorization(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn business(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn external_service(service: impl Into<String>, message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn solana_client(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn ethereum_client(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn blockchain_error(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn price_service_error(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn wallet_verification_error(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn transaction_parsing_error(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn crypto(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn not_found(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn unauthorized(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn forbidden(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `hash_password`, `verify_password`, `generate_random_string`, `generate_invite_code`, and `parse_invite_code` are never used
[INFO] [stdout]    --> src/utils/crypto.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl CryptoUtils {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub fn hash_password(password: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn verify_password(password: &str, hash: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn generate_random_string(length: usize) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn generate_invite_code(user_id: u32) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn parse_invite_code(_invite_code: &str) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimeUtils` is never constructed
[INFO] [stdout]  --> src/utils/time.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TimeUtils;
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/utils/time.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl TimeUtils {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout]  7 |     /// 获取当前UTC时间戳（秒）
[INFO] [stdout]  8 |     pub fn now_timestamp() -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn now_timestamp_millis() -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn now_utc() -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn now_local() -> DateTime<Local> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn timestamp_to_utc(timestamp: i64) -> Option<DateTime<Utc>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn timestamp_to_local(timestamp: i64) -> Option<DateTime<Local>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn format_datetime(dt: &DateTime<Utc>, format: &str) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn parse_datetime(s: &str, format: &str) -> Result<DateTime<Utc>, chrono::ParseError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn today_start_utc() -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn today_end_utc() -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn days_ago(days: i64) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn hours_ago(hours: i64) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn minutes_ago(minutes: i64) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn is_within_range(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn diff_seconds(time1: &DateTime<Utc>, time2: &DateTime<Utc>) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TimePeriod` is never used
[INFO] [stdout]    --> src/utils/time.rs:104:10
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub enum TimePeriod {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_seconds` and `to_string` are never used
[INFO] [stdout]    --> src/utils/time.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl TimePeriod {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 118 |     pub fn to_seconds(&self) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn to_string(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECONDS_PER_MINUTE` is never used
[INFO] [stdout]   --> src/utils/time.rs:92:15
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub const SECONDS_PER_MINUTE: i64 = 60;
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECONDS_PER_HOUR` is never used
[INFO] [stdout]   --> src/utils/time.rs:93:15
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub const SECONDS_PER_HOUR: i64 = 3600;
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECONDS_PER_DAY` is never used
[INFO] [stdout]   --> src/utils/time.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub const SECONDS_PER_DAY: i64 = 86400;
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECONDS_PER_WEEK` is never used
[INFO] [stdout]   --> src/utils/time.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub const SECONDS_PER_WEEK: i64 = 604800;
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATETIME_FORMAT` is never used
[INFO] [stdout]   --> src/utils/time.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub const DATETIME_FORMAT: &str = "%Y-%m-%d %H:%M:%S";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATE_FORMAT` is never used
[INFO] [stdout]   --> src/utils/time.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub const DATE_FORMAT: &str = "%Y-%m-%d";
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TIME_FORMAT` is never used
[INFO] [stdout]   --> src/utils/time.rs:99:15
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub const TIME_FORMAT: &str = "%H:%M:%S";
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parent` is never read
[INFO] [stdout]   --> src/models/user.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct User {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub parent: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `User` 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 `table_name`, `new`, and `with_parent` are never used
[INFO] [stdout]   --> src/models/user.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl User {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] 26 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn new(username: String, email: String, password: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn with_parent(username: String, email: String, password: String, parent: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateUserRequest` is never constructed
[INFO] [stdout]   --> src/models/user.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct CreateUserRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginRequest` is never constructed
[INFO] [stdout]   --> src/models/user.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct LoginRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserResponse` is never constructed
[INFO] [stdout]   --> src/models/user.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct UserResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginResponse` is never constructed
[INFO] [stdout]    --> src/models/user.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub struct LoginResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenSocial` is never constructed
[INFO] [stdout]  --> src/models/solana.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TokenSocial {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/models/solana.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl SolToken {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 41 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_social(&self) -> Result<TokenSocial, serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn set_social(&mut self, social: &TokenSocial) -> Result<(), serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn get_price_change(&self) -> Result<HashMap<String, f64>, serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn set_price_change(&mut self, price_change: &HashMap<String, f64>) -> Result<(), serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn get_volume(&self) -> Result<HashMap<String, serde_json::Value>, serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn set_volume(&mut self, volume: &HashMap<String, serde_json::Value>) -> Result<(), serde_json::Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SolTransaction` is never constructed
[INFO] [stdout]   --> src/models/solana.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct SolTransaction {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]    --> src/models/solana.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl SolTransaction {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 110 |     pub fn table_name() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]    --> src/models/solana.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl SolHolder {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 130 |     pub fn table_name() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SolPool` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub struct SolPool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]    --> src/models/solana.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | impl SolPool {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 154 |     pub fn table_name() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SolStat` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:160:12
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct SolStat {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]    --> src/models/solana.rs:178:12
[INFO] [stdout]     |
[INFO] [stdout] 177 | impl SolStat {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 178 |     pub fn table_name() -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenResponse` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:185:12
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub struct TokenResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionResponse` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub struct TransactionResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenInfoRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:252:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub struct TokenInfoRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenPriceRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub struct TokenPriceRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct SearchRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RankRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct RankRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenHolderRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:274:12
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub struct TokenHolderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeLatestRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:280:12
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub struct TradeLatestRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletPositionRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:286:12
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub struct WalletPositionRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenPositionRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub struct TokenPositionRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiTokenInfoRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:297:12
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub struct MultiTokenInfoRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionVolumeRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:302:12
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub struct TransactionVolumeRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookRequest` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:314:12
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub struct WebhookRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trade` is never constructed
[INFO] [stdout]    --> src/models/solana.rs:340:12
[INFO] [stdout]     |
[INFO] [stdout] 340 | pub struct Trade {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]   --> src/models/trade.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Trade {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 20 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTradeRequest` is never constructed
[INFO] [stdout]   --> src/models/trade.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct CreateTradeRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeResponse` is never constructed
[INFO] [stdout]   --> src/models/trade.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct TradeResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Commission` is never constructed
[INFO] [stdout]  --> src/models/commission.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Commission {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]   --> src/models/commission.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl Commission {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommissionResponse` is never constructed
[INFO] [stdout]   --> src/models/commission.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct CommissionResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Listen` is never constructed
[INFO] [stdout]  --> src/models/listen.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Listen {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `table_name` is never used
[INFO] [stdout]   --> src/models/listen.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Listen {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn table_name() -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateListenRequest` is never constructed
[INFO] [stdout]   --> src/models/listen.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct CreateListenRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListenResponse` is never constructed
[INFO] [stdout]   --> src/models/listen.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct ListenResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `trade`, `commission`, `listen`, and `redis` are never read
[INFO] [stdout]   --> src/repositories/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct RepositoriesImpl {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub trade: TradeRepository,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 25 |     pub commission: CommissionRepository,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 26 |     pub listen: ListenRepository,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 27 |     pub redis: RedisRepository,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `trade_repository`, `commission_repository`, `listen_repository`, and `redis_repository` are never used
[INFO] [stdout]   --> src/repositories/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl RepositoriesImpl {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn trade_repository(&self) -> &TradeRepository {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn commission_repository(&self) -> &CommissionRepository {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn listen_repository(&self) -> &ListenRepository {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn redis_repository(&self) -> &RedisRepository {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_migrations` is never used
[INFO] [stdout]   --> src/repositories/database.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn run_migrations(pool: &DatabasePool) -> AppResult<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health_check` is never used
[INFO] [stdout]   --> src/repositories/database.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub async fn health_check(pool: &DatabasePool) -> AppResult<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `connection` is never read
[INFO] [stdout]  --> src/repositories/redis_repo.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct RedisRepository {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 8 |     connection: ConnectionManager,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/repositories/redis_repo.rs:26:18
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl RedisRepository {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub async fn get<T>(&mut self, key: &str) -> AppResult<Option<T>>
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub async fn set<T>(&mut self, key: &str, value: &T, ttl_seconds: Option<usize>) -> AppResult<()>
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub async fn delete(&mut self, key: &str) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn exists(&mut self, key: &str) -> AppResult<bool> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub async fn increment(&mut self, key: &str) -> AppResult<i64> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn set_string(&mut self, key: &str, value: &str, ttl_seconds: Option<usize>) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub async fn get_string(&mut self, key: &str) -> AppResult<Option<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn health_check(&mut self) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn cache_token_info<T>(&mut self, mint: &str, data: &T, ttl_seconds: usize) -> AppResult<()>
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub async fn get_cached_token_info<T>(&mut self, mint: &str) -> AppResult<Option<T>>
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn cache_user_session(&mut self, user_id: u32, token: &str, ttl_seconds: usize) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub async fn get_user_session(&mut self, user_id: u32) -> AppResult<Option<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn invalidate_user_session(&mut self, user_id: u32) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health_check` is never used
[INFO] [stdout]    --> src/repositories/redis_repo.rs:129:14
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub async fn health_check(config: &Config) -> AppResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/repositories/user.rs:15:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl UserRepository {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  15 |     pub async fn create_user(&self, request: CreateUserRequest) -> AppResult<User> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub async fn find_by_id(&self, id: u32) -> AppResult<Option<User>> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub async fn update_user(&self, user: &User) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub async fn update_commission(&self, user_id: u32, sol_commission: f64, base_commission: f64, eth_commission: f64) -> AppResul...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub async fn verify_password(&self, email: &str, password: &str) -> AppResult<Option<User>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub async fn delete_user(&self, id: u32) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub async fn list_users(&self, limit: u32, offset: u32) -> AppResult<Vec<User>> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub async fn count_users(&self) -> AppResult<i64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/repositories/solana.rs:33:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl SolanaRepository {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub async fn list_tokens(&self, limit: u32, offset: u32, ecosystem: Option<&str>) -> AppResult<Vec<SolToken>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn update_token_price(&self, mint: &str, price: f64, market_cap: f64) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub async fn create_transaction(&self, transaction: &SolTransaction) -> AppResult<u32> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn find_transactions_by_mint(&self, mint: &str, limit: u32, offset: u32) -> AppResult<Vec<SolTransaction>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn find_transactions_by_signer(&self, signer: &str, limit: u32, offset: u32) -> AppResult<Vec<SolTransaction>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub async fn find_holders_by_mint(&self, mint: &str, limit: u32, offset: u32) -> AppResult<Vec<SolHolder>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn update_holder(&self, mint: &str, holder: &str, amount: f64, price_usd: f64, bet: f64, pnl: f64) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn find_pool_by_curve(&self, curve: &str) -> AppResult<Option<SolPool>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub async fn get_daily_volume(&self, date: DateTime<Utc>) -> AppResult<f64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub async fn get_token_stats(&self, mint: &str, start_time: DateTime<Utc>, end_time: DateTime<Utc>) -> AppResult<Option<SolStat...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]  --> src/repositories/trade.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TradeRepository {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 6 |     pool: MySqlPool,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_trade`, `find_by_id`, `find_by_user_id`, and `update_trade_status` are never used
[INFO] [stdout]   --> src/repositories/trade.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl TradeRepository {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn create_trade(&self, user_id: u32, request: CreateTradeRequest) -> AppResult<Trade> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub async fn find_by_id(&self, id: u32) -> AppResult<Option<Trade>> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Trade>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub async fn update_trade_status(&self, id: u32, status: &str, signature: Option<&str>) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]  --> src/repositories/commission.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct CommissionRepository {
[INFO] [stdout]   |            -------------------- field in this struct
[INFO] [stdout] 6 |     pool: MySqlPool,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_commission`, `find_by_user_id`, and `update_commission_status` are never used
[INFO] [stdout]   --> src/repositories/commission.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl CommissionRepository {
[INFO] [stdout]    | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn create_commission(&self, commission: Commission) -> AppResult<u32> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Commission>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub async fn update_commission_status(&self, id: u32, status: &str) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]  --> src/repositories/listen.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ListenRepository {
[INFO] [stdout]   |            ---------------- field in this struct
[INFO] [stdout] 6 |     pool: MySqlPool,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_listen`, `find_by_user_id`, and `update_listen_status` are never used
[INFO] [stdout]   --> src/repositories/listen.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ListenRepository {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn create_listen(&self, user_id: u32, request: CreateListenRequest) -> AppResult<Listen> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult<Vec<Listen>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn update_listen_status(&self, id: u32, is_active: bool) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletLoginRequest` is never constructed
[INFO] [stdout]   --> src/services/user.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct WalletLoginRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletLoginResponse` is never constructed
[INFO] [stdout]   --> src/services/user.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct WalletLoginResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_username`, `parse_invite_code`, `find_by_email`, and `user_info` are never used
[INFO] [stdout]    --> src/services/user.rs:79:8
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl UserServiceImpl {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  79 |     fn generate_username(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn parse_invite_code(&self, invite_code: &str) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn find_by_email(&self, email: &str) -> AppResult<Option<User>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn user_info(&self, uid: u32) -> AppResult<User> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenQueryRequest` is never constructed
[INFO] [stdout]   --> src/services/solana.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TokenQueryRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenListResponse` is never constructed
[INFO] [stdout]   --> src/services/solana.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct TokenListResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/services/solana.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct SolanaServiceImpl {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 28 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `build_cache_key` and `update_token_price` are never used
[INFO] [stdout]   --> src/services/solana.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl SolanaServiceImpl {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn build_cache_key(&self, prefix: &str, key: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub async fn update_token_price(&self, mint: &str, price: f64, market_cap: f64) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `network`, `signature`, and `invite_code` are never read
[INFO] [stdout]   --> src/handlers/user.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct WalletLoginRequest {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 13 |     pub wallet_address: String,
[INFO] [stdout] 14 |     pub network: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |     pub signature: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 16 |     pub invite_code: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WalletLoginRequest` 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 `email`, `password`, `username`, and `invite_code` are never read
[INFO] [stdout]   --> src/handlers/user.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct UserRegisterRequest {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 38 |     pub email: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 39 |     pub password: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 40 |     pub username: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 41 |     pub invite_code: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserRegisterRequest` 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 `old_password` and `new_password` are never read
[INFO] [stdout]   --> src/handlers/user.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct UpdatePasswordRequest {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] 57 |     pub old_password: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 58 |     pub new_password: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UpdatePasswordRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `username` is never read
[INFO] [stdout]   --> src/handlers/user.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct EditUsernameRequest {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 64 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditUsernameRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `email` is never read
[INFO] [stdout]   --> src/handlers/user.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct FindPasswordRequest {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 70 |     pub email: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FindPasswordRequest` 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 `keyword` and `limit` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct SearchRequest {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 29 |     pub keyword: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 30 |     pub limit: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchRequest` 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 `sort_by`, `limit`, and `offset` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct RankRequest {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 36 |     pub sort_by: Option<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 37 |     pub limit: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 38 |     pub offset: Option<u32>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RankRequest` 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 `mint`, `limit`, and `offset` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct TokenHolderRequest {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 44 |     pub mint: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 45 |     pub limit: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 46 |     pub offset: Option<u32>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenHolderRequest` 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 `mint` and `limit` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct TradeLatestRequest {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 52 |     pub mint: Option<String>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 53 |     pub limit: Option<u32>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TradeLatestRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wallet` is never read
[INFO] [stdout]   --> src/handlers/solana.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct WalletPositionRequest {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] 59 |     pub wallet: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WalletPositionRequest` 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 `mint` and `wallet` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct TokenPositionRequest {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] 65 |     pub mint: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 66 |     pub wallet: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenPositionRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mints` is never read
[INFO] [stdout]   --> src/handlers/solana.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct MultiTokenInfoRequest {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] 72 |     pub mints: Vec<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MultiTokenInfoRequest` 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 `start_time` and `end_time` are never read
[INFO] [stdout]   --> src/handlers/solana.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct TransactionVolumeRequest {
[INFO] [stdout]    |            ------------------------ fields in this struct
[INFO] [stdout] 78 |     pub start_time: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 79 |     pub end_time: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransactionVolumeRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `transaction` is never read
[INFO] [stdout]   --> src/handlers/solana.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct WebhookRequest {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 85 |     pub transaction: serde_json::Value,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WebhookRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cors_middleware` is never used
[INFO] [stdout]   --> src/handlers/middleware.rs:49:14
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub async fn cors_middleware(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rate_limit_middleware` is never used
[INFO] [stdout]    --> src/handlers/middleware.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub async fn rate_limit_middleware(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_user_from_request` is never used
[INFO] [stdout]    --> src/handlers/middleware.rs:120:8
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub fn get_user_from_request(request: &Request) -> Option<&User> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PaginatedResponse` is never constructed
[INFO] [stdout]   --> src/handlers/response.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct PaginatedResponse<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/handlers/response.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl<T> PaginatedResponse<T> {
[INFO] [stdout]     | ---------------------------- associated function in this implementation
[INFO] [stdout] 106 |     pub fn new(items: Vec<T>, total: i64, page: u32, limit: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `paginated` is never used
[INFO] [stdout]    --> src/handlers/response.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn paginated<T: Serialize>(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUCCESS` is never used
[INFO] [stdout]    --> src/handlers/response.rs:150:15
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub const SUCCESS: i32 = 0;
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARAM_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:151:15
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub const PARAM_ERROR: i32 = 400;
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNAUTHORIZED` is never used
[INFO] [stdout]    --> src/handlers/response.rs:152:15
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub const UNAUTHORIZED: i32 = 401;
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FORBIDDEN` is never used
[INFO] [stdout]    --> src/handlers/response.rs:153:15
[INFO] [stdout]     |
[INFO] [stdout] 153 |     pub const FORBIDDEN: i32 = 403;
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NOT_FOUND` is never used
[INFO] [stdout]    --> src/handlers/response.rs:154:15
[INFO] [stdout]     |
[INFO] [stdout] 154 |     pub const NOT_FOUND: i32 = 404;
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERNAL_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:155:15
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub const INTERNAL_ERROR: i32 = 500;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATABASE_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:158:15
[INFO] [stdout]     |
[INFO] [stdout] 158 |     pub const DATABASE_ERROR: i32 = 1003;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REDIS_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:159:15
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub const REDIS_ERROR: i32 = 1004;
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VALIDATION_ERROR` is never used
[INFO] [stdout]    --> src/handlers/response.rs:160:15
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub const VALIDATION_ERROR: i32 = 1005;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop_background_services` is never used
[INFO] [stdout]   --> src/blockchain/mod.rs:60:18
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl BlockchainServices {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub async fn stop_background_services(&self) -> AppResult<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `jsonrpc` and `id` are never read
[INFO] [stdout]   --> src/blockchain/solana_client.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct RpcResponse<T> {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 27 |     jsonrpc: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 28 |     id: u64,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RpcResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data` is never read
[INFO] [stdout]   --> src/blockchain/solana_client.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct RpcError {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     data: Option<Value>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RpcError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountInfo` is never constructed
[INFO] [stdout]   --> src/blockchain/solana_client.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct AccountInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenAccount` is never constructed
[INFO] [stdout]   --> src/blockchain/solana_client.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct TokenAccount {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mint` is never constructed
[INFO] [stdout]   --> src/blockchain/solana_client.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct Mint {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenInfo` is never constructed
[INFO] [stdout]   --> src/blockchain/solana_client.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct TokenInfo {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/blockchain/solana_client.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct SolanaClientService {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/blockchain/solana_client.rs:166:18
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl SolanaClientService {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub async fn get_account_info(&self, pubkey: &str) -> AppResult<Option<AccountInfo>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     fn parse_token_account_data(&self, data: &[u8]) -> AppResult<TokenAccount> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub async fn get_token_account_info(&self, pubkey: &str) -> AppResult<Option<TokenAccount>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub async fn get_token_supply(&self, mint_pubkey: &str) -> AppResult<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub async fn get_token_account_balance(&self, token_account: &str) -> AppResult<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub async fn get_token_accounts_by_owner(&self, owner: &str) -> AppResult<Vec<(String, TokenAccount)>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub async fn get_token_info(&self, mint_pubkey: &str) -> AppResult<Option<TokenInfo>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub async fn get_transaction(&self, signature: &str) -> AppResult<Option<Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `mint_symbol`, `vs_token`, and `vs_token_symbol` are never read
[INFO] [stdout]   --> src/blockchain/price_service.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct JupiterTokenPrice {
[INFO] [stdout]    |        ----------------- fields in this struct
[INFO] [stdout] 35 |     id: String,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 36 |     #[serde(rename = "mintSymbol")]
[INFO] [stdout] 37 |     mint_symbol: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 38 |     #[serde(rename = "vsToken")]
[INFO] [stdout] 39 |     vs_token: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 40 |     #[serde(rename = "vsTokenSymbol")]
[INFO] [stdout] 41 |     vs_token_symbol: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `JupiterTokenPrice` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoinGeckoResponse` is never constructed
[INFO] [stdout]   --> src/blockchain/price_service.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct CoinGeckoResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoinGeckoPrice` is never constructed
[INFO] [stdout]   --> src/blockchain/price_service.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct CoinGeckoPrice {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config` and `update_interval` are never read
[INFO] [stdout]   --> src/blockchain/price_service.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct PriceService {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 62 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     update_interval: Option<Interval>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fetch_coingecko_prices`, `get_token_price`, `stop_price_updates`, and `cleanup_expired_cache` are never used
[INFO] [stdout]    --> src/blockchain/price_service.rs:129:14
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl PriceService {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     async fn fetch_coingecko_prices(&self, coin_ids: &[String]) -> AppResult<HashMap<String, PriceData>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub async fn get_token_price(&self, mint: &str) -> AppResult<Option<PriceData>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub async fn stop_price_updates(&self) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     pub async fn cleanup_expired_cache(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `slot` and `timestamp` are never read
[INFO] [stdout]   --> src/blockchain/transaction_listener.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     TokenTransfer {
[INFO] [stdout]    |     ------------- fields in this variant
[INFO] [stdout] ...
[INFO] [stdout] 24 |         slot: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 25 |         timestamp: chrono::DateTime<chrono::Utc>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransactionEvent` 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: variants `TokenSwap` and `TokenMint` are never constructed
[INFO] [stdout]   --> src/blockchain/transaction_listener.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum TransactionEvent {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 28 |     TokenSwap {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     TokenMint {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransactionEvent` 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 `event_sender` is never read
[INFO] [stdout]   --> src/blockchain/transaction_listener.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct TransactionListener {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |     event_sender: Option<mpsc::UnboundedSender<TransactionEvent>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `stop_listening`, `watch_address`, and `watch_token` are never used
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:143:18
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl TransactionListener {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub async fn stop_listening(&self) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub async fn watch_address(&self, address: &str) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub async fn watch_token(&self, mint: &str) -> AppResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransactionParser` is never constructed
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub struct TransactionParser;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_token_transfer`, `parse_token_swap`, and `parse_token_mint` are never used
[INFO] [stdout]    --> src/blockchain/transaction_listener.rs:236:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl TransactionParser {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout] 235 |     /// 解析代币转账交易
[INFO] [stdout] 236 |     pub fn parse_token_transfer(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn parse_token_swap(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn parse_token_mint(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/blockchain/wallet_verifier.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct WalletVerifier {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 14 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]   --> src/blockchain/wallet_verifier.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct SignatureVerificationResult {
[INFO] [stdout]    |            --------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub message: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SignatureVerificationResult` 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: methods `verify_token_ownership`, `verify_mint_authority`, `verify_multiple_signatures`, and `generate_test_signature` are never used
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:205:18
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl WalletVerifier {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub async fn verify_token_ownership(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub async fn verify_mint_authority(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn verify_multiple_signatures(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn generate_test_signature(&self, message: &str) -> AppResult<(String, String)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WalletType` is never used
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:271:10
[INFO] [stdout]     |
[INFO] [stdout] 271 | pub enum WalletType {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_user_agent` is never used
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:280:12
[INFO] [stdout]     |
[INFO] [stdout] 278 | impl WalletType {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 279 |     /// 从用户代理字符串识别钱包类型
[INFO] [stdout] 280 |     pub fn from_user_agent(user_agent: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WalletConnection` is never constructed
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct WalletConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_activity`, `mark_verified`, and `is_expired` are never used
[INFO] [stdout]    --> src/blockchain/wallet_verifier.rs:305:12
[INFO] [stdout]     |
[INFO] [stdout] 303 | impl WalletConnection {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 304 |     /// 创建新的钱包连接
[INFO] [stdout] 305 |     pub fn new(address: String, wallet_type: WalletType) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn update_activity(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn mark_verified(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn is_expired(&self, timeout_minutes: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 19s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4, redis v0.24.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 7`
[INFO] running `Command { std: "docker" "inspect" "fff41e60b9417350d6dd40ea81865179caaee64cd9fce107cc1220bb2235a421", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fff41e60b9417350d6dd40ea81865179caaee64cd9fce107cc1220bb2235a421", kill_on_drop: false }`
[INFO] [stdout] fff41e60b9417350d6dd40ea81865179caaee64cd9fce107cc1220bb2235a421
