[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<Route>,
[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<Route>,
[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<DashMap<String, QuoteResponse>>,
[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<QuoteResponse> {
[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<QuoteResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     async fn fetch_quote_from_dex(&self, request: &QuoteRequest) -> Result<QuoteResponse> {
[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<Decimal> {
[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<F, T>(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<DashMap<String, QuoteResponse>>,
[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<QuoteResponse> {
[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<QuoteResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     async fn fetch_quote_from_dex(&self, request: &QuoteRequest) -> Result<QuoteResponse> {
[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<Decimal> {
[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<F, T>(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
