[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 try#dd2d87b6cc31907ae305875eb6be399783dc0256 for pr-143929 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flinzigeer%2Fdexx-rust" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/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-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/linzigeer/dexx-rust on toolchain dd2d87b6cc31907ae305875eb6be399783dc0256 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dd2d87b6cc31907ae305875eb6be399783dc0256" "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" "+dd2d87b6cc31907ae305875eb6be399783dc0256" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e8955075918b6d00525c617f7c34ee2595c70db70b3cf844dc875e4d3604499b" "/opt/rustwide/cargo-home/bin/cargo" "+dd2d87b6cc31907ae305875eb6be399783dc0256" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 44f970f1abfed61c426e9839582a53ebc7ed56be31c03800bbdb8d18e50bdc60 [INFO] running `Command { std: "docker" "start" "-a" "44f970f1abfed61c426e9839582a53ebc7ed56be31c03800bbdb8d18e50bdc60", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "44f970f1abfed61c426e9839582a53ebc7ed56be31c03800bbdb8d18e50bdc60", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "44f970f1abfed61c426e9839582a53ebc7ed56be31c03800bbdb8d18e50bdc60", kill_on_drop: false }` [INFO] [stdout] 44f970f1abfed61c426e9839582a53ebc7ed56be31c03800bbdb8d18e50bdc60 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-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:e8955075918b6d00525c617f7c34ee2595c70db70b3cf844dc875e4d3604499b" "/opt/rustwide/cargo-home/bin/cargo" "+dd2d87b6cc31907ae305875eb6be399783dc0256" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] d6183d23e74167314c45ff23e1a5c7f4ee7e97d90674d26312b341c730bdceab [INFO] running `Command { std: "docker" "start" "-a" "d6183d23e74167314c45ff23e1a5c7f4ee7e97d90674d26312b341c730bdceab", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.101 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Checking smallvec v1.15.0 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Compiling libc v0.2.172 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Compiling icu_normalizer_data v2.0.0 [INFO] [stderr] Compiling icu_properties_data v2.0.1 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Checking const-oid v0.9.6 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking writeable v0.6.1 [INFO] [stderr] Compiling cc v1.2.24 [INFO] [stderr] Checking litemap v0.8.0 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling zerocopy v0.8.25 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling base64ct v1.7.3 [INFO] [stderr] Checking tower-service v0.3.3 [INFO] [stderr] Compiling zeroize v1.8.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking utf8_iter v1.0.4 [INFO] [stderr] Compiling num-bigint-dig v0.8.4 [INFO] [stderr] Compiling pkg-config v0.3.32 [INFO] [stderr] Compiling pin-project-lite v0.2.16 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling pem-rfc7468 v0.7.0 [INFO] [stderr] Checking equivalent v1.0.2 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Checking try-lock v0.2.5 [INFO] [stderr] Checking hashbrown v0.15.3 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Compiling der v0.7.10 [INFO] [stderr] Checking want v0.3.1 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Compiling socket2 v0.5.9 [INFO] [stderr] Compiling mio v1.0.3 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling allocator-api2 v0.2.21 [INFO] [stderr] Compiling semver v1.0.26 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling spin v0.9.8 [INFO] [stderr] Compiling bytes v1.10.1 [INFO] [stderr] Compiling tinyvec v1.9.0 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling form_urlencoded v1.2.1 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling openssl-sys v0.9.108 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling tokio v1.45.0 [INFO] [stderr] Compiling tracing-core v0.1.33 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling ahash v0.7.8 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Compiling ucd-trie v0.1.7 [INFO] [stderr] Compiling time-core v0.1.4 [INFO] [stderr] Compiling spki v0.7.3 [INFO] [stderr] Compiling rustix v1.0.7 [INFO] [stderr] Checking tower-layer v0.3.3 [INFO] [stderr] Compiling crc-catalog v2.4.0 [INFO] [stderr] Checking foreign-types-shared v0.1.1 [INFO] [stderr] Compiling unicode_categories v0.1.1 [INFO] [stderr] Compiling futures-task v0.3.31 [INFO] [stderr] Compiling itoa v1.0.15 [INFO] [stderr] Compiling log v0.4.27 [INFO] [stderr] Compiling ryu v1.0.20 [INFO] [stderr] Compiling pkcs8 v0.10.2 [INFO] [stderr] Compiling iana-time-zone v0.1.63 [INFO] [stderr] Compiling openssl v0.10.72 [INFO] [stderr] Compiling hashlink v0.8.4 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Checking deranged v0.4.0 [INFO] [stderr] Compiling time-macros v0.2.22 [INFO] [stderr] Compiling num-iter v0.1.45 [INFO] [stderr] Compiling chrono v0.4.41 [INFO] [stderr] Compiling pkcs1 v0.7.5 [INFO] [stderr] Checking foreign-types v0.3.2 [INFO] [stderr] Compiling crc v3.3.0 [INFO] [stderr] Compiling unicode-normalization v0.1.24 [INFO] [stderr] Compiling crossbeam-queue v0.3.12 [INFO] [stderr] Compiling atoi v2.0.0 [INFO] [stderr] Compiling signature v2.2.0 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling futures-intrusive v0.5.0 [INFO] [stderr] Compiling linux-raw-sys v0.9.4 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling sqlformat v0.2.6 [INFO] [stderr] Compiling rustversion v1.0.21 [INFO] [stderr] Compiling webpki-roots v0.25.4 [INFO] [stderr] Compiling uuid v1.17.0 [INFO] [stderr] Compiling event-listener v2.5.3 [INFO] [stderr] Compiling unicode-properties v0.1.3 [INFO] [stderr] Checking base64 v0.21.7 [INFO] [stderr] Compiling unicode-bidi v0.3.18 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking rustls-pemfile v1.0.4 [INFO] [stderr] Compiling rsa v0.9.8 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling hkdf v0.12.4 [INFO] [stderr] Checking time v0.3.41 [INFO] [stderr] Compiling stringprep v0.1.5 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling md-5 v0.10.6 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking adler2 v2.0.0 [INFO] [stderr] Checking openssl-probe v0.1.6 [INFO] [stderr] Checking sync_wrapper v1.0.2 [INFO] [stderr] Compiling unicase v2.8.1 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling dotenvy v0.15.7 [INFO] [stderr] Compiling whoami v1.6.0 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Checking miniz_oxide v0.8.8 [INFO] [stderr] Checking hashbrown v0.12.3 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling heck v0.4.1 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Checking crc32fast v1.4.2 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Checking dlv-list v0.3.0 [INFO] [stderr] Checking flate2 v1.1.1 [INFO] [stderr] Checking ordered-multimap v0.4.3 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Compiling cookie v0.18.1 [INFO] [stderr] Checking linked-hash-map v0.5.6 [INFO] [stderr] Checking base64 v0.22.1 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking base64 v0.13.1 [INFO] [stderr] Compiling tokio-stream v0.1.17 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking yaml-rust v0.4.5 [INFO] [stderr] Checking pem v3.0.5 [INFO] [stderr] Checking rust-ini v0.18.0 [INFO] [stderr] Checking ed25519 v2.2.3 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking socket2 v0.4.10 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Checking ipnet v2.11.0 [INFO] [stderr] Checking arc-swap v1.7.1 [INFO] [stderr] Checking diff v0.1.13 [INFO] [stderr] Checking sha1_smol v1.0.1 [INFO] [stderr] Checking yansi v1.0.1 [INFO] [stderr] Checking bs58 v0.5.1 [INFO] [stderr] Checking auto-future v1.0.0 [INFO] [stderr] Checking pretty_assertions v1.4.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [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 tokio-macros v2.5.0 [INFO] [stderr] Compiling tracing-attributes v0.1.28 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling async-trait v0.1.88 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking thiserror v2.0.12 [INFO] [stderr] Compiling pest v2.8.0 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking simple_asn1 v0.6.3 [INFO] [stderr] Checking pin-project v1.1.10 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Compiling yoke v0.8.0 [INFO] [stderr] Checking reserve-port v2.2.0 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Compiling zerovec v0.11.2 [INFO] [stderr] Compiling zerotrie v0.2.2 [INFO] [stderr] Compiling pest_meta v2.8.0 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Checking ed25519-dalek v2.1.1 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking rust-multipart-rfc7578_2 v0.6.1 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Compiling pest_generator v2.8.0 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Compiling pest_derive v2.8.0 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking hyper v1.6.0 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking async-compression v0.4.23 [INFO] [stderr] Checking tower v0.4.13 [INFO] [stderr] Checking tokio-retry v0.3.0 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking bitflags v2.9.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking serde_path_to_error v0.1.17 [INFO] [stderr] Checking toml v0.5.11 [INFO] [stderr] Checking json5 v0.4.1 [INFO] [stderr] Checking ron v0.7.1 [INFO] [stderr] Checking tungstenite v0.21.0 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking combine v4.6.7 [INFO] [stderr] Checking tower-http v0.5.2 [INFO] [stderr] Checking tokio-tungstenite v0.21.0 [INFO] [stderr] Checking hyper-util v0.1.12 [INFO] [stderr] Checking config v0.13.4 [INFO] [stderr] Checking jsonwebtoken v9.3.1 [INFO] [stderr] Compiling sqlx-core v0.7.4 [INFO] [stderr] Checking axum v0.7.9 [INFO] [stderr] Compiling tempfile v3.20.0 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking sqlx-mysql v0.7.4 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking redis v0.24.0 [INFO] [stderr] Compiling sqlx-macros-core v0.7.4 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Compiling sqlx-macros v0.7.4 [INFO] [stderr] Checking axum-test v14.10.0 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking sqlx v0.7.4 [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)]` 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)]` 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)]` on by default [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)]` 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> { [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> { [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> { [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> { [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 { [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> { [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> { [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> { [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> { [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> { [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> { [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: `state` [INFO] [stdout] --> src/handlers/solana.rs:118:11 [INFO] [stdout] | [INFO] [stdout] 118 | State(state): State, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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> { [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> { [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> { [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> { [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 { [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> { [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> { [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> { [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> { [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> { [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> { [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: `state` [INFO] [stdout] --> src/handlers/solana.rs:118:11 [INFO] [stdout] | [INFO] [stdout] 118 | State(state): State, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [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, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [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: `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: 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)]` 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: 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)]` 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: `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: unused variable: `csprng` [INFO] [stdout] --> src/blockchain/wallet_verifier.rs:255:17 [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: 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)]` on by default [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: unused variable: `csprng` [INFO] [stdout] --> src/blockchain/wallet_verifier.rs:255:17 [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: 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)]` on by default [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)]` 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) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn authorization(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn business(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn external_service(service: impl Into, message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn solana_client(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn ethereum_client(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn blockchain_error(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn price_service_error(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn wallet_verification_error(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn transaction_parsing_error(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn crypto(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn not_found(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn unauthorized(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn forbidden(message: impl Into) -> 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 { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn now_local() -> DateTime { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn timestamp_to_utc(timestamp: i64) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn timestamp_to_local(timestamp: i64) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn format_datetime(dt: &DateTime, format: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn parse_datetime(s: &str, format: &str) -> Result, chrono::ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn today_start_utc() -> DateTime { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn today_end_utc() -> DateTime { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn days_ago(days: i64) -> DateTime { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn hours_ago(hours: i64) -> DateTime { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn minutes_ago(minutes: i64) -> DateTime { [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, time2: &DateTime) -> 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 { [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, serde_json::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn set_price_change(&mut self, price_change: &HashMap) -> Result<(), serde_json::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn get_volume(&self) -> Result, serde_json::Error> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn set_volume(&mut self, volume: &HashMap) -> 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(&mut self, key: &str) -> AppResult> [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub async fn set(&mut self, key: &str, value: &T, ttl_seconds: Option) -> 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 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub async fn increment(&mut self, key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub async fn set_string(&mut self, key: &str, value: &str, ttl_seconds: Option) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub async fn get_string(&mut self, key: &str) -> AppResult> { [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(&mut self, mint: &str, data: &T, ttl_seconds: usize) -> AppResult<()> [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub async fn get_cached_token_info(&mut self, mint: &str) -> AppResult> [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> { [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 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub async fn find_by_id(&self, id: u32) -> AppResult> { [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) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | pub async fn verify_password(&self, email: &str, password: &str) -> AppResult> { [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> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub async fn count_users(&self) -> AppResult { [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> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub async fn find_transactions_by_mint(&self, mint: &str, limit: u32, offset: u32) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub async fn find_transactions_by_signer(&self, signer: &str, limit: u32, offset: u32) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub async fn find_holders_by_mint(&self, mint: &str, limit: u32, offset: u32) -> AppResult> { [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> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | pub async fn get_daily_volume(&self, date: DateTime) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub async fn get_token_stats(&self, mint: &str, start_time: DateTime, end_time: DateTime) -> AppResult> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub async fn find_by_id(&self, id: u32) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub async fn find_by_email(&self, email: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub async fn user_info(&self, uid: u32) -> AppResult { [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, [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, [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, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 41 | pub invite_code: Option, [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, [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, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 37 | pub limit: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 38 | pub offset: Option, [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, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 46 | pub offset: Option, [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, [INFO] [stdout] | ^^^^ [INFO] [stdout] 53 | pub limit: Option, [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, [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, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 79 | pub end_time: Option, [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( [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 { [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, [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, [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> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 193 | fn parse_token_account_data(&self, data: &[u8]) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | pub async fn get_token_account_info(&self, pubkey: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub async fn get_token_supply(&self, mint_pubkey: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub async fn get_token_account_balance(&self, token_account: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub async fn get_token_accounts_by_owner(&self, owner: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 337 | pub async fn get_token_info(&self, mint_pubkey: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub async fn get_transaction(&self, signature: &str) -> AppResult> { [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, [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, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | update_interval: Option, [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> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub async fn get_token_price(&self, mint: &str) -> AppResult> { [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, [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>, [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, [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)]` 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) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn authorization(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn business(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn external_service(service: impl Into, message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn solana_client(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn ethereum_client(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn blockchain_error(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn price_service_error(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn wallet_verification_error(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn transaction_parsing_error(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn crypto(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn not_found(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn unauthorized(message: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn forbidden(message: impl Into) -> 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 { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn now_local() -> DateTime { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn timestamp_to_utc(timestamp: i64) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn timestamp_to_local(timestamp: i64) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn format_datetime(dt: &DateTime, format: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn parse_datetime(s: &str, format: &str) -> Result, chrono::ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn today_start_utc() -> DateTime { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn today_end_utc() -> DateTime { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn days_ago(days: i64) -> DateTime { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn hours_ago(hours: i64) -> DateTime { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn minutes_ago(minutes: i64) -> DateTime { [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, time2: &DateTime) -> 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 { [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, serde_json::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn set_price_change(&mut self, price_change: &HashMap) -> Result<(), serde_json::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn get_volume(&self) -> Result, serde_json::Error> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn set_volume(&mut self, volume: &HashMap) -> 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(&mut self, key: &str) -> AppResult> [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub async fn set(&mut self, key: &str, value: &T, ttl_seconds: Option) -> 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 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub async fn increment(&mut self, key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub async fn set_string(&mut self, key: &str, value: &str, ttl_seconds: Option) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub async fn get_string(&mut self, key: &str) -> AppResult> { [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(&mut self, mint: &str, data: &T, ttl_seconds: usize) -> AppResult<()> [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub async fn get_cached_token_info(&mut self, mint: &str) -> AppResult> [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> { [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 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub async fn find_by_id(&self, id: u32) -> AppResult> { [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) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | pub async fn verify_password(&self, email: &str, password: &str) -> AppResult> { [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> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub async fn count_users(&self) -> AppResult { [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> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub async fn find_transactions_by_mint(&self, mint: &str, limit: u32, offset: u32) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub async fn find_transactions_by_signer(&self, signer: &str, limit: u32, offset: u32) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub async fn find_holders_by_mint(&self, mint: &str, limit: u32, offset: u32) -> AppResult> { [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> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | pub async fn get_daily_volume(&self, date: DateTime) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub async fn get_token_stats(&self, mint: &str, start_time: DateTime, end_time: DateTime) -> AppResult> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub async fn find_by_id(&self, id: u32) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub async fn find_by_user_id(&self, user_id: u32, limit: u32, offset: u32) -> AppResult> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub async fn find_by_email(&self, email: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub async fn user_info(&self, uid: u32) -> AppResult { [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, [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, [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, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 41 | pub invite_code: Option, [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, [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, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 37 | pub limit: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 38 | pub offset: Option, [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, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 46 | pub offset: Option, [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, [INFO] [stdout] | ^^^^ [INFO] [stdout] 53 | pub limit: Option, [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, [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, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 79 | pub end_time: Option, [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 { [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 PaginatedResponse { [INFO] [stdout] | ---------------------------- associated function in this implementation [INFO] [stdout] 106 | pub fn new(items: Vec, 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( [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 { [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, [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, [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> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 193 | fn parse_token_account_data(&self, data: &[u8]) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | pub async fn get_token_account_info(&self, pubkey: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub async fn get_token_supply(&self, mint_pubkey: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub async fn get_token_account_balance(&self, token_account: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub async fn get_token_accounts_by_owner(&self, owner: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 337 | pub async fn get_token_info(&self, mint_pubkey: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub async fn get_transaction(&self, signature: &str) -> AppResult> { [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, [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, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | update_interval: Option, [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> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub async fn get_token_price(&self, mint: &str) -> AppResult> { [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, [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>, [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, [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 1m 49s [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 1` [INFO] running `Command { std: "docker" "inspect" "d6183d23e74167314c45ff23e1a5c7f4ee7e97d90674d26312b341c730bdceab", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d6183d23e74167314c45ff23e1a5c7f4ee7e97d90674d26312b341c730bdceab", kill_on_drop: false }` [INFO] [stdout] d6183d23e74167314c45ff23e1a5c7f4ee7e97d90674d26312b341c730bdceab