[INFO] cloning repository https://github.com/ITmrHoang/Valuation_Pricing_Tools [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ITmrHoang/Valuation_Pricing_Tools" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FITmrHoang%2FValuation_Pricing_Tools", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FITmrHoang%2FValuation_Pricing_Tools'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4c066500997056394efb0d1421d0eed43c8ff16d [INFO] checking ITmrHoang/Valuation_Pricing_Tools against master#540f43a224317d894a9a0710a8d67704f179a33c for pr-155193 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FITmrHoang%2FValuation_Pricing_Tools" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools [INFO] finished tweaking git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools [INFO] tweaked toml for git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools on toolchain 540f43a224317d894a9a0710a8d67704f179a33c [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+540f43a224317d894a9a0710a8d67704f179a33c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools 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" "+540f43a224317d894a9a0710a8d67704f179a33c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded rust-ini v0.20.0 [INFO] [stderr] Downloaded yaml-rust2 v0.8.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+540f43a224317d894a9a0710a8d67704f179a33c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 4c477b1cf6f77e82bb7c4b8e1e5ffe033319fc64d11dff56c1160c7bbd43a19f [INFO] running `Command { std: "docker" "start" "-a" "4c477b1cf6f77e82bb7c4b8e1e5ffe033319fc64d11dff56c1160c7bbd43a19f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4c477b1cf6f77e82bb7c4b8e1e5ffe033319fc64d11dff56c1160c7bbd43a19f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4c477b1cf6f77e82bb7c4b8e1e5ffe033319fc64d11dff56c1160c7bbd43a19f", kill_on_drop: false }` [INFO] [stdout] 4c477b1cf6f77e82bb7c4b8e1e5ffe033319fc64d11dff56c1160c7bbd43a19f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+540f43a224317d894a9a0710a8d67704f179a33c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] d522bf6bacfc088a975a1cbe2441026097f6c9d7cda51ef1cfde2e20eaf7c0f1 [INFO] running `Command { std: "docker" "start" "-a" "d522bf6bacfc088a975a1cbe2441026097f6c9d7cda51ef1cfde2e20eaf7c0f1", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking futures-util v0.3.32 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking tokio v1.51.1 [INFO] [stderr] Compiling writeable v0.6.3 [INFO] [stderr] Compiling litemap v0.8.2 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling icu_properties_data v2.2.0 [INFO] [stderr] Compiling icu_normalizer_data v2.2.0 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking hashbrown v0.17.0 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Checking ahash v0.8.12 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling pest v2.8.6 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling event-listener v5.4.1 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Checking indexmap v2.14.0 [INFO] [stderr] Checking ring v0.17.14 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling const-random-macro v0.1.16 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling spin v0.9.8 [INFO] [stderr] Checking bitflags v2.11.0 [INFO] [stderr] Compiling uuid v1.23.0 [INFO] [stderr] Compiling futures-intrusive v0.5.0 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling flume v0.11.1 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking const-random v0.1.18 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking crc v3.4.0 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking dlv-list v0.5.2 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling pest_meta v2.8.6 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Checking winnow v0.7.15 [INFO] [stderr] Checking rustls-webpki v0.103.11 [INFO] [stderr] Checking regex-syntax v0.8.10 [INFO] [stderr] Checking toml_write v0.1.2 [INFO] [stderr] Checking data-encoding v2.10.0 [INFO] [stderr] Compiling pest_generator v2.8.6 [INFO] [stderr] Checking rustls v0.23.37 [INFO] [stderr] Checking ordered-multimap v0.7.3 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tungstenite v0.24.0 [INFO] [stderr] Checking atoi v2.0.0 [INFO] [stderr] Checking hashlink v0.8.4 [INFO] [stderr] Checking arraydeque v0.5.1 [INFO] [stderr] Checking convert_case v0.6.0 [INFO] [stderr] Checking rust-ini v0.20.0 [INFO] [stderr] Checking regex-automata v0.4.14 [INFO] [stderr] Checking yaml-rust2 v0.8.1 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Checking ron v0.8.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Checking tracing-serde v0.2.0 [INFO] [stderr] Checking serde_path_to_error v0.1.20 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking arc-swap v1.9.1 [INFO] [stderr] Checking tower-http v0.5.2 [INFO] [stderr] Checking tower v0.4.13 [INFO] [stderr] Compiling pest_derive v2.8.6 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking json5 v0.4.1 [INFO] [stderr] Checking hyper v1.9.0 [INFO] [stderr] Checking tokio-stream v0.1.18 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Checking tokio-tungstenite v0.24.0 [INFO] [stderr] Checking sqlx-core v0.8.6 [INFO] [stderr] Checking tokio-test v0.4.5 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking tracing-subscriber v0.3.23 [INFO] [stderr] Checking hyper-util v0.1.20 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking tokio-rustls v0.26.4 [INFO] [stderr] Checking config v0.14.1 [INFO] [stderr] Checking hyper-rustls v0.27.7 [INFO] [stderr] Checking axum v0.7.9 [INFO] [stderr] Checking reqwest v0.12.28 [INFO] [stderr] Checking sqlx-sqlite v0.8.6 [INFO] [stderr] Compiling sqlx-macros-core v0.8.6 [INFO] [stderr] Compiling sqlx-macros v0.8.6 [INFO] [stderr] Checking sqlx v0.8.6 [INFO] [stderr] Checking valuation_pricing_tools v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/engine/stock_valuator.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Recommendation` [INFO] [stdout] --> src/engine/stock_valuator.rs:13:40 [INFO] [stdout] | [INFO] [stdout] 13 | ValuationRequest, ValuationResult, Recommendation, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FundamentalConfig` [INFO] [stdout] --> src/engine/stock_valuator.rs:16:26 [INFO] [stdout] | [INFO] [stdout] 16 | FundamentalAnalyzer, FundamentalConfig, FundamentalData, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/engine/scoring.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DateTime` and `Duration` [INFO] [stdout] --> src/scrapers/stock_data.rs:5:14 [INFO] [stdout] | [INFO] [stdout] 5 | use chrono::{DateTime, Utc, TimeZone, Duration}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/scrapers/proxy_pool.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::config::DynamicConfigManager` [INFO] [stdout] --> src/api/handlers.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::config::DynamicConfigManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FundamentalConfig` [INFO] [stdout] --> src/api/handlers.rs:22:26 [INFO] [stdout] | [INFO] [stdout] 22 | FundamentalAnalyzer, FundamentalConfig, parse_fundamental_from_json, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/engine/stock_valuator.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Recommendation` [INFO] [stdout] --> src/engine/stock_valuator.rs:13:40 [INFO] [stdout] | [INFO] [stdout] 13 | ValuationRequest, ValuationResult, Recommendation, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FundamentalConfig` [INFO] [stdout] --> src/engine/stock_valuator.rs:16:26 [INFO] [stdout] | [INFO] [stdout] 16 | FundamentalAnalyzer, FundamentalConfig, FundamentalData, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/engine/scoring.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DateTime` and `Duration` [INFO] [stdout] --> src/scrapers/stock_data.rs:5:14 [INFO] [stdout] | [INFO] [stdout] 5 | use chrono::{DateTime, Utc, TimeZone, Duration}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/scrapers/proxy_pool.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::config::DynamicConfigManager` [INFO] [stdout] --> src/api/handlers.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::config::DynamicConfigManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FundamentalConfig` [INFO] [stdout] --> src/api/handlers.rs:22:26 [INFO] [stdout] | [INFO] [stdout] 22 | FundamentalAnalyzer, FundamentalConfig, parse_fundamental_from_json, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `payload` [INFO] [stdout] --> src/crew_integration/mod.rs:218:33 [INFO] [stdout] | [INFO] [stdout] 218 | pub fn verify_webhook_signature(payload: &[u8], signature: &str, secret: &str) -> bool { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `payload` [INFO] [stdout] --> src/crew_integration/mod.rs:218:33 [INFO] [stdout] | [INFO] [stdout] 218 | pub fn verify_webhook_signature(payload: &[u8], signature: &str, secret: &str) -> bool { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `default_stock_attributes`, `find_attribute`, `update_weight`, and `normalize_weights` are never used [INFO] [stdout] --> src/config/attributes.rs:149:12 [INFO] [stdout] | [INFO] [stdout] 59 | impl AttributeSet { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn default_stock_attributes() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn find_attribute(&self, name: &str) -> Option<&AttributeDefinition> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn update_weight(&mut self, name: &str, new_weight: f64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 252 | pub fn normalize_weights(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_weight` and `normalize` are never used [INFO] [stdout] --> src/config/attributes.rs:315:12 [INFO] [stdout] | [INFO] [stdout] 270 | impl WeightConfig { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn set_weight(&mut self, name: &str, value: f64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn normalize(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MarketplaceType` is never used [INFO] [stdout] --> src/config/marketplace_profiles.rs:30:10 [INFO] [stdout] | [INFO] [stdout] 30 | pub enum MarketplaceType { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `default_opensea`, `default_magic_eden`, and `default_blur` are never used [INFO] [stdout] --> src/config/marketplace_profiles.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 51 | impl MarketplaceProfile { [INFO] [stdout] | ----------------------- associated functions in this implementation [INFO] [stdout] 52 | /// Tạo profile mặc định cho OpenSea [INFO] [stdout] 53 | pub fn default_opensea() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn default_magic_eden() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn default_blur() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `asset_type` is never used [INFO] [stdout] --> src/engine/mod.rs:113:8 [INFO] [stdout] | [INFO] [stdout] 111 | pub trait PricingEngine: Send + Sync { [INFO] [stdout] | ------------- method in this trait [INFO] [stdout] 112 | /// Loại tài sản mà engine xử lý [INFO] [stdout] 113 | fn asset_type(&self) -> AssetType; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `scoring` is never read [INFO] [stdout] --> src/engine/nft_valuator.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct NftValuator { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | scoring: ScoringEngine, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `total_volume` is never read [INFO] [stdout] --> src/engine/nft_valuator.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct CollectionData { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 34 | pub total_volume: f64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CollectionData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `token_id`, `name`, and `last_sale_price` are never read [INFO] [stdout] --> src/engine/nft_valuator.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct NftItemData { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 52 | /// Token ID [INFO] [stdout] 53 | pub token_id: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 54 | /// Tên item [INFO] [stdout] 55 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub last_sale_price: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NftItemData` 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: struct `ScoreBreakdown` is never constructed [INFO] [stdout] --> src/engine/scoring.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct ScoreBreakdown { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/engine/scoring.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct ScoringEngine { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 27 | config: Arc, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `calculate_composite_score`, `rank_assets`, `min_max_normalize`, `z_score_normalize`, and `calculate_data_confidence` are never used [INFO] [stdout] --> src/engine/scoring.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl ScoringEngine { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn calculate_composite_score( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn rank_assets(&self, scores: &[(String, f64)]) -> Vec<(String, f64, usize)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn min_max_normalize(values: &[f64]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn z_score_normalize(values: &[f64]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn calculate_data_confidence( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `MarketplaceScraper` is never used [INFO] [stdout] --> src/scrapers/mod.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait MarketplaceScraper: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CollectionInfo` is never constructed [INFO] [stdout] --> src/scrapers/mod.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct CollectionInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NftInfo` is never constructed [INFO] [stdout] --> src/scrapers/mod.rs:65:12 [INFO] [stdout] | [INFO] [stdout] 65 | pub struct NftInfo { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RateLimitedClient` is never constructed [INFO] [stdout] --> src/scrapers/mod.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct RateLimitedClient { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `new_with_proxy`, `get_client_for_request`, and `get_with_retry` are never used [INFO] [stdout] --> src/scrapers/mod.rs:98:12 [INFO] [stdout] | [INFO] [stdout] 96 | impl RateLimitedClient { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 97 | /// Tạo client mới không proxy [INFO] [stdout] 98 | pub fn new(rate_limit_ms: u64, user_agent: &str, timeout_secs: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn new_with_proxy( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | fn get_client_for_request(&self) -> (reqwest::Client, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub async fn get_with_retry( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OpenSeaScraper` is never constructed [INFO] [stdout] --> src/scrapers/opensea.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct OpenSeaScraper { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `api_headers` are never used [INFO] [stdout] --> src/scrapers/opensea.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl OpenSeaScraper { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 18 | /// Khởi tạo OpenSea scraper [INFO] [stdout] 19 | pub fn new(base_url: &str, api_key: &str, rate_limit_ms: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | fn api_headers(&self) -> Vec<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MagicEdenScraper` is never constructed [INFO] [stdout] --> src/scrapers/magic_eden.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct MagicEdenScraper { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `api_headers` are never used [INFO] [stdout] --> src/scrapers/magic_eden.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl MagicEdenScraper { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 18 | /// Khởi tạo Magic Eden scraper [INFO] [stdout] 19 | pub fn new(base_url: &str, api_key: &str, rate_limit_ms: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | fn api_headers(&self) -> Vec<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StockDataFetcher` is never constructed [INFO] [stdout] --> src/scrapers/stock_data.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct StockDataFetcher { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StockQuote` is never constructed [INFO] [stdout] --> src/scrapers/stock_data.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct StockQuote { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `fetch_historical`, `fetch_quote`, and `fetch_full` are never used [INFO] [stdout] --> src/scrapers/stock_data.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl StockDataFetcher { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 41 | /// Khởi tạo fetcher [INFO] [stdout] 42 | pub fn new(base_url: &str, rate_limit_ms: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub async fn fetch_historical( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub async fn fetch_quote(&self, symbol: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub async fn fetch_full(&self, symbol: &str, history_days: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_yahoo_chart_response` is never used [INFO] [stdout] --> src/scrapers/stock_data.rs:164:4 [INFO] [stdout] | [INFO] [stdout] 164 | fn parse_yahoo_chart_response(data: &serde_json::Value, symbol: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_url` is never used [INFO] [stdout] --> src/scrapers/proxy_pool.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl ProxyConfig { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] 49 | /// Tạo URL proxy đầy đủ [INFO] [stdout] 50 | pub fn to_url(&self) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProxyState` is never constructed [INFO] [stdout] --> src/scrapers/proxy_pool.rs:69:8 [INFO] [stdout] | [INFO] [stdout] 69 | struct ProxyState { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `success_rate`, `mark_success`, and `mark_failure` are never used [INFO] [stdout] --> src/scrapers/proxy_pool.rs:81:8 [INFO] [stdout] | [INFO] [stdout] 80 | impl ProxyState { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 81 | fn new(config: ProxyConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | fn success_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | fn mark_success(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | fn mark_failure(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProxyPool` is never constructed [INFO] [stdout] --> src/scrapers/proxy_pool.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | pub struct ProxyPool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/scrapers/proxy_pool.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 164 | impl ProxyPool { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 165 | /// Khởi tạo proxy pool từ config [INFO] [stdout] 166 | pub fn new(config: ProxyPoolConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub fn alive_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 193 | pub fn get_next_proxy(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn report_success(&self, proxy_url: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 226 | pub fn report_failure(&self, proxy_url: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | fn find_proxy_state(&self, proxy_url: &str) -> Option<&Arc> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn get_stats(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn create_proxied_client( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProxyStats` is never constructed [INFO] [stdout] --> src/scrapers/proxy_pool.rs:270:12 [INFO] [stdout] | [INFO] [stdout] 270 | pub struct ProxyStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_webhook_signature` is never used [INFO] [stdout] --> src/crew_integration/mod.rs:218:8 [INFO] [stdout] | [INFO] [stdout] 218 | pub fn verify_webhook_signature(payload: &[u8], signature: &str, secret: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `save_price_data` is never used [INFO] [stdout] --> src/storage/models.rs:103:18 [INFO] [stdout] | [INFO] [stdout] 12 | impl ValuationRepository { [INFO] [stdout] | ------------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub async fn save_price_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiResponse` is never constructed [INFO] [stdout] --> src/api/models.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct ApiResponse { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `success` and `error` are never used [INFO] [stdout] --> src/api/models.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl ApiResponse { [INFO] [stdout] | --------------------------------- associated functions in this implementation [INFO] [stdout] 71 | /// Tạo response thành công [INFO] [stdout] 72 | pub fn success(data: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn error(message: &str) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `default_stock_attributes`, `find_attribute`, `update_weight`, and `normalize_weights` are never used [INFO] [stdout] --> src/config/attributes.rs:149:12 [INFO] [stdout] | [INFO] [stdout] 59 | impl AttributeSet { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn default_stock_attributes() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn find_attribute(&self, name: &str) -> Option<&AttributeDefinition> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn update_weight(&mut self, name: &str, new_weight: f64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 252 | pub fn normalize_weights(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_weight` and `normalize` are never used [INFO] [stdout] --> src/config/attributes.rs:315:12 [INFO] [stdout] | [INFO] [stdout] 270 | impl WeightConfig { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn set_weight(&mut self, name: &str, value: f64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn normalize(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MarketplaceType` is never used [INFO] [stdout] --> src/config/marketplace_profiles.rs:30:10 [INFO] [stdout] | [INFO] [stdout] 30 | pub enum MarketplaceType { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `default_opensea`, `default_magic_eden`, and `default_blur` are never used [INFO] [stdout] --> src/config/marketplace_profiles.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 51 | impl MarketplaceProfile { [INFO] [stdout] | ----------------------- associated functions in this implementation [INFO] [stdout] 52 | /// Tạo profile mặc định cho OpenSea [INFO] [stdout] 53 | pub fn default_opensea() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn default_magic_eden() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn default_blur() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `asset_type` is never used [INFO] [stdout] --> src/engine/mod.rs:113:8 [INFO] [stdout] | [INFO] [stdout] 111 | pub trait PricingEngine: Send + Sync { [INFO] [stdout] | ------------- method in this trait [INFO] [stdout] 112 | /// Loại tài sản mà engine xử lý [INFO] [stdout] 113 | fn asset_type(&self) -> AssetType; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `scoring` is never read [INFO] [stdout] --> src/engine/nft_valuator.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct NftValuator { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | scoring: ScoringEngine, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `total_volume` is never read [INFO] [stdout] --> src/engine/nft_valuator.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct CollectionData { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 34 | pub total_volume: f64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CollectionData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `token_id`, `name`, and `last_sale_price` are never read [INFO] [stdout] --> src/engine/nft_valuator.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct NftItemData { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 52 | /// Token ID [INFO] [stdout] 53 | pub token_id: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 54 | /// Tên item [INFO] [stdout] 55 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub last_sale_price: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NftItemData` 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: struct `ScoreBreakdown` is never constructed [INFO] [stdout] --> src/engine/scoring.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct ScoreBreakdown { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/engine/scoring.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct ScoringEngine { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 27 | config: Arc, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `calculate_composite_score`, `rank_assets`, `min_max_normalize`, `z_score_normalize`, and `calculate_data_confidence` are never used [INFO] [stdout] --> src/engine/scoring.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl ScoringEngine { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn calculate_composite_score( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn rank_assets(&self, scores: &[(String, f64)]) -> Vec<(String, f64, usize)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn min_max_normalize(values: &[f64]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn z_score_normalize(values: &[f64]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn calculate_data_confidence( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `MarketplaceScraper` is never used [INFO] [stdout] --> src/scrapers/mod.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait MarketplaceScraper: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CollectionInfo` is never constructed [INFO] [stdout] --> src/scrapers/mod.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct CollectionInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NftInfo` is never constructed [INFO] [stdout] --> src/scrapers/mod.rs:65:12 [INFO] [stdout] | [INFO] [stdout] 65 | pub struct NftInfo { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RateLimitedClient` is never constructed [INFO] [stdout] --> src/scrapers/mod.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct RateLimitedClient { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `new_with_proxy`, `get_client_for_request`, and `get_with_retry` are never used [INFO] [stdout] --> src/scrapers/mod.rs:98:12 [INFO] [stdout] | [INFO] [stdout] 96 | impl RateLimitedClient { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 97 | /// Tạo client mới không proxy [INFO] [stdout] 98 | pub fn new(rate_limit_ms: u64, user_agent: &str, timeout_secs: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn new_with_proxy( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | fn get_client_for_request(&self) -> (reqwest::Client, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub async fn get_with_retry( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OpenSeaScraper` is never constructed [INFO] [stdout] --> src/scrapers/opensea.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct OpenSeaScraper { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `api_headers` are never used [INFO] [stdout] --> src/scrapers/opensea.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl OpenSeaScraper { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 18 | /// Khởi tạo OpenSea scraper [INFO] [stdout] 19 | pub fn new(base_url: &str, api_key: &str, rate_limit_ms: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | fn api_headers(&self) -> Vec<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MagicEdenScraper` is never constructed [INFO] [stdout] --> src/scrapers/magic_eden.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct MagicEdenScraper { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `api_headers` are never used [INFO] [stdout] --> src/scrapers/magic_eden.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl MagicEdenScraper { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 18 | /// Khởi tạo Magic Eden scraper [INFO] [stdout] 19 | pub fn new(base_url: &str, api_key: &str, rate_limit_ms: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | fn api_headers(&self) -> Vec<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StockDataFetcher` is never constructed [INFO] [stdout] --> src/scrapers/stock_data.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct StockDataFetcher { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StockQuote` is never constructed [INFO] [stdout] --> src/scrapers/stock_data.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct StockQuote { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `fetch_historical`, `fetch_quote`, and `fetch_full` are never used [INFO] [stdout] --> src/scrapers/stock_data.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl StockDataFetcher { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 41 | /// Khởi tạo fetcher [INFO] [stdout] 42 | pub fn new(base_url: &str, rate_limit_ms: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub async fn fetch_historical( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub async fn fetch_quote(&self, symbol: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub async fn fetch_full(&self, symbol: &str, history_days: u32) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_yahoo_chart_response` is never used [INFO] [stdout] --> src/scrapers/stock_data.rs:164:4 [INFO] [stdout] | [INFO] [stdout] 164 | fn parse_yahoo_chart_response(data: &serde_json::Value, symbol: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_url` is never used [INFO] [stdout] --> src/scrapers/proxy_pool.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl ProxyConfig { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] 49 | /// Tạo URL proxy đầy đủ [INFO] [stdout] 50 | pub fn to_url(&self) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProxyState` is never constructed [INFO] [stdout] --> src/scrapers/proxy_pool.rs:69:8 [INFO] [stdout] | [INFO] [stdout] 69 | struct ProxyState { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `success_rate`, `mark_success`, and `mark_failure` are never used [INFO] [stdout] --> src/scrapers/proxy_pool.rs:81:8 [INFO] [stdout] | [INFO] [stdout] 80 | impl ProxyState { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 81 | fn new(config: ProxyConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | fn success_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | fn mark_success(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | fn mark_failure(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProxyPool` is never constructed [INFO] [stdout] --> src/scrapers/proxy_pool.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | pub struct ProxyPool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/scrapers/proxy_pool.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 164 | impl ProxyPool { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 165 | /// Khởi tạo proxy pool từ config [INFO] [stdout] 166 | pub fn new(config: ProxyPoolConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub fn alive_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 193 | pub fn get_next_proxy(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn report_success(&self, proxy_url: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 226 | pub fn report_failure(&self, proxy_url: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | fn find_proxy_state(&self, proxy_url: &str) -> Option<&Arc> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn get_stats(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn create_proxied_client( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProxyStats` is never constructed [INFO] [stdout] --> src/scrapers/proxy_pool.rs:270:12 [INFO] [stdout] | [INFO] [stdout] 270 | pub struct ProxyStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_webhook_signature` is never used [INFO] [stdout] --> src/crew_integration/mod.rs:218:8 [INFO] [stdout] | [INFO] [stdout] 218 | pub fn verify_webhook_signature(payload: &[u8], signature: &str, secret: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `save_price_data` is never used [INFO] [stdout] --> src/storage/models.rs:103:18 [INFO] [stdout] | [INFO] [stdout] 12 | impl ValuationRepository { [INFO] [stdout] | ------------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub async fn save_price_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ApiResponse` is never constructed [INFO] [stdout] --> src/api/models.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct ApiResponse { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `success` and `error` are never used [INFO] [stdout] --> src/api/models.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl ApiResponse { [INFO] [stdout] | --------------------------------- associated functions in this implementation [INFO] [stdout] 71 | /// Tạo response thành công [INFO] [stdout] 72 | pub fn success(data: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn error(message: &str) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 37s [INFO] running `Command { std: "docker" "inspect" "d522bf6bacfc088a975a1cbe2441026097f6c9d7cda51ef1cfde2e20eaf7c0f1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d522bf6bacfc088a975a1cbe2441026097f6c9d7cda51ef1cfde2e20eaf7c0f1", kill_on_drop: false }` [INFO] [stdout] d522bf6bacfc088a975a1cbe2441026097f6c9d7cda51ef1cfde2e20eaf7c0f1