[INFO] cloning repository https://github.com/cxcen/metis [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cxcen/metis" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcxcen%2Fmetis", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcxcen%2Fmetis'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d5bb0a125217fd071bca7f6dd8a2cd31423b2469 [INFO] checking cxcen/metis against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcxcen%2Fmetis" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/cxcen/metis [INFO] finished tweaking git repo https://github.com/cxcen/metis [INFO] tweaked toml for git repo https://github.com/cxcen/metis written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/cxcen/metis on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/cxcen/metis 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" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5d3483331e99d900a4e13712435b1674c949268e80c264ea1c25ca2faf7987a2 [INFO] running `Command { std: "docker" "start" "-a" "5d3483331e99d900a4e13712435b1674c949268e80c264ea1c25ca2faf7987a2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5d3483331e99d900a4e13712435b1674c949268e80c264ea1c25ca2faf7987a2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5d3483331e99d900a4e13712435b1674c949268e80c264ea1c25ca2faf7987a2", kill_on_drop: false }` [INFO] [stdout] 5d3483331e99d900a4e13712435b1674c949268e80c264ea1c25ca2faf7987a2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b66dfbfa01f3294d70deff4037ebc5ef7893982684f7c08cd77082bffffc7e92 [INFO] running `Command { std: "docker" "start" "-a" "b66dfbfa01f3294d70deff4037ebc5ef7893982684f7c08cd77082bffffc7e92", kill_on_drop: false }` [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Compiling serde_json v1.0.141 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Compiling rust_decimal v1.37.2 [INFO] [stderr] Checking is-terminal v0.4.16 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Checking tokio v1.46.1 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling rust_decimal_macros v1.37.1 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.0 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking zerovec v0.11.2 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking h2 v0.3.27 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking metis v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `HashSet` and `VecDeque` [INFO] [stdout] --> src/graph.rs:7:33 [INFO] [stdout] | [INFO] [stdout] 7 | use std::collections::{HashMap, HashSet, VecDeque}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/utils.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `HashSet` and `VecDeque` [INFO] [stdout] --> src/graph.rs:7:33 [INFO] [stdout] | [INFO] [stdout] 7 | use std::collections::{HashMap, HashSet, VecDeque}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/utils.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `token` is never read [INFO] [stdout] --> src/types.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 140 | pub struct GraphNode { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 141 | /// 该节点对应的代币 [INFO] [stdout] 142 | pub token: Token, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GraphNode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `token` is never read [INFO] [stdout] --> src/types.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 140 | pub struct GraphNode { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 141 | /// 该节点对应的代币 [INFO] [stdout] 142 | pub token: Token, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GraphNode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `best_route` is never read [INFO] [stdout] --> src/types.rs:163:9 [INFO] [stdout] | [INFO] [stdout] 155 | pub struct IterationState { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 163 | pub best_route: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IterationState` 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 `best_route` is never read [INFO] [stdout] --> src/types.rs:163:9 [INFO] [stdout] | [INFO] [stdout] 155 | pub struct IterationState { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 163 | pub best_route: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IterationState` 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 `QuoteRequest` is never constructed [INFO] [stdout] --> src/types.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 168 | pub struct QuoteRequest { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `quote_cache` is never read [INFO] [stdout] --> src/graph.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct RoutingGraph { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | pub quote_cache: Arc>, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_token_by_symbol` is never used [INFO] [stdout] --> src/graph.rs:377:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl RoutingGraph { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 377 | fn get_token_by_symbol(&self, symbol: &str) -> Result<&Token> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `quote_service` and `config` are never read [INFO] [stdout] --> src/routing.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct MetisRouter { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | quote_service: QuoteService, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 16 | /// 路由器配置参数 [INFO] [stdout] 17 | config: RouterConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_quote`, `update_market_data`, and `get_routing_stats` are never used [INFO] [stdout] --> src/routing.rs:129:18 [INFO] [stdout] | [INFO] [stdout] 20 | impl MetisRouter { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 129 | pub async fn get_quote(&self, request: &QuoteRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub async fn update_market_data(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn get_routing_stats(&self) -> RoutingStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RoutingStats` is never constructed [INFO] [stdout] --> src/routing.rs:219:12 [INFO] [stdout] | [INFO] [stdout] 219 | pub struct RoutingStats { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cache_ttl_seconds`, `max_retries`, `timeout_seconds`, and `enable_cache` are never read [INFO] [stdout] --> src/quote.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct QuoteConfig { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 21 | /// 缓存条目的生存时间(秒) [INFO] [stdout] 22 | pub cache_ttl_seconds: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 23 | /// 获取报价失败时的最大重试次数 [INFO] [stdout] 24 | pub max_retries: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 25 | /// 请求超时时间(秒) [INFO] [stdout] 26 | pub timeout_seconds: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | /// 是否启用缓存功能 [INFO] [stdout] 28 | pub enable_cache: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `QuoteConfig` 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 `quote` and `expires_at` are never read [INFO] [stdout] --> src/quote.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 44 | struct CachedQuote { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 45 | /// 缓存的报价响应 [INFO] [stdout] 46 | quote: QuoteResponse, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 47 | /// 缓存条目的过期时间 [INFO] [stdout] 48 | expires_at: Instant, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CachedQuote` 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: multiple methods are never used [INFO] [stdout] --> src/quote.rs:60:18 [INFO] [stdout] | [INFO] [stdout] 51 | impl QuoteService { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 60 | pub async fn get_quote(&self, request: &QuoteRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | async fn fetch_quote_from_dex(&self, request: &QuoteRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn calculate_price_impact(&self, trade_amount: Decimal, liquidity: Decimal) -> Decimal { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | fn generate_cache_key(&self, request: &QuoteRequest) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub async fn get_multi_dex_quotes( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn cleanup_cache(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn get_cache_stats(&self) -> CacheStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/quote.rs:245:12 [INFO] [stdout] | [INFO] [stdout] 245 | pub struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MathUtils` is never constructed [INFO] [stdout] --> src/utils.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct MathUtils; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `calculate_edge_weight`, `calculate_effective_rate`, `calculate_split_ratios`, `calculate_amm_price_impact`, `calculate_slippage_bounds`, and `calculate_gas_cost` are never used [INFO] [stdout] --> src/utils.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl MathUtils { [INFO] [stdout] | -------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn calculate_edge_weight(exchange_rate: Decimal) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn calculate_effective_rate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn calculate_split_ratios(num_splits: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn calculate_amm_price_impact( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn calculate_slippage_bounds( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn calculate_gas_cost( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FormatUtils` is never constructed [INFO] [stdout] --> src/utils.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct FormatUtils; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `format_percentage`, `format_currency`, `format_route_summary`, and `format_split_route_summary` are never used [INFO] [stdout] --> src/utils.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 140 | impl FormatUtils { [INFO] [stdout] | ---------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn format_percentage(value: Decimal) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn format_currency(value: Decimal, symbol: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn format_route_summary(route: &Route) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 198 | pub fn format_split_route_summary(split_route: &SplitRoute) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ValidationUtils` is never constructed [INFO] [stdout] --> src/utils.rs:226:12 [INFO] [stdout] | [INFO] [stdout] 226 | pub struct ValidationUtils; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `validate_route_request` and `validate_route_response` are never used [INFO] [stdout] --> src/utils.rs:236:12 [INFO] [stdout] | [INFO] [stdout] 228 | impl ValidationUtils { [INFO] [stdout] | -------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 236 | pub fn validate_route_request(request: &RouteRequest) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn validate_route_response(response: &RouteResponse) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PerformanceUtils` is never constructed [INFO] [stdout] --> src/utils.rs:306:12 [INFO] [stdout] | [INFO] [stdout] 306 | pub struct PerformanceUtils; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `measure_execution_time`, `calculate_throughput`, and `calculate_average_time` are never used [INFO] [stdout] --> src/utils.rs:316:18 [INFO] [stdout] | [INFO] [stdout] 308 | impl PerformanceUtils { [INFO] [stdout] | --------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 316 | pub async fn measure_execution_time(func: F) -> (T, std::time::Duration) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 334 | pub fn calculate_throughput(operations: usize, duration: std::time::Duration) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 350 | pub fn calculate_average_time(times: &[std::time::Duration]) -> std::time::Duration { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheUtils` is never constructed [INFO] [stdout] --> src/utils.rs:367:12 [INFO] [stdout] | [INFO] [stdout] 367 | pub struct CacheUtils; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `generate_route_cache_key`, `generate_quote_cache_key`, and `is_cache_expired` are never used [INFO] [stdout] --> src/utils.rs:377:12 [INFO] [stdout] | [INFO] [stdout] 369 | impl CacheUtils { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 377 | pub fn generate_route_cache_key(request: &RouteRequest) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | pub fn generate_quote_cache_key(request: &QuoteRequest) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 409 | pub fn is_cache_expired(created_at: std::time::Instant, ttl_seconds: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QuoteRequest` is never constructed [INFO] [stdout] --> src/types.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 168 | pub struct QuoteRequest { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `quote_cache` is never read [INFO] [stdout] --> src/graph.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct RoutingGraph { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | pub quote_cache: Arc>, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_token_by_symbol` is never used [INFO] [stdout] --> src/graph.rs:377:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl RoutingGraph { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 377 | fn get_token_by_symbol(&self, symbol: &str) -> Result<&Token> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `quote_service` and `config` are never read [INFO] [stdout] --> src/routing.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct MetisRouter { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | quote_service: QuoteService, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 16 | /// 路由器配置参数 [INFO] [stdout] 17 | config: RouterConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_quote`, `update_market_data`, and `get_routing_stats` are never used [INFO] [stdout] --> src/routing.rs:129:18 [INFO] [stdout] | [INFO] [stdout] 20 | impl MetisRouter { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 129 | pub async fn get_quote(&self, request: &QuoteRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub async fn update_market_data(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn get_routing_stats(&self) -> RoutingStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RoutingStats` is never constructed [INFO] [stdout] --> src/routing.rs:219:12 [INFO] [stdout] | [INFO] [stdout] 219 | pub struct RoutingStats { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cache_ttl_seconds`, `max_retries`, `timeout_seconds`, and `enable_cache` are never read [INFO] [stdout] --> src/quote.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct QuoteConfig { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 21 | /// 缓存条目的生存时间(秒) [INFO] [stdout] 22 | pub cache_ttl_seconds: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 23 | /// 获取报价失败时的最大重试次数 [INFO] [stdout] 24 | pub max_retries: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 25 | /// 请求超时时间(秒) [INFO] [stdout] 26 | pub timeout_seconds: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | /// 是否启用缓存功能 [INFO] [stdout] 28 | pub enable_cache: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `QuoteConfig` 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 `quote` and `expires_at` are never read [INFO] [stdout] --> src/quote.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 44 | struct CachedQuote { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 45 | /// 缓存的报价响应 [INFO] [stdout] 46 | quote: QuoteResponse, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 47 | /// 缓存条目的过期时间 [INFO] [stdout] 48 | expires_at: Instant, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CachedQuote` 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: multiple methods are never used [INFO] [stdout] --> src/quote.rs:60:18 [INFO] [stdout] | [INFO] [stdout] 51 | impl QuoteService { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 60 | pub async fn get_quote(&self, request: &QuoteRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | async fn fetch_quote_from_dex(&self, request: &QuoteRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn calculate_price_impact(&self, trade_amount: Decimal, liquidity: Decimal) -> Decimal { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | fn generate_cache_key(&self, request: &QuoteRequest) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub async fn get_multi_dex_quotes( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn cleanup_cache(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn get_cache_stats(&self) -> CacheStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/quote.rs:245:12 [INFO] [stdout] | [INFO] [stdout] 245 | pub struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MathUtils` is never constructed [INFO] [stdout] --> src/utils.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct MathUtils; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `calculate_edge_weight`, `calculate_effective_rate`, `calculate_split_ratios`, `calculate_amm_price_impact`, `calculate_slippage_bounds`, and `calculate_gas_cost` are never used [INFO] [stdout] --> src/utils.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl MathUtils { [INFO] [stdout] | -------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn calculate_edge_weight(exchange_rate: Decimal) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn calculate_effective_rate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn calculate_split_ratios(num_splits: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn calculate_amm_price_impact( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn calculate_slippage_bounds( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn calculate_gas_cost( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FormatUtils` is never constructed [INFO] [stdout] --> src/utils.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct FormatUtils; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `format_percentage`, `format_currency`, `format_route_summary`, and `format_split_route_summary` are never used [INFO] [stdout] --> src/utils.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 140 | impl FormatUtils { [INFO] [stdout] | ---------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn format_percentage(value: Decimal) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn format_currency(value: Decimal, symbol: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn format_route_summary(route: &Route) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 198 | pub fn format_split_route_summary(split_route: &SplitRoute) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ValidationUtils` is never constructed [INFO] [stdout] --> src/utils.rs:226:12 [INFO] [stdout] | [INFO] [stdout] 226 | pub struct ValidationUtils; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `validate_route_request` and `validate_route_response` are never used [INFO] [stdout] --> src/utils.rs:236:12 [INFO] [stdout] | [INFO] [stdout] 228 | impl ValidationUtils { [INFO] [stdout] | -------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 236 | pub fn validate_route_request(request: &RouteRequest) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn validate_route_response(response: &RouteResponse) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PerformanceUtils` is never constructed [INFO] [stdout] --> src/utils.rs:306:12 [INFO] [stdout] | [INFO] [stdout] 306 | pub struct PerformanceUtils; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `measure_execution_time`, `calculate_throughput`, and `calculate_average_time` are never used [INFO] [stdout] --> src/utils.rs:316:18 [INFO] [stdout] | [INFO] [stdout] 308 | impl PerformanceUtils { [INFO] [stdout] | --------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 316 | pub async fn measure_execution_time(func: F) -> (T, std::time::Duration) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 334 | pub fn calculate_throughput(operations: usize, duration: std::time::Duration) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 350 | pub fn calculate_average_time(times: &[std::time::Duration]) -> std::time::Duration { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheUtils` is never constructed [INFO] [stdout] --> src/utils.rs:367:12 [INFO] [stdout] | [INFO] [stdout] 367 | pub struct CacheUtils; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `generate_route_cache_key`, `generate_quote_cache_key`, and `is_cache_expired` are never used [INFO] [stdout] --> src/utils.rs:377:12 [INFO] [stdout] | [INFO] [stdout] 369 | impl CacheUtils { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 377 | pub fn generate_route_cache_key(request: &RouteRequest) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | pub fn generate_quote_cache_key(request: &QuoteRequest) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 409 | pub fn is_cache_expired(created_at: std::time::Instant, ttl_seconds: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 49.12s [INFO] running `Command { std: "docker" "inspect" "b66dfbfa01f3294d70deff4037ebc5ef7893982684f7c08cd77082bffffc7e92", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b66dfbfa01f3294d70deff4037ebc5ef7893982684f7c08cd77082bffffc7e92", kill_on_drop: false }` [INFO] [stdout] b66dfbfa01f3294d70deff4037ebc5ef7893982684f7c08cd77082bffffc7e92