[INFO] cloning repository https://github.com/lf2netr0/bp_quant_trading [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lf2netr0/bp_quant_trading" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flf2netr0%2Fbp_quant_trading", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flf2netr0%2Fbp_quant_trading'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 303cfc348f1968f741d4e0fb9a673d30fbd28cb1 [INFO] checking lf2netr0/bp_quant_trading against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flf2netr0%2Fbp_quant_trading" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-5-tc1/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/lf2netr0/bp_quant_trading [INFO] finished tweaking git repo https://github.com/lf2netr0/bp_quant_trading [INFO] tweaked toml for git repo https://github.com/lf2netr0/bp_quant_trading written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/lf2netr0/bp_quant_trading 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/lf2netr0/bp_quant_trading 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] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded windows-link v0.1.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 0cf79c96256d3ae1e6dd1586d968ed65be88788ea1b931c9f1f7a2f579b678f9 [INFO] running `Command { std: "docker" "start" "-a" "0cf79c96256d3ae1e6dd1586d968ed65be88788ea1b931c9f1f7a2f579b678f9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0cf79c96256d3ae1e6dd1586d968ed65be88788ea1b931c9f1f7a2f579b678f9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0cf79c96256d3ae1e6dd1586d968ed65be88788ea1b931c9f1f7a2f579b678f9", kill_on_drop: false }` [INFO] [stdout] 0cf79c96256d3ae1e6dd1586d968ed65be88788ea1b931c9f1f7a2f579b678f9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 995dad22b6ee459b5196bf796ecea520750196479ca829de62efcae89d7413b7 [INFO] running `Command { std: "docker" "start" "-a" "995dad22b6ee459b5196bf796ecea520750196479ca829de62efcae89d7413b7", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.102 [INFO] [stderr] Checking cfg-if v1.0.1 [INFO] [stderr] Compiling cc v1.2.26 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Compiling semver v1.0.26 [INFO] [stderr] Checking bitflags v2.9.1 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking signature v2.2.0 [INFO] [stderr] Checking toml_write v0.1.2 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Checking winnow v0.7.11 [INFO] [stderr] Checking is-terminal v0.4.16 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking ed25519 v2.2.3 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [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 futures-macro v0.3.31 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tokio v1.45.1 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.0 [INFO] [stderr] Checking zerovec v0.11.2 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Checking ed25519-dalek v2.1.1 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking icu_locale_core 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 idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tungstenite v0.21.0 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking serde_json v1.0.140 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking tokio-tungstenite v0.21.0 [INFO] [stderr] Checking toml v0.8.23 [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 backpack-hft-bot v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `debug` [INFO] [stdout] --> src/main.rs:9:30 [INFO] [stdout] | [INFO] [stdout] 9 | use log::{info, error, warn, debug}; [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: `debug` [INFO] [stdout] --> src/main.rs:9:30 [INFO] [stdout] | [INFO] [stdout] 9 | use log::{info, error, warn, debug}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_account` is never used [INFO] [stdout] --> src/api/rest.rs:34:18 [INFO] [stdout] | [INFO] [stdout] 20 | impl RestClient { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub async fn get_account(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Account` is never constructed [INFO] [stdout] --> src/api/rest.rs:282:12 [INFO] [stdout] | [INFO] [stdout] 282 | pub struct Account { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/api/rest.rs:334:9 [INFO] [stdout] | [INFO] [stdout] 331 | pub struct Order { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 334 | pub client_id: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 335 | #[serde(rename = "orderType")] [INFO] [stdout] 336 | pub order_type: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 337 | pub side: String, [INFO] [stdout] 338 | pub status: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub quantity: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 342 | #[serde(rename = "executedQuantity")] [INFO] [stdout] 343 | pub executed_quantity: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 344 | #[serde(rename = "quoteQuantity")] [INFO] [stdout] 345 | pub quote_quantity: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 346 | #[serde(rename = "executedQuoteQuantity")] [INFO] [stdout] 347 | pub executed_quote_quantity: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 348 | #[serde(rename = "timeInForce")] [INFO] [stdout] 349 | pub time_in_force: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 350 | #[serde(rename = "createdAt")] [INFO] [stdout] 351 | pub created_at: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Order` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/api/websocket.rs:281:11 [INFO] [stdout] | [INFO] [stdout] 281 | Depth(Depth), [INFO] [stdout] | ----- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `MarketEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 281 - Depth(Depth), [INFO] [stdout] 281 + Depth(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `event_type`, `event_time`, `inside_ask_quantity`, `inside_bid_quantity`, `update_id`, and `engine_timestamp` are never read [INFO] [stdout] --> src/api/websocket.rs:289:9 [INFO] [stdout] | [INFO] [stdout] 287 | pub struct BookTicker { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 288 | #[serde(rename = "e")] [INFO] [stdout] 289 | pub event_type: String, // Event type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 290 | #[serde(rename = "E")] [INFO] [stdout] 291 | pub event_time: u64, // Event time in microseconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 297 | pub inside_ask_quantity: String, // Inside ask quantity [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 301 | pub inside_bid_quantity: String, // Inside bid quantity [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 302 | #[serde(rename = "u")] [INFO] [stdout] 303 | pub update_id: Value, // 將 String 改為 Value 以適應不同類型 [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 304 | #[serde(rename = "T")] [INFO] [stdout] 305 | pub engine_timestamp: u64, // Engine timestamp in microseconds [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BookTicker` 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 fields are never read [INFO] [stdout] --> src/api/websocket.rs:311:9 [INFO] [stdout] | [INFO] [stdout] 309 | pub struct Depth { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 310 | #[serde(rename = "e")] [INFO] [stdout] 311 | pub event_type: String, // Event type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 312 | #[serde(rename = "E")] [INFO] [stdout] 313 | pub event_time: u64, // Event time in microseconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 314 | #[serde(rename = "s")] [INFO] [stdout] 315 | pub symbol: String, // Symbol [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 316 | #[serde(rename = "a")] [INFO] [stdout] 317 | pub asks: Vec>, // Asks [price, quantity] [INFO] [stdout] | ^^^^ [INFO] [stdout] 318 | #[serde(rename = "b")] [INFO] [stdout] 319 | pub bids: Vec>, // Bids [price, quantity] [INFO] [stdout] | ^^^^ [INFO] [stdout] 320 | #[serde(rename = "U")] [INFO] [stdout] 321 | pub first_update_id: u64, // First update ID in event [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 322 | #[serde(rename = "u")] [INFO] [stdout] 323 | pub last_update_id: u64, // Last update ID in event [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 324 | #[serde(rename = "T")] [INFO] [stdout] 325 | pub engine_timestamp: u64, // Engine timestamp in microseconds [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Depth` 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 fields are never read [INFO] [stdout] --> src/api/websocket.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 329 | pub struct Trade { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 330 | #[serde(rename = "e")] [INFO] [stdout] 331 | pub event_type: String, // Event type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 332 | #[serde(rename = "E")] [INFO] [stdout] 333 | pub event_time: u64, // Event time in microseconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 334 | #[serde(rename = "s")] [INFO] [stdout] 335 | pub symbol: String, // Symbol [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 339 | pub quantity: String, // Quantity [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 340 | #[serde(rename = "b")] [INFO] [stdout] 341 | pub buyer_order_id: Value, // 將 String 改為 Value 以適應不同類型 [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 342 | #[serde(rename = "a")] [INFO] [stdout] 343 | pub seller_order_id: Value, // 將 String 改為 Value 以適應不同類型 [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 344 | #[serde(rename = "t")] [INFO] [stdout] 345 | pub trade_id: u64, // Trade ID [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 346 | #[serde(rename = "T")] [INFO] [stdout] 347 | pub engine_timestamp: u64, // Engine timestamp in microseconds [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 348 | #[serde(rename = "m")] [INFO] [stdout] 349 | pub is_buyer_maker: bool, // Is the buyer the maker? [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Trade` 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 fields are never read [INFO] [stdout] --> src/api/websocket.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 353 | pub struct OrderUpdate { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 357 | pub event_time: u64, // Event time in microseconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 361 | pub client_order_id: Option, // 將 Option 改為 Option [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub order_type: String, // Order type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 366 | #[serde(rename = "f")] [INFO] [stdout] 367 | pub time_in_force: String, // Time in force [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 368 | #[serde(rename = "q")] [INFO] [stdout] 369 | pub quantity: Option, // Quantity (optional) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 370 | #[serde(rename = "Q")] [INFO] [stdout] 371 | pub quote_quantity: Option, // Quote quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 372 | #[serde(rename = "p")] [INFO] [stdout] 373 | pub price: Option, // Price (optional) [INFO] [stdout] | ^^^^^ [INFO] [stdout] 374 | #[serde(rename = "P")] [INFO] [stdout] 375 | pub trigger_price: Option, // Trigger price (optional) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 376 | #[serde(rename = "B")] [INFO] [stdout] 377 | pub trigger_by: Option, // Trigger by (optional) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 378 | #[serde(rename = "a")] [INFO] [stdout] 379 | pub take_profit_price: Option, // Take profit trigger price (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 380 | #[serde(rename = "b")] [INFO] [stdout] 381 | pub stop_loss_price: Option, // Stop loss trigger price (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 382 | #[serde(rename = "d")] [INFO] [stdout] 383 | pub take_profit_trigger_by: Option, // Take profit trigger by (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 384 | #[serde(rename = "g")] [INFO] [stdout] 385 | pub stop_loss_trigger_by: Option, // Stop loss trigger by (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 386 | #[serde(rename = "Y")] [INFO] [stdout] 387 | pub trigger_quantity: Option, // Trigger quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 388 | #[serde(rename = "X")] [INFO] [stdout] 389 | pub order_state: String, // Order state [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 390 | #[serde(rename = "R")] [INFO] [stdout] 391 | pub order_expiry_reason: Option, // Order expiry reason (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 395 | pub trade_id: Option, // Trade ID (optional) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 396 | #[serde(rename = "l")] [INFO] [stdout] 397 | pub fill_quantity: Option, // Fill quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 398 | #[serde(rename = "z")] [INFO] [stdout] 399 | pub executed_quantity: Option, // Executed quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 400 | #[serde(rename = "Z")] [INFO] [stdout] 401 | pub executed_quote_quantity: Option, // Executed quote quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 405 | pub is_maker: Option, // Whether the order was maker (optional) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 406 | #[serde(rename = "n")] [INFO] [stdout] 407 | pub fee: Option, // Fee (optional) [INFO] [stdout] | ^^^ [INFO] [stdout] 408 | #[serde(rename = "N")] [INFO] [stdout] 409 | pub fee_symbol: Option, // Fee symbol (optional) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 410 | #[serde(rename = "V")] [INFO] [stdout] 411 | pub self_trade_prevention: Option, // Self trade prevention (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 412 | #[serde(rename = "T")] [INFO] [stdout] 413 | pub engine_timestamp: u64, // Engine timestamp in microseconds [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 414 | #[serde(rename = "O")] [INFO] [stdout] 415 | pub origin: Option, // Origin of the update (optional) [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 416 | #[serde(rename = "I")] [INFO] [stdout] 417 | pub related_order_id: Option, // Related order ID (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OrderUpdate` 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 `active_orders` is never read [INFO] [stdout] --> src/config.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 22 | pub active_orders: usize, // 6 [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_order` and `get_active_orders_count` are never used [INFO] [stdout] --> src/order_manager.rs:92:18 [INFO] [stdout] | [INFO] [stdout] 17 | impl OrderManager { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub async fn update_order( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn get_active_orders_count(&self, symbol: &str, side: Option<&str>) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_panic_mode` and `reset_panic_mode` are never used [INFO] [stdout] --> src/risk_manager.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl RiskManager { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn is_panic_mode(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn reset_panic_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_account` is never used [INFO] [stdout] --> src/api/rest.rs:34:18 [INFO] [stdout] | [INFO] [stdout] 20 | impl RestClient { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub async fn get_account(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Account` is never constructed [INFO] [stdout] --> src/api/rest.rs:282:12 [INFO] [stdout] | [INFO] [stdout] 282 | pub struct Account { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/api/rest.rs:334:9 [INFO] [stdout] | [INFO] [stdout] 331 | pub struct Order { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 334 | pub client_id: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 335 | #[serde(rename = "orderType")] [INFO] [stdout] 336 | pub order_type: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 337 | pub side: String, [INFO] [stdout] 338 | pub status: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub quantity: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 342 | #[serde(rename = "executedQuantity")] [INFO] [stdout] 343 | pub executed_quantity: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 344 | #[serde(rename = "quoteQuantity")] [INFO] [stdout] 345 | pub quote_quantity: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 346 | #[serde(rename = "executedQuoteQuantity")] [INFO] [stdout] 347 | pub executed_quote_quantity: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 348 | #[serde(rename = "timeInForce")] [INFO] [stdout] 349 | pub time_in_force: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 350 | #[serde(rename = "createdAt")] [INFO] [stdout] 351 | pub created_at: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Order` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/api/websocket.rs:281:11 [INFO] [stdout] | [INFO] [stdout] 281 | Depth(Depth), [INFO] [stdout] | ----- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `MarketEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 281 - Depth(Depth), [INFO] [stdout] 281 + Depth(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `event_type`, `event_time`, `inside_ask_quantity`, `inside_bid_quantity`, `update_id`, and `engine_timestamp` are never read [INFO] [stdout] --> src/api/websocket.rs:289:9 [INFO] [stdout] | [INFO] [stdout] 287 | pub struct BookTicker { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 288 | #[serde(rename = "e")] [INFO] [stdout] 289 | pub event_type: String, // Event type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 290 | #[serde(rename = "E")] [INFO] [stdout] 291 | pub event_time: u64, // Event time in microseconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 297 | pub inside_ask_quantity: String, // Inside ask quantity [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 301 | pub inside_bid_quantity: String, // Inside bid quantity [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 302 | #[serde(rename = "u")] [INFO] [stdout] 303 | pub update_id: Value, // 將 String 改為 Value 以適應不同類型 [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 304 | #[serde(rename = "T")] [INFO] [stdout] 305 | pub engine_timestamp: u64, // Engine timestamp in microseconds [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BookTicker` 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 fields are never read [INFO] [stdout] --> src/api/websocket.rs:311:9 [INFO] [stdout] | [INFO] [stdout] 309 | pub struct Depth { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 310 | #[serde(rename = "e")] [INFO] [stdout] 311 | pub event_type: String, // Event type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 312 | #[serde(rename = "E")] [INFO] [stdout] 313 | pub event_time: u64, // Event time in microseconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 314 | #[serde(rename = "s")] [INFO] [stdout] 315 | pub symbol: String, // Symbol [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 316 | #[serde(rename = "a")] [INFO] [stdout] 317 | pub asks: Vec>, // Asks [price, quantity] [INFO] [stdout] | ^^^^ [INFO] [stdout] 318 | #[serde(rename = "b")] [INFO] [stdout] 319 | pub bids: Vec>, // Bids [price, quantity] [INFO] [stdout] | ^^^^ [INFO] [stdout] 320 | #[serde(rename = "U")] [INFO] [stdout] 321 | pub first_update_id: u64, // First update ID in event [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 322 | #[serde(rename = "u")] [INFO] [stdout] 323 | pub last_update_id: u64, // Last update ID in event [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 324 | #[serde(rename = "T")] [INFO] [stdout] 325 | pub engine_timestamp: u64, // Engine timestamp in microseconds [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Depth` 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 fields are never read [INFO] [stdout] --> src/api/websocket.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 329 | pub struct Trade { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 330 | #[serde(rename = "e")] [INFO] [stdout] 331 | pub event_type: String, // Event type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 332 | #[serde(rename = "E")] [INFO] [stdout] 333 | pub event_time: u64, // Event time in microseconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 334 | #[serde(rename = "s")] [INFO] [stdout] 335 | pub symbol: String, // Symbol [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 339 | pub quantity: String, // Quantity [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 340 | #[serde(rename = "b")] [INFO] [stdout] 341 | pub buyer_order_id: Value, // 將 String 改為 Value 以適應不同類型 [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 342 | #[serde(rename = "a")] [INFO] [stdout] 343 | pub seller_order_id: Value, // 將 String 改為 Value 以適應不同類型 [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 344 | #[serde(rename = "t")] [INFO] [stdout] 345 | pub trade_id: u64, // Trade ID [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 346 | #[serde(rename = "T")] [INFO] [stdout] 347 | pub engine_timestamp: u64, // Engine timestamp in microseconds [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 348 | #[serde(rename = "m")] [INFO] [stdout] 349 | pub is_buyer_maker: bool, // Is the buyer the maker? [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Trade` 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 fields are never read [INFO] [stdout] --> src/api/websocket.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 353 | pub struct OrderUpdate { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 357 | pub event_time: u64, // Event time in microseconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 361 | pub client_order_id: Option, // 將 Option 改為 Option [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub order_type: String, // Order type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 366 | #[serde(rename = "f")] [INFO] [stdout] 367 | pub time_in_force: String, // Time in force [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 368 | #[serde(rename = "q")] [INFO] [stdout] 369 | pub quantity: Option, // Quantity (optional) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 370 | #[serde(rename = "Q")] [INFO] [stdout] 371 | pub quote_quantity: Option, // Quote quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 372 | #[serde(rename = "p")] [INFO] [stdout] 373 | pub price: Option, // Price (optional) [INFO] [stdout] | ^^^^^ [INFO] [stdout] 374 | #[serde(rename = "P")] [INFO] [stdout] 375 | pub trigger_price: Option, // Trigger price (optional) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 376 | #[serde(rename = "B")] [INFO] [stdout] 377 | pub trigger_by: Option, // Trigger by (optional) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 378 | #[serde(rename = "a")] [INFO] [stdout] 379 | pub take_profit_price: Option, // Take profit trigger price (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 380 | #[serde(rename = "b")] [INFO] [stdout] 381 | pub stop_loss_price: Option, // Stop loss trigger price (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 382 | #[serde(rename = "d")] [INFO] [stdout] 383 | pub take_profit_trigger_by: Option, // Take profit trigger by (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 384 | #[serde(rename = "g")] [INFO] [stdout] 385 | pub stop_loss_trigger_by: Option, // Stop loss trigger by (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 386 | #[serde(rename = "Y")] [INFO] [stdout] 387 | pub trigger_quantity: Option, // Trigger quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 388 | #[serde(rename = "X")] [INFO] [stdout] 389 | pub order_state: String, // Order state [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 390 | #[serde(rename = "R")] [INFO] [stdout] 391 | pub order_expiry_reason: Option, // Order expiry reason (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 395 | pub trade_id: Option, // Trade ID (optional) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 396 | #[serde(rename = "l")] [INFO] [stdout] 397 | pub fill_quantity: Option, // Fill quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 398 | #[serde(rename = "z")] [INFO] [stdout] 399 | pub executed_quantity: Option, // Executed quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 400 | #[serde(rename = "Z")] [INFO] [stdout] 401 | pub executed_quote_quantity: Option, // Executed quote quantity (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 405 | pub is_maker: Option, // Whether the order was maker (optional) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 406 | #[serde(rename = "n")] [INFO] [stdout] 407 | pub fee: Option, // Fee (optional) [INFO] [stdout] | ^^^ [INFO] [stdout] 408 | #[serde(rename = "N")] [INFO] [stdout] 409 | pub fee_symbol: Option, // Fee symbol (optional) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 410 | #[serde(rename = "V")] [INFO] [stdout] 411 | pub self_trade_prevention: Option, // Self trade prevention (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 412 | #[serde(rename = "T")] [INFO] [stdout] 413 | pub engine_timestamp: u64, // Engine timestamp in microseconds [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 414 | #[serde(rename = "O")] [INFO] [stdout] 415 | pub origin: Option, // Origin of the update (optional) [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 416 | #[serde(rename = "I")] [INFO] [stdout] 417 | pub related_order_id: Option, // Related order ID (optional) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OrderUpdate` 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 `active_orders` is never read [INFO] [stdout] --> src/config.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 22 | pub active_orders: usize, // 6 [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_order` and `get_active_orders_count` are never used [INFO] [stdout] --> src/order_manager.rs:92:18 [INFO] [stdout] | [INFO] [stdout] 17 | impl OrderManager { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub async fn update_order( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn get_active_orders_count(&self, symbol: &str, side: Option<&str>) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_panic_mode` and `reset_panic_mode` are never used [INFO] [stdout] --> src/risk_manager.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl RiskManager { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn is_panic_mode(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn reset_panic_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.91s [INFO] running `Command { std: "docker" "inspect" "995dad22b6ee459b5196bf796ecea520750196479ca829de62efcae89d7413b7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "995dad22b6ee459b5196bf796ecea520750196479ca829de62efcae89d7413b7", kill_on_drop: false }` [INFO] [stdout] 995dad22b6ee459b5196bf796ecea520750196479ca829de62efcae89d7413b7