[INFO] cloning repository https://github.com/achilovbakhrom/arbitrage-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/achilovbakhrom/arbitrage-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fachilovbakhrom%2Farbitrage-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fachilovbakhrom%2Farbitrage-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 15a092f278e5425db5989a6373635b89e62e4446
[INFO] checking achilovbakhrom/arbitrage-rust against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fachilovbakhrom%2Farbitrage-rust" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/achilovbakhrom/arbitrage-rust
[INFO] finished tweaking git repo https://github.com/achilovbakhrom/arbitrage-rust
[INFO] tweaked toml for git repo https://github.com/achilovbakhrom/arbitrage-rust written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/achilovbakhrom/arbitrage-rust on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 258 packages to highest compatible versions
[INFO] [stderr]       Adding base64 v0.22.1 (available: v0.23.1)
[INFO] [stderr]       Adding ed25519-dalek v2.2.0 (available: v3.0.0)
[INFO] [stderr]       Adding figlet-rs v0.1.5 (available: v1.0.0)
[INFO] [stderr]       Adding generic-array v0.14.7 (available: v0.14.9)
[INFO] [stderr]       Adding hmac v0.12.1 (available: v0.13.0)
[INFO] [stderr]       Adding rand v0.9.5 (available: v0.10.2)
[INFO] [stderr]       Adding reqwest v0.12.28 (available: v0.13.5)
[INFO] [stderr]       Adding sha2 v0.10.9 (available: v0.11.0)
[INFO] [stderr]       Adding string_cache v0.8.9 (available: v0.11.0)
[INFO] [stderr]       Adding tokio-tungstenite v0.27.0 (available: v0.30.0)
[INFO] [stderr]       Adding tungstenite v0.27.0 (available: v0.30.0)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.aarch64-apple-darwin.rustflags
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-unknown-linux-gnu.rustflags
[INFO] [stderr] warning: `rust-arb-optimized` (manifest) generated 2 warnings
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tokio-tungstenite v0.27.0
[INFO] [stderr]   Downloaded rpmalloc v0.2.2
[INFO] [stderr]   Downloaded rpmalloc-sys v0.2.3+b097fd0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851
[INFO] running `Command { std: "docker" "start" "2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.aarch64-apple-darwin.rustflags
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-unknown-linux-gnu.rustflags
[INFO] [stderr] warning: `rust-arb-optimized` (manifest) generated 2 warnings
[INFO] [stderr]     Checking smallvec v1.16.1
[INFO] [stderr]     Checking bitflags v2.13.2
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling crossbeam-utils v0.8.23
[INFO] [stderr]    Compiling zerocopy v0.8.57
[INFO] [stderr]     Checking mio v1.2.3
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking futures-util v0.3.34
[INFO] [stderr]     Checking zerovec v0.11.8
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.21
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]     Checking regex-automata v0.4.18
[INFO] [stderr]    Compiling rpmalloc-sys v0.2.3+b097fd0
[INFO] [stderr]    Compiling crossbeam-deque v0.8.8
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]     Checking memchr v2.8.3
[INFO] [stderr]     Checking time v0.3.55
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]     Checking phf_shared v0.11.3
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking sha1 v0.10.7
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking crossbeam-channel v0.5.17
[INFO] [stderr]     Checking potential_utf v0.1.6
[INFO] [stderr]     Checking serde_json v1.0.151
[INFO] [stderr]     Checking crossbeam-queue v0.3.14
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking tinystr v0.8.4
[INFO] [stderr]     Checking zerotrie v0.2.5
[INFO] [stderr]     Checking icu_collections v2.3.0
[INFO] [stderr]     Checking curve25519-dalek v4.1.3
[INFO] [stderr]     Checking precomputed-hash v0.1.1
[INFO] [stderr]     Checking string_cache v0.8.9
[INFO] [stderr]     Checking crossbeam v0.8.5
[INFO] [stderr]     Checking icu_locale_core v2.3.0
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking figlet-rs v0.1.5
[INFO] [stderr]     Checking colored v3.1.1
[INFO] [stderr]     Checking ctrlc v3.5.2
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking icu_provider v2.3.1
[INFO] [stderr]     Checking icu_normalizer v2.3.0
[INFO] [stderr]     Checking icu_properties v2.3.0
[INFO] [stderr]     Checking rpmalloc v0.2.2
[INFO] [stderr]     Checking ed25519-dalek v2.2.0
[INFO] [stderr]     Checking tracing-appender v0.2.5
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking h2 v0.4.19
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.5
[INFO] [stderr]     Checking tungstenite v0.27.0
[INFO] [stderr]     Checking hyper v1.11.1
[INFO] [stderr]     Checking tokio-tungstenite v0.27.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking rust-arb-optimized v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: fields `min_price` and `max_price` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     #[serde(rename = "PRICE_FILTER")] #[serde(rename_all = "camelCase")] PriceFilter {
[INFO] [stdout]    |                                                                          ----------- fields in this variant
[INFO] [stdout] 61 |         min_price: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 62 |         max_price: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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: fields `apply_to_market` and `avg_price_mins` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 70 |     #[serde(rename = "MIN_NOTIONAL")] #[serde(rename_all = "camelCase")] MinNotional {
[INFO] [stdout]    |                                                                          ----------- fields in this variant
[INFO] [stdout] 71 |         min_notional: String,
[INFO] [stdout] 72 |         apply_to_market: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |         avg_price_mins: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `apply_min_to_market`, `apply_max_to_market`, and `avg_price_mins` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     #[serde(rename = "NOTIONAL")] #[serde(rename_all = "camelCase")] Notional {
[INFO] [stdout]    |                                                                      -------- fields in this variant
[INFO] [stdout] 76 |         min_notional: String,
[INFO] [stdout] 77 |         apply_min_to_market: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |         max_notional: String,
[INFO] [stdout] 79 |         apply_max_to_market: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |         avg_price_mins: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `step_size` is never read
[INFO] [stdout]   --> src/exchange/binance.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     #[serde(rename = "MARKET_LOT_SIZE")] #[serde(rename_all = "camelCase")] MarketLotSize {
[INFO] [stdout]    |                                                                             ------------- field in this variant
[INFO] [stdout] ...
[INFO] [stdout] 85 |         step_size: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `multiplier_up`, `multiplier_down`, and `avg_price_mins` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |     #[serde(rename = "PERCENT_PRICE")] #[serde(rename_all = "camelCase")] PercentPrice {
[INFO] [stdout]    |                                                                           ------------ fields in this variant
[INFO] [stdout] 88 |         multiplier_up: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 89 |         multiplier_down: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 90 |         avg_price_mins: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `max_num_orders` is never read
[INFO] [stdout]   --> src/exchange/binance.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     #[serde(rename = "MAX_NUM_ORDERS")] #[serde(rename_all = "camelCase")] MaxNumOrders {
[INFO] [stdout]    |                                                                            ------------ field in this variant
[INFO] [stdout] 93 |         max_num_orders: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `price`, `time`, and `update_time` are never read
[INFO] [stdout]   --> src/exchange/fix_api.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct OrderStatusResponse {
[INFO] [stdout]    |        ------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub price: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 35 |     pub update_time: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderStatusResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Execution` and `RateLimit` are never constructed
[INFO] [stdout]   --> src/exchange/fix_api.rs:44:44
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum FixError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 44 |     #[error("Order execution error: {0}")] Execution(String),
[INFO] [stdout]    |                                            ^^^^^^^^^
[INFO] [stdout] 45 |     #[error("Rate limit exceeded")]
[INFO] [stdout] 46 |     RateLimit,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FixError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/exchange/fix_api.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct ExecutionResult {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 75 |     pub client_order_id: String,
[INFO] [stdout] 76 |     pub order_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 77 |     pub symbol: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub leaves_qty: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 83 |     pub order_status: String,
[INFO] [stdout] 84 |     pub exec_type: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 85 |     pub last_px: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 86 |     pub last_qty: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 87 |     pub execution_time: Duration,
[INFO] [stdout] 88 |     pub reject_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionResult` 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/exchange/user_data_ws.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ExecutionReport {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 33 |     #[serde(rename = "e")]
[INFO] [stdout] 34 |     event_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 35 |     #[serde(rename = "E")]
[INFO] [stdout] 36 |     event_time: u64,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     order_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 45 |     #[serde(rename = "f")]
[INFO] [stdout] 46 |     time_in_force: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     order_price: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 51 |     #[serde(rename = "P")]
[INFO] [stdout] 52 |     stop_price: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 53 |     #[serde(rename = "F")]
[INFO] [stdout] 54 |     iceberg_quantity: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     #[serde(rename = "g")]
[INFO] [stdout] 56 |     order_list_id: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 57 |     #[serde(rename = "C")]
[INFO] [stdout] 58 |     original_client_order_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     commission_amount: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     #[serde(rename = "N")]
[INFO] [stdout] 76 |     commission_asset: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     #[serde(rename = "T")]
[INFO] [stdout] 78 |     transaction_time: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     #[serde(rename = "t")]
[INFO] [stdout] 80 |     trade_id: i64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 81 |     #[serde(rename = "I")]
[INFO] [stdout] 82 |     order_id_ignore: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 83 |     #[serde(rename = "w")]
[INFO] [stdout] 84 |     is_order_on_book: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     #[serde(rename = "m")]
[INFO] [stdout] 86 |     is_maker_side: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 87 |     #[serde(rename = "M")]
[INFO] [stdout] 88 |     ignore_2: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 89 |     #[serde(rename = "O")]
[INFO] [stdout] 90 |     order_creation_time: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     last_quote_qty: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     #[serde(rename = "Q")]
[INFO] [stdout] 96 |     quote_order_qty: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionReport` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data` is never read
[INFO] [stdout]    --> src/exchange/user_data_ws.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 100 | struct RawUserDataEvent {
[INFO] [stdout]     |        ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 104 |     data: serde_json::Value,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawUserDataEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `api_secret` is never read
[INFO] [stdout]    --> src/exchange/user_data_ws.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct UserDataWebSocket {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 108 |     api_key: String,
[INFO] [stdout] 109 |     api_secret: String,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `keepalive_listen_key` and `needs_keepalive` are never used
[INFO] [stdout]    --> src/exchange/user_data_ws.rs:154:18
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl UserDataWebSocket {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub async fn keepalive_listen_key(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn needs_keepalive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `simulated_profit_ratio`, `simulated_final_amount`, `start_amount`, and `timestamp` are never read
[INFO] [stdout]   --> src/utils/simulation_logger.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SimulationResult {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub simulated_profit_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     pub simulated_profit_percentage: f64,
[INFO] [stdout] 13 |     pub simulated_final_amount: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     pub start_amount: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 15 |     pub symbol_prices: [(String, f64); 3],
[INFO] [stdout] 16 |     pub timestamp: chrono::DateTime<chrono::Local>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SimulationResult` 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 `opportunity_id`, `path`, `actual_profit_ratio`, `actual_final_amount`, `start_amount`, and `timestamp` are never read
[INFO] [stdout]   --> src/utils/simulation_logger.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct ExecutionResult {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 21 |     pub opportunity_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     pub path: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 23 |     pub actual_profit_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub actual_profit_percentage: f64,
[INFO] [stdout] 25 |     pub actual_final_amount: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     pub start_amount: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub timestamp: chrono::DateTime<chrono::Local>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionResult` 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 `opportunity_id`, `profit_difference`, `profit_percentage_difference`, and `price_slippage` are never read
[INFO] [stdout]   --> src/utils/simulation_logger.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct ComparisonResult {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 35 |     pub opportunity_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub profit_difference: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 39 |     pub profit_percentage_difference: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |     pub price_slippage: [(String, f64); 3],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ComparisonResult` 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 `symbol_map` is never read
[INFO] [stdout]   --> src/utils/simulation_logger.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct SimulationLogger {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 44 |     orderbook_manager: Arc<OrderBookManager>,
[INFO] [stdout] 45 |     symbol_map: Arc<SymbolMap>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start_asset` and `end_asset` are never read
[INFO] [stdout]   --> src/models/triangular_path.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct TriangularPath {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub start_asset: Arc<str>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 12 |     pub end_asset: Arc<str>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TriangularPath` 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 `symbols_involved` is never read
[INFO] [stdout]   --> src/arbitrage/detector.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ArbitrageOpportunity {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub symbols_involved: [u16; 3],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ArbitrageOpportunity` 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 `min_price` and `max_price` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     #[serde(rename = "PRICE_FILTER")] #[serde(rename_all = "camelCase")] PriceFilter {
[INFO] [stdout]    |                                                                          ----------- fields in this variant
[INFO] [stdout] 61 |         min_price: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 62 |         max_price: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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: fields `apply_to_market` and `avg_price_mins` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 70 |     #[serde(rename = "MIN_NOTIONAL")] #[serde(rename_all = "camelCase")] MinNotional {
[INFO] [stdout]    |                                                                          ----------- fields in this variant
[INFO] [stdout] 71 |         min_notional: String,
[INFO] [stdout] 72 |         apply_to_market: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |         avg_price_mins: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `apply_min_to_market`, `apply_max_to_market`, and `avg_price_mins` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     #[serde(rename = "NOTIONAL")] #[serde(rename_all = "camelCase")] Notional {
[INFO] [stdout]    |                                                                      -------- fields in this variant
[INFO] [stdout] 76 |         min_notional: String,
[INFO] [stdout] 77 |         apply_min_to_market: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |         max_notional: String,
[INFO] [stdout] 79 |         apply_max_to_market: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 80 |         avg_price_mins: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `step_size` is never read
[INFO] [stdout]   --> src/exchange/binance.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     #[serde(rename = "MARKET_LOT_SIZE")] #[serde(rename_all = "camelCase")] MarketLotSize {
[INFO] [stdout]    |                                                                             ------------- field in this variant
[INFO] [stdout] ...
[INFO] [stdout] 85 |         step_size: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `multiplier_up`, `multiplier_down`, and `avg_price_mins` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |     #[serde(rename = "PERCENT_PRICE")] #[serde(rename_all = "camelCase")] PercentPrice {
[INFO] [stdout]    |                                                                           ------------ fields in this variant
[INFO] [stdout] 88 |         multiplier_up: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 89 |         multiplier_down: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 90 |         avg_price_mins: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `max_num_orders` is never read
[INFO] [stdout]   --> src/exchange/binance.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     #[serde(rename = "MAX_NUM_ORDERS")] #[serde(rename_all = "camelCase")] MaxNumOrders {
[INFO] [stdout]    |                                                                            ------------ field in this variant
[INFO] [stdout] 93 |         max_num_orders: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceSymbolFilter` 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 `price`, `time`, and `update_time` are never read
[INFO] [stdout]   --> src/exchange/fix_api.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct OrderStatusResponse {
[INFO] [stdout]    |        ------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub price: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 35 |     pub update_time: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderStatusResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Execution` and `RateLimit` are never constructed
[INFO] [stdout]   --> src/exchange/fix_api.rs:44:44
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum FixError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 44 |     #[error("Order execution error: {0}")] Execution(String),
[INFO] [stdout]    |                                            ^^^^^^^^^
[INFO] [stdout] 45 |     #[error("Rate limit exceeded")]
[INFO] [stdout] 46 |     RateLimit,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FixError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/exchange/fix_api.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct ExecutionResult {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 75 |     pub client_order_id: String,
[INFO] [stdout] 76 |     pub order_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 77 |     pub symbol: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub leaves_qty: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 83 |     pub order_status: String,
[INFO] [stdout] 84 |     pub exec_type: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 85 |     pub last_px: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 86 |     pub last_qty: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 87 |     pub execution_time: Duration,
[INFO] [stdout] 88 |     pub reject_reason: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionResult` 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/exchange/user_data_ws.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ExecutionReport {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 33 |     #[serde(rename = "e")]
[INFO] [stdout] 34 |     event_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 35 |     #[serde(rename = "E")]
[INFO] [stdout] 36 |     event_time: u64,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     order_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 45 |     #[serde(rename = "f")]
[INFO] [stdout] 46 |     time_in_force: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     order_price: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 51 |     #[serde(rename = "P")]
[INFO] [stdout] 52 |     stop_price: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 53 |     #[serde(rename = "F")]
[INFO] [stdout] 54 |     iceberg_quantity: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     #[serde(rename = "g")]
[INFO] [stdout] 56 |     order_list_id: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 57 |     #[serde(rename = "C")]
[INFO] [stdout] 58 |     original_client_order_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     commission_amount: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     #[serde(rename = "N")]
[INFO] [stdout] 76 |     commission_asset: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     #[serde(rename = "T")]
[INFO] [stdout] 78 |     transaction_time: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     #[serde(rename = "t")]
[INFO] [stdout] 80 |     trade_id: i64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 81 |     #[serde(rename = "I")]
[INFO] [stdout] 82 |     order_id_ignore: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 83 |     #[serde(rename = "w")]
[INFO] [stdout] 84 |     is_order_on_book: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     #[serde(rename = "m")]
[INFO] [stdout] 86 |     is_maker_side: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 87 |     #[serde(rename = "M")]
[INFO] [stdout] 88 |     ignore_2: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 89 |     #[serde(rename = "O")]
[INFO] [stdout] 90 |     order_creation_time: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     last_quote_qty: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     #[serde(rename = "Q")]
[INFO] [stdout] 96 |     quote_order_qty: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionReport` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data` is never read
[INFO] [stdout]    --> src/exchange/user_data_ws.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 100 | struct RawUserDataEvent {
[INFO] [stdout]     |        ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 104 |     data: serde_json::Value,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawUserDataEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `api_secret` is never read
[INFO] [stdout]    --> src/exchange/user_data_ws.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct UserDataWebSocket {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 108 |     api_key: String,
[INFO] [stdout] 109 |     api_secret: String,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `keepalive_listen_key` and `needs_keepalive` are never used
[INFO] [stdout]    --> src/exchange/user_data_ws.rs:154:18
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl UserDataWebSocket {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub async fn keepalive_listen_key(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn needs_keepalive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `simulated_profit_ratio`, `simulated_final_amount`, `start_amount`, and `timestamp` are never read
[INFO] [stdout]   --> src/utils/simulation_logger.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SimulationResult {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub simulated_profit_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     pub simulated_profit_percentage: f64,
[INFO] [stdout] 13 |     pub simulated_final_amount: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     pub start_amount: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 15 |     pub symbol_prices: [(String, f64); 3],
[INFO] [stdout] 16 |     pub timestamp: chrono::DateTime<chrono::Local>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SimulationResult` 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 `opportunity_id`, `path`, `actual_profit_ratio`, `actual_final_amount`, `start_amount`, and `timestamp` are never read
[INFO] [stdout]   --> src/utils/simulation_logger.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct ExecutionResult {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 21 |     pub opportunity_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     pub path: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 23 |     pub actual_profit_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub actual_profit_percentage: f64,
[INFO] [stdout] 25 |     pub actual_final_amount: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     pub start_amount: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub timestamp: chrono::DateTime<chrono::Local>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionResult` 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 `opportunity_id`, `profit_difference`, `profit_percentage_difference`, and `price_slippage` are never read
[INFO] [stdout]   --> src/utils/simulation_logger.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct ComparisonResult {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 35 |     pub opportunity_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub profit_difference: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 39 |     pub profit_percentage_difference: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |     pub price_slippage: [(String, f64); 3],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ComparisonResult` 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 `symbol_map` is never read
[INFO] [stdout]   --> src/utils/simulation_logger.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct SimulationLogger {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 44 |     orderbook_manager: Arc<OrderBookManager>,
[INFO] [stdout] 45 |     symbol_map: Arc<SymbolMap>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start_asset` and `end_asset` are never read
[INFO] [stdout]   --> src/models/triangular_path.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct TriangularPath {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub start_asset: Arc<str>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 12 |     pub end_asset: Arc<str>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TriangularPath` 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 `symbols_involved` is never read
[INFO] [stdout]   --> src/arbitrage/detector.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ArbitrageOpportunity {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub symbols_involved: [u16; 3],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ArbitrageOpportunity` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `byteorder`
[INFO] [stderr]  --> Cargo.toml:6:1
[INFO] [stderr]   |
[INFO] [stderr] 6 | byteorder = "1.5.0"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `byteorder`
[INFO] [stderr] warning: unused dependency `crossbeam`
[INFO] [stderr]  --> Cargo.toml:9:1
[INFO] [stderr]   |
[INFO] [stderr] 9 | crossbeam = "0.8.4"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: consider removing the dependency on `crossbeam`
[INFO] [stderr] warning: unused dependency `string_cache`
[INFO] [stderr]   --> Cargo.toml:24:1
[INFO] [stderr]    |
[INFO] [stderr] 24 | string_cache = "0.8.9"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `string_cache`
[INFO] [stderr] warning: unused dependency `tokio-tungstenite`
[INFO] [stderr]   --> Cargo.toml:51:15
[INFO] [stderr]    |
[INFO] [stderr] 51 | [dependencies.tokio-tungstenite]
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tokio-tungstenite`
[INFO] [stderr] warning: `rust-arb-optimized` (manifest) generated 4 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 19.87s
[INFO] running `Command { std: "docker" "inspect" "2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851", kill_on_drop: false }`
[INFO] [stdout] 2c0055925bf2f76e656ae2b443612cb50050c58b9ead2ecb8bbccbc945646851
