[INFO] cloning repository https://github.com/FaradiansyahRokan/HFT
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/FaradiansyahRokan/HFT" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFaradiansyahRokan%2FHFT", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFaradiansyahRokan%2FHFT'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 6a1dbd09621c5a090b9bcab5b7546c7be1b3d6e1
[INFO] checking FaradiansyahRokan/HFT/6a1dbd09621c5a090b9bcab5b7546c7be1b3d6e1 against 0b63defc8fd68957c635fe61f097b84df8fd9611 for pr-154715
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFaradiansyahRokan%2FHFT" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/FaradiansyahRokan/HFT
[INFO] finished tweaking git repo https://github.com/FaradiansyahRokan/HFT
[INFO] tweaked toml for git repo https://github.com/FaradiansyahRokan/HFT written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/FaradiansyahRokan/HFT on toolchain 0b63defc8fd68957c635fe61f097b84df8fd9611
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0b63defc8fd68957c635fe61f097b84df8fd9611" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/FaradiansyahRokan/HFT 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" "+0b63defc8fd68957c635fe61f097b84df8fd9611" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8
[INFO] running `Command { std: "docker" "start" "753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8", 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" "753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8" "/opt/rustwide/cargo-home/bin/cargo" "+0b63defc8fd68957c635fe61f097b84df8fd9611" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8", 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" "753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8" "/opt/rustwide/cargo-home/bin/cargo" "+0b63defc8fd68957c635fe61f097b84df8fd9611" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking const-oid v0.9.6
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]     Checking foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking foreign-types v0.3.2
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking ff v0.13.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking base16ct v0.2.0
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking group v0.13.0
[INFO] [stderr]     Checking data-encoding v2.10.0
[INFO] [stderr]     Checking memchr v2.8.0
[INFO] [stderr]     Checking rustls-pemfile v1.0.4
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]     Checking crypto-bigint v0.5.5
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking keccak v0.1.6
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking rfc6979 v0.4.0
[INFO] [stderr]     Checking rmp v0.8.15
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking sha3 v0.10.8
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]     Checking sec1 v0.7.3
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking pkcs8 v0.10.2
[INFO] [stderr]     Checking elliptic-curve v0.13.8
[INFO] [stderr]     Checking ecdsa v0.16.9
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking rmp-serde v1.3.1
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking k256 v0.13.4
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[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 hft_hyperliquid v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/hft/feed.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 28 | use tracing::{debug, info, warn};
[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/hft/feed.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 28 | use tracing::{debug, info, warn};
[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: `SinkExt`
[INFO] [stdout]   --> src/hft/feed.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 | use futures_util::{SinkExt, StreamExt};
[INFO] [stdout]    |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SinkExt`
[INFO] [stdout]   --> src/hft/feed.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 | use futures_util::{SinkExt, StreamExt};
[INFO] [stdout]    |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `open_count`
[INFO] [stdout]    --> src/backtest/mod.rs:592:17
[INFO] [stdout]     |
[INFO] [stdout] 592 |             let open_count = positions.len();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_open_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `open_count`
[INFO] [stdout]    --> src/backtest/mod.rs:592:17
[INFO] [stdout]     |
[INFO] [stdout] 592 |             let open_count = positions.len();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_open_count`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/hft/feed.rs:396:34
[INFO] [stdout]     |
[INFO] [stdout] 396 |                 Ok(Message::Ping(p)) => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/hft/feed.rs:396:34
[INFO] [stdout]     |
[INFO] [stdout] 396 |                 Ok(Message::Ping(p)) => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coin` and `entry_candle_idx` are never read
[INFO] [stdout]    --> src/backtest/mod.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 223 | struct OpenPosition {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] 224 |     coin:             String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     entry_candle_idx: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OpenPosition` 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: struct `FilterStats` is never constructed
[INFO] [stdout]    --> src/backtest/mod.rs:379:8
[INFO] [stdout]     |
[INFO] [stdout] 379 | struct FilterStats {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BinanceStreamMsg` is never used
[INFO] [stdout]   --> src/hft/feed.rs:34:6
[INFO] [stdout]    |
[INFO] [stdout] 34 | enum BinanceStreamMsg {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coin` and `entry_candle_idx` are never read
[INFO] [stdout]    --> src/backtest/mod.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 223 | struct OpenPosition {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] 224 |     coin:             String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     entry_candle_idx: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OpenPosition` 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: struct `FilterStats` is never constructed
[INFO] [stdout]    --> src/backtest/mod.rs:379:8
[INFO] [stdout]     |
[INFO] [stdout] 379 | struct FilterStats {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BinanceStreamMsg` is never used
[INFO] [stdout]   --> src/hft/feed.rs:34:6
[INFO] [stdout]    |
[INFO] [stdout] 34 | enum BinanceStreamMsg {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signature::hazmat::PrehashSigner`
[INFO] [stdout]   --> src/execution/hl_signer.rs:11:31
[INFO] [stdout]    |
[INFO] [stdout] 11 | use k256::ecdsa::{SigningKey, signature::hazmat::PrehashSigner};
[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: `warn`
[INFO] [stdout]   --> src/execution/position_tracker.rs:10:21
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `order_types::*`
[INFO] [stdout]  --> src/execution/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use order_types::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `order_manager::OrderManager`
[INFO] [stdout]  --> src/execution/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use order_manager::OrderManager;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Side`
[INFO] [stdout]   --> src/indicators/trade_intensity.rs:10:33
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::market_data::{Side, Trade};
[INFO] [stdout]    |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::IndicatorEngine`
[INFO] [stdout]  --> src/indicators/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use engine::IndicatorEngine;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `feature_snapshot::FeatureSnapshot`
[INFO] [stdout]   --> src/indicators/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use feature_snapshot::FeatureSnapshot;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::HyperLiquidParser`
[INFO] [stdout]  --> src/market_data/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use parser::HyperLiquidParser;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HyperLiquidWsClient` and `Subscription`
[INFO] [stdout]  --> src/market_data/mod.rs:6:28
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use websocket_client::{HyperLiquidWsClient, Subscription};
[INFO] [stdout]   |                            ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StreamManager`, `build_subscriptions`, and `spawn_data_pipeline`
[INFO] [stdout]  --> src/market_data/mod.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use stream_manager::{StreamManager, build_subscriptions, spawn_data_pipeline};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LimitOrderBook`, `LobChange`, `LobState`, and `PriceKey`
[INFO] [stdout]  --> src/orderbook/mod.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use lob::{LimitOrderBook, LobChange, LobState, PriceKey};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `registry::LobRegistry`
[INFO] [stdout]  --> src/orderbook/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use registry::LobRegistry;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/risk/risk_engine.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signature::hazmat::PrehashSigner`
[INFO] [stdout]   --> src/execution/hl_signer.rs:11:31
[INFO] [stdout]    |
[INFO] [stdout] 11 | use k256::ecdsa::{SigningKey, signature::hazmat::PrehashSigner};
[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: `warn`
[INFO] [stdout]   --> src/execution/position_tracker.rs:10:21
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{info, warn};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `order_types::*`
[INFO] [stdout]  --> src/execution/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use order_types::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `order_manager::OrderManager`
[INFO] [stdout]  --> src/execution/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use order_manager::OrderManager;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Side`
[INFO] [stdout]   --> src/indicators/trade_intensity.rs:10:33
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::market_data::{Side, Trade};
[INFO] [stdout]    |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::IndicatorEngine`
[INFO] [stdout]  --> src/indicators/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use engine::IndicatorEngine;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `feature_snapshot::FeatureSnapshot`
[INFO] [stdout]   --> src/indicators/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use feature_snapshot::FeatureSnapshot;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::HyperLiquidParser`
[INFO] [stdout]  --> src/market_data/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use parser::HyperLiquidParser;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HyperLiquidWsClient` and `Subscription`
[INFO] [stdout]  --> src/market_data/mod.rs:6:28
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use websocket_client::{HyperLiquidWsClient, Subscription};
[INFO] [stdout]   |                            ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StreamManager`, `build_subscriptions`, and `spawn_data_pipeline`
[INFO] [stdout]  --> src/market_data/mod.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use stream_manager::{StreamManager, build_subscriptions, spawn_data_pipeline};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LimitOrderBook`, `LobChange`, `LobState`, and `PriceKey`
[INFO] [stdout]  --> src/orderbook/mod.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use lob::{LimitOrderBook, LobChange, LobState, PriceKey};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `registry::LobRegistry`
[INFO] [stdout]  --> src/orderbook/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use registry::LobRegistry;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/risk/risk_engine.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `price`
[INFO] [stdout]   --> src/paper_trading/mod.rs:73:34
[INFO] [stdout]    |
[INFO] [stdout] 73 |             Signal::Exit { side, price, size, reason } => {
[INFO] [stdout]    |                                  ^^^^^ help: try ignoring the field: `price: _`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `price`
[INFO] [stdout]   --> src/paper_trading/mod.rs:73:34
[INFO] [stdout]    |
[INFO] [stdout] 73 |             Signal::Exit { side, price, size, reason } => {
[INFO] [stdout]    |                                  ^^^^^ help: try ignoring the field: `price: _`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOP_COINS` is never used
[INFO] [stdout]  --> src/config/mod.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const TOP_COINS: &[&str] = &[
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVENT_CHANNEL_BUFFER` is never used
[INFO] [stdout]   --> src/config/mod.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const EVENT_CHANNEL_BUFFER: usize = 65_536;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WS_CHANNEL_BUFFER` is never used
[INFO] [stdout]   --> src/config/mod.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const WS_CHANNEL_BUFFER: usize = 65_536;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WS_PING_INTERVAL_SECS` is never used
[INFO] [stdout]   --> src/config/mod.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const WS_PING_INTERVAL_SECS: u64 = 20;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WS_RECONNECT_BASE_MS` is never used
[INFO] [stdout]   --> src/config/mod.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const WS_RECONNECT_BASE_MS: u64 = 500;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WS_RECONNECT_MAX_MS` is never used
[INFO] [stdout]   --> src/config/mod.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const WS_RECONNECT_MAX_MS: u64 = 30_000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_buy` and `opposite` are never used
[INFO] [stdout]   --> src/execution/order_types.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl OrderSide {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 15 |     pub fn is_buy(&self) -> bool { matches!(self, OrderSide::Buy) }
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 16 |     pub fn opposite(&self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/execution/order_types.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Tif {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 46 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_terminal` is never used
[INFO] [stdout]   --> src/execution/order_types.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl OrderStatus {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 72 |     pub fn is_terminal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `limit_buy`, `limit_sell`, `market_buy`, `market_sell`, `close_position`, and `new` are never used
[INFO] [stdout]    --> src/execution/order_types.rs:99:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl OrderRequest {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout]  99 |     pub fn limit_buy(coin: &str, price: f64, size: f64, tif: Tif) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn limit_sell(coin: &str, price: f64, size: f64, tif: Tif) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn market_buy(coin: &str, size: f64, worst_price: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn market_sell(coin: &str, size: f64, worst_price: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn close_position(coin: &str, side: OrderSide, size: f64, price: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     fn new(coin: &str, side: OrderSide, order_type: OrderType,
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exchange_id`, `reduce_only`, `created_at_ms`, and `reject_reason` are never read
[INFO] [stdout]    --> src/execution/order_types.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct Order {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub exchange_id: Option<u64>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub reduce_only: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 151 |     pub status: OrderStatus,
[INFO] [stdout] 152 |     pub created_at_ms: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub reject_reason: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Order` 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: methods `fill_ratio` and `notional` are never used
[INFO] [stdout]    --> src/execution/order_types.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl Order {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn fill_ratio(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn notional(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Fill` is never constructed
[INFO] [stdout]    --> src/execution/order_types.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub struct Fill {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `realized_pnl`, `leverage`, and `liquidation_price` are never read
[INFO] [stdout]    --> src/execution/order_types.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub struct Position {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub realized_pnl: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 220 |     pub leverage: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 221 |     pub liquidation_price: Option<f64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Position` 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: method `side` is never used
[INFO] [stdout]    --> src/execution/order_types.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | impl Position {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 225 |     pub fn side(&self) -> Option<OrderSide> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountState` is never constructed
[INFO] [stdout]    --> src/execution/order_types.rs:245:12
[INFO] [stdout]     |
[INFO] [stdout] 245 | pub struct AccountState {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAINNET_SOURCE` is never used
[INFO] [stdout]   --> src/execution/hl_signer.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const MAINNET_SOURCE: &str = "a";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pad32_addr` is never used
[INFO] [stdout]   --> src/execution/hl_signer.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn pad32_addr(addr: &[u8; 20]) -> [u8; 32] {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `signing_key` is never read
[INFO] [stdout]   --> src/execution/hl_signer.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct HlSigner {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 69 |     signing_key: SigningKey,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sign_action` is never used
[INFO] [stdout]    --> src/execution/hl_signer.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl HlSigner {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn sign_action<T: Serialize>(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_time_ms` is never used
[INFO] [stdout]    --> src/execution/hl_signer.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn current_time_ms() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HL_EXCHANGE_URL` is never used
[INFO] [stdout]   --> src/execution/exchange_api.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const HL_EXCHANGE_URL: &str = "https://api.hyperliquid.xyz/exchange";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HL_INFO_URL` is never used
[INFO] [stdout]   --> src/execution/exchange_api.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const HL_INFO_URL: &str = "https://api.hyperliquid.xyz/info";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderResponse` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct HlOrderResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderResponseData` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct HlOrderResponseData {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderStatuses` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct HlOrderStatuses {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlPosition` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct HlPosition {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlLeverage` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct HlLeverage {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlClearinghouseState` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct HlClearinghouseState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlAssetPosition` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct HlAssetPosition {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlMarginSummary` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct HlMarginSummary {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlMeta` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct HlMeta {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlAssetMeta` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct HlAssetMeta {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderAction` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | struct OrderAction {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderSpec` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | struct HlOrderSpec {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderTypeSpec` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 123 | struct HlOrderTypeSpec {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlLimitSpec` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct HlLimitSpec {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CancelAction` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | struct CancelAction {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlCancelSpec` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | struct HlCancelSpec {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlExchangeApi` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct HlExchangeApi {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/execution/exchange_api.rs:157:18
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl HlExchangeApi {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 157 |     pub async fn new(private_key: &str) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub async fn load_asset_meta(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub async fn place_order(&self, req: &OrderRequest) -> Result<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     pub async fn cancel_order(&self, coin: &str, exchange_id: u64) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub async fn get_account_state(&self) -> Result<(AccountState, Vec<Position>)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub async fn get_open_orders(&self) -> Result<Vec<Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 383 |     pub async fn cancel_all_orders(&self, coin: &str) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     fn extract_order_id(resp: &Value) -> Result<u64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `order_type_str` is never used
[INFO] [stdout]    --> src/execution/exchange_api.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 423 | impl OrderRequest {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 424 |     pub fn order_type_str(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_price` is never used
[INFO] [stdout]    --> src/execution/exchange_api.rs:437:4
[INFO] [stdout]     |
[INFO] [stdout] 437 | fn format_price(price: f64) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]    --> src/execution/exchange_api.rs:446:4
[INFO] [stdout]     |
[INFO] [stdout] 446 | fn format_size(size: f64) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exchange_to_client` and `total_rejected` are never read
[INFO] [stdout]   --> src/execution/order_manager.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct OrderManager {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     exchange_to_client: Arc<DashMap<u64, String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     total_rejected:  AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/execution/order_manager.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl OrderManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn on_acknowledged(&self, client_id: &str, exchange_id: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn on_rejected(&self, client_id: &str, reason: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn get_order(&self, client_id: &str) -> Option<Order> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn get_by_exchange_id(&self, exchange_id: u64) -> Option<Order> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn open_buy_size(&self, coin: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn open_sell_size(&self, coin: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn print_stats(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cleanup_old_orders(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total_realized_pnl` is never read
[INFO] [stdout]   --> src/execution/position_tracker.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct PositionTracker {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     total_realized_pnl: Arc<std::sync::atomic::AtomicI64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/execution/position_tracker.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl PositionTracker {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub fn sync_from_exchange(&self, positions: Vec<Position>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn on_fill(&self, fill: &Fill) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn update_mark_price(&self, coin: &str, mark_price: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn get_position(&self, coin: &str) -> Option<Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn is_flat(&self, coin: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn is_long(&self, coin: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn is_short(&self, coin: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn total_unrealized_pnl(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn all_positions(&self) -> Vec<Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn print_positions(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_full`, `is_empty`, `oldest`, and `capacity` are never used
[INFO] [stdout]   --> src/indicators/rolling_window.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl<T: Copy> RollingWindow<T> {
[INFO] [stdout]    | ------------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn is_full(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn oldest(&self) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn capacity(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `min` is never used
[INFO] [stdout]   --> src/indicators/rolling_window.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl RollingWindow<f64> {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn min(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_empty` is never used
[INFO] [stdout]    --> src/indicators/rolling_window.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl TimedWindow {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `delta_60s` is never read
[INFO] [stdout]   --> src/indicators/volume_delta.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct VolumeDeltaState {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub delta_60s: f64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VolumeDeltaState` 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_trade_size_5s` is never read
[INFO] [stdout]   --> src/indicators/trade_intensity.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct TradeIntensityState {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub max_trade_size_5s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TradeIntensityState` 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 `price_range_20` is never read
[INFO] [stdout]   --> src/indicators/price_velocity.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PriceVelocityState {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub price_range_20: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PriceVelocityState` 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 `imb_l5_ma` is never read
[INFO] [stdout]   --> src/indicators/imbalance_momentum.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ImbalanceMomentumState {
[INFO] [stdout]    |            ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub imb_l5_ma: f64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ImbalanceMomentumState` 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 `spread` and `spread_volatility` are never read
[INFO] [stdout]    --> src/indicators/imbalance_momentum.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct SpreadDynamicsState {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 111 |     /// Spread sekarang
[INFO] [stdout] 112 |     pub spread: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub spread_volatility: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpreadDynamicsState` 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/indicators/feature_snapshot.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 20 |     pub coin: String,
[INFO] [stdout] 21 |     pub timestamp_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub spread: f64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 27 |     pub mid_price: f64,
[INFO] [stdout] 28 |     pub micro_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 29 |     /// micro_price - mid_price: positif = ask pressure, negatif = bid pressure
[INFO] [stdout] 30 |     pub micro_mid_diff: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub bid_depth_5: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 34 |     pub ask_depth_5: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 35 |     pub bid_depth_10: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub ask_depth_10: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub imb_l1: f64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 40 |     pub imb_l5: f64,
[INFO] [stdout] 41 |     pub imb_l10: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 42 |     pub imb_l1_delta: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub imb_divergence: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub spread_vs_ma: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub spread_direction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 51 |     pub wide_spread_flag: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub velocity_20: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub micro_trend: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 59 |     pub price_position: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     pub return_20: f64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub vol_delta_1s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 64 |     pub vol_delta_5s: f64,
[INFO] [stdout] 65 |     pub vol_delta_30s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub buy_ratio_5s: f64,
[INFO] [stdout] 67 |     pub buy_vol_5s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 68 |     pub sell_vol_5s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 69 |     pub cumulative_delta: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub trade_count_5s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub trades_per_second_30s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     pub avg_trade_size: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 76 |     pub volume_per_second: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub large_trade_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub trade_size_std: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FeatureSnapshot` 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: associated items `to_feature_vector`, `feature_names`, `feature_count`, and `print_summary` are never used
[INFO] [stdout]    --> src/indicators/feature_snapshot.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl FeatureSnapshot {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn to_feature_vector(&self) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn feature_names() -> Vec<&'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn feature_count() -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn print_summary(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `print_full_features` and `print_lob_detail` are never used
[INFO] [stdout]    --> src/market_data/stream_manager.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl StreamManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn print_full_features(&self, coin: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn print_lob_detail(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `num_orders` is never read
[INFO] [stdout]   --> src/orderbook/lob.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct LobLevel {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 37 |     pub size: f64,
[INFO] [stdout] 38 |     pub num_orders: u32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobLevel` 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 `price` is never read
[INFO] [stdout]   --> src/orderbook/lob.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |     Added { price: f64, size: f64 },
[INFO] [stdout]    |     -----   ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobChange` 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 `price` is never read
[INFO] [stdout]   --> src/orderbook/lob.rs:48:15
[INFO] [stdout]    |
[INFO] [stdout] 48 |     Updated { price: f64, old_size: f64, new_size: f64 },
[INFO] [stdout]    |     -------   ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobChange` 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 `price` is never read
[INFO] [stdout]   --> src/orderbook/lob.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 |     Removed { price: f64, old_size: f64 },
[INFO] [stdout]    |     -------   ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobChange` 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 `coin`, `bid_levels`, `ask_levels`, `received_at_ns`, and `processed_at_ns` are never read
[INFO] [stdout]   --> src/orderbook/lob.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct LobState {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 57 |     pub coin: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub bid_levels: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 81 |     /// Jumlah price levels di ask side
[INFO] [stdout] 82 |     pub ask_levels: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub received_at_ns: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     /// Timestamp kita proses (ns)
[INFO] [stdout] 88 |     pub processed_at_ns: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobState` 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: method `processing_latency_us` is never used
[INFO] [stdout]   --> src/orderbook/lob.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | impl LobState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 92 |     /// Latency dari exchange kirim sampai kita proses (microseconds)
[INFO] [stdout] 93 |     pub fn processing_latency_us(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `top_bids`, `top_asks`, and `is_empty` are never used
[INFO] [stdout]    --> src/orderbook/lob.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl LimitOrderBook {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn top_bids(&self, n: usize) -> Vec<PriceLevel> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn top_asks(&self, n: usize) -> Vec<PriceLevel> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `coins`, `book_count`, and `print_detailed_state` are never used
[INFO] [stdout]   --> src/orderbook/registry.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl LobRegistry {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn coins(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn book_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn print_detailed_state(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `size`, `is_maker`, `timestamp_ms`, and `hold_time_ms` are never read
[INFO] [stdout]   --> src/paper_trading/account.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct TradeRecord {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub size: f64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub is_maker: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 22 |     pub timestamp_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub hold_time_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TradeRecord` 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 `client_id`, `is_full_fill`, and `slippage` are never read
[INFO] [stdout]   --> src/paper_trading/matching_engine.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct PaperFill {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 25 |     pub client_id: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub is_full_fill: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub slippage: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PaperFill` 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: method `pnl_impact` is never used
[INFO] [stdout]   --> src/paper_trading/matching_engine.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl PaperFill {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 40 |     pub fn pnl_impact(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coin` and `signal_count` are never read
[INFO] [stdout]   --> src/paper_trading/strategy.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct CoinStrategyState {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 36 |     pub coin:           String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub signal_count:   u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CoinStrategyState` 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 `max_drawdown_fraction`, `max_loss_per_trade_usd`, and `max_leverage` are never read
[INFO] [stdout]   --> src/risk/limits.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct RiskLimits {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub max_drawdown_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     /// Max loss per single trade (USD)
[INFO] [stdout] 19 |     pub max_loss_per_trade_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub max_leverage: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RiskLimits` 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: associated function `normal` is never used
[INFO] [stdout]   --> src/risk/limits.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl RiskLimits {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn normal() -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `daily_start_ms` and `peak_equity_cents` are never read
[INFO] [stdout]   --> src/risk/risk_engine.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct RiskEngine {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 66 |     daily_start_ms: AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     peak_equity_cents: AtomicI64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `on_realized_pnl`, `resume`, `is_halted`, `halt_reason`, `reset_daily`, and `print_status` are never used
[INFO] [stdout]    --> src/risk/risk_engine.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl RiskEngine {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn on_realized_pnl(&self, pnl_usd: f64, equity: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn resume(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn is_halted(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn halt_reason(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn reset_daily(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn print_status(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `micro_price`, `bid_depth`, and `ask_depth` are never used
[INFO] [stdout]    --> src/types/market_data.rs:77:12
[INFO] [stdout]     |
[INFO] [stdout]  52 | impl OrderBookSnapshot {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn micro_price(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn bid_depth(&self, levels: usize) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn ask_depth(&self, levels: usize) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash` is never read
[INFO] [stdout]    --> src/types/market_data.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct Trade {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub hash: String,
[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: fields `mids` and `timestamp_ms` are never read
[INFO] [stdout]    --> src/types/market_data.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct AllMids {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] 123 |     /// coin → mid price string
[INFO] [stdout] 124 |     pub mids: HashMap<String, f64>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 125 |     pub timestamp_ms: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AllMids` 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 `0` is never read
[INFO] [stdout]    --> src/types/market_data.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |     AllMids(AllMids),
[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] 134 -     AllMids(AllMids),
[INFO] [stdout] 134 +     AllMids(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Connected` and `Disconnected` are never constructed
[INFO] [stdout]    --> src/types/market_data.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum MarketEvent {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 138 |     Connected { coin: String },
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 139 |     Disconnected { coin: String, reason: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `coin` is never used
[INFO] [stdout]    --> src/types/market_data.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 142 | impl MarketEvent {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 143 |     pub fn coin(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOP_COINS` is never used
[INFO] [stdout]  --> src/config/mod.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const TOP_COINS: &[&str] = &[
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVENT_CHANNEL_BUFFER` is never used
[INFO] [stdout]   --> src/config/mod.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const EVENT_CHANNEL_BUFFER: usize = 65_536;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WS_CHANNEL_BUFFER` is never used
[INFO] [stdout]   --> src/config/mod.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const WS_CHANNEL_BUFFER: usize = 65_536;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WS_PING_INTERVAL_SECS` is never used
[INFO] [stdout]   --> src/config/mod.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const WS_PING_INTERVAL_SECS: u64 = 20;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WS_RECONNECT_BASE_MS` is never used
[INFO] [stdout]   --> src/config/mod.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const WS_RECONNECT_BASE_MS: u64 = 500;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WS_RECONNECT_MAX_MS` is never used
[INFO] [stdout]   --> src/config/mod.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const WS_RECONNECT_MAX_MS: u64 = 30_000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_buy` and `opposite` are never used
[INFO] [stdout]   --> src/execution/order_types.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl OrderSide {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 15 |     pub fn is_buy(&self) -> bool { matches!(self, OrderSide::Buy) }
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 16 |     pub fn opposite(&self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/execution/order_types.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Tif {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 46 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_terminal` is never used
[INFO] [stdout]   --> src/execution/order_types.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl OrderStatus {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 72 |     pub fn is_terminal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `limit_buy`, `limit_sell`, `market_buy`, `market_sell`, `close_position`, and `new` are never used
[INFO] [stdout]    --> src/execution/order_types.rs:99:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl OrderRequest {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout]  99 |     pub fn limit_buy(coin: &str, price: f64, size: f64, tif: Tif) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn limit_sell(coin: &str, price: f64, size: f64, tif: Tif) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn market_buy(coin: &str, size: f64, worst_price: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn market_sell(coin: &str, size: f64, worst_price: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn close_position(coin: &str, side: OrderSide, size: f64, price: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     fn new(coin: &str, side: OrderSide, order_type: OrderType,
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exchange_id`, `reduce_only`, `created_at_ms`, and `reject_reason` are never read
[INFO] [stdout]    --> src/execution/order_types.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct Order {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub exchange_id: Option<u64>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub reduce_only: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 151 |     pub status: OrderStatus,
[INFO] [stdout] 152 |     pub created_at_ms: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub reject_reason: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Order` 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: methods `fill_ratio` and `notional` are never used
[INFO] [stdout]    --> src/execution/order_types.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl Order {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn fill_ratio(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn notional(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Fill` is never constructed
[INFO] [stdout]    --> src/execution/order_types.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub struct Fill {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `realized_pnl`, `leverage`, and `liquidation_price` are never read
[INFO] [stdout]    --> src/execution/order_types.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub struct Position {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub realized_pnl: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 220 |     pub leverage: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 221 |     pub liquidation_price: Option<f64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Position` 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: method `side` is never used
[INFO] [stdout]    --> src/execution/order_types.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | impl Position {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 225 |     pub fn side(&self) -> Option<OrderSide> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountState` is never constructed
[INFO] [stdout]    --> src/execution/order_types.rs:245:12
[INFO] [stdout]     |
[INFO] [stdout] 245 | pub struct AccountState {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HL_CHAIN_ID` is never used
[INFO] [stdout]   --> src/execution/hl_signer.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const HL_CHAIN_ID: u64 = 1337;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAINNET_SOURCE` is never used
[INFO] [stdout]   --> src/execution/hl_signer.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const MAINNET_SOURCE: &str = "a";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `keccak256` is never used
[INFO] [stdout]   --> src/execution/hl_signer.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn keccak256(data: &[u8]) -> [u8; 32] {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pad32_u64` is never used
[INFO] [stdout]   --> src/execution/hl_signer.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn pad32_u64(v: u64) -> [u8; 32] {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pad32_addr` is never used
[INFO] [stdout]   --> src/execution/hl_signer.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn pad32_addr(addr: &[u8; 20]) -> [u8; 32] {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_domain_separator` is never used
[INFO] [stdout]   --> src/execution/hl_signer.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn compute_domain_separator() -> [u8; 32] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlSigner` is never constructed
[INFO] [stdout]   --> src/execution/hl_signer.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct HlSigner {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_hex_key`, `address_hex`, and `sign_action` are never used
[INFO] [stdout]    --> src/execution/hl_signer.rs:76:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl HlSigner {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn from_hex_key(private_key: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn address_hex(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn sign_action<T: Serialize>(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_time_ms` is never used
[INFO] [stdout]    --> src/execution/hl_signer.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn current_time_ms() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HL_EXCHANGE_URL` is never used
[INFO] [stdout]   --> src/execution/exchange_api.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const HL_EXCHANGE_URL: &str = "https://api.hyperliquid.xyz/exchange";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HL_INFO_URL` is never used
[INFO] [stdout]   --> src/execution/exchange_api.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const HL_INFO_URL: &str = "https://api.hyperliquid.xyz/info";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderResponse` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct HlOrderResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderResponseData` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct HlOrderResponseData {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderStatuses` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct HlOrderStatuses {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlPosition` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct HlPosition {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlLeverage` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct HlLeverage {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlClearinghouseState` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct HlClearinghouseState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlAssetPosition` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct HlAssetPosition {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlMarginSummary` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct HlMarginSummary {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlMeta` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct HlMeta {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlAssetMeta` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct HlAssetMeta {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderAction` is never constructed
[INFO] [stdout]   --> src/execution/exchange_api.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | struct OrderAction {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderSpec` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | struct HlOrderSpec {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlOrderTypeSpec` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 123 | struct HlOrderTypeSpec {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlLimitSpec` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct HlLimitSpec {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CancelAction` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | struct CancelAction {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlCancelSpec` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | struct HlCancelSpec {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HlExchangeApi` is never constructed
[INFO] [stdout]    --> src/execution/exchange_api.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct HlExchangeApi {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/execution/exchange_api.rs:157:18
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl HlExchangeApi {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 157 |     pub async fn new(private_key: &str) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub async fn load_asset_meta(&mut self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub async fn place_order(&self, req: &OrderRequest) -> Result<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     pub async fn cancel_order(&self, coin: &str, exchange_id: u64) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub async fn get_account_state(&self) -> Result<(AccountState, Vec<Position>)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub async fn get_open_orders(&self) -> Result<Vec<Value>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 383 |     pub async fn cancel_all_orders(&self, coin: &str) -> Result<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     fn extract_order_id(resp: &Value) -> Result<u64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `order_type_str` is never used
[INFO] [stdout]    --> src/execution/exchange_api.rs:424:12
[INFO] [stdout]     |
[INFO] [stdout] 423 | impl OrderRequest {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 424 |     pub fn order_type_str(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_price` is never used
[INFO] [stdout]    --> src/execution/exchange_api.rs:437:4
[INFO] [stdout]     |
[INFO] [stdout] 437 | fn format_price(price: f64) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]    --> src/execution/exchange_api.rs:446:4
[INFO] [stdout]     |
[INFO] [stdout] 446 | fn format_size(size: f64) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exchange_to_client` and `total_rejected` are never read
[INFO] [stdout]   --> src/execution/order_manager.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct OrderManager {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     exchange_to_client: Arc<DashMap<u64, String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     total_rejected:  AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/execution/order_manager.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl OrderManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn on_acknowledged(&self, client_id: &str, exchange_id: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn on_rejected(&self, client_id: &str, reason: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn get_order(&self, client_id: &str) -> Option<Order> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn get_by_exchange_id(&self, exchange_id: u64) -> Option<Order> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn open_buy_size(&self, coin: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn open_sell_size(&self, coin: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn print_stats(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn cleanup_old_orders(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total_realized_pnl` is never read
[INFO] [stdout]   --> src/execution/position_tracker.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct PositionTracker {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     total_realized_pnl: Arc<std::sync::atomic::AtomicI64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/execution/position_tracker.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl PositionTracker {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub fn sync_from_exchange(&self, positions: Vec<Position>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn on_fill(&self, fill: &Fill) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn update_mark_price(&self, coin: &str, mark_price: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn get_position(&self, coin: &str) -> Option<Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn is_flat(&self, coin: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn is_long(&self, coin: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn is_short(&self, coin: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn total_unrealized_pnl(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn all_positions(&self) -> Vec<Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn print_positions(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_full`, `is_empty`, `oldest`, and `capacity` are never used
[INFO] [stdout]   --> src/indicators/rolling_window.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl<T: Copy> RollingWindow<T> {
[INFO] [stdout]    | ------------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn is_full(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn oldest(&self) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn capacity(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `min` is never used
[INFO] [stdout]   --> src/indicators/rolling_window.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl RollingWindow<f64> {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn min(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_empty` is never used
[INFO] [stdout]    --> src/indicators/rolling_window.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl TimedWindow {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `delta_60s` is never read
[INFO] [stdout]   --> src/indicators/volume_delta.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct VolumeDeltaState {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub delta_60s: f64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VolumeDeltaState` 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_trade_size_5s` is never read
[INFO] [stdout]   --> src/indicators/trade_intensity.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct TradeIntensityState {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub max_trade_size_5s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TradeIntensityState` 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 `price_range_20` is never read
[INFO] [stdout]   --> src/indicators/price_velocity.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PriceVelocityState {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub price_range_20: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PriceVelocityState` 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 `imb_l5_ma` is never read
[INFO] [stdout]   --> src/indicators/imbalance_momentum.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ImbalanceMomentumState {
[INFO] [stdout]    |            ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub imb_l5_ma: f64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ImbalanceMomentumState` 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 `spread` and `spread_volatility` are never read
[INFO] [stdout]    --> src/indicators/imbalance_momentum.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct SpreadDynamicsState {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 111 |     /// Spread sekarang
[INFO] [stdout] 112 |     pub spread: f64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub spread_volatility: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpreadDynamicsState` 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/indicators/feature_snapshot.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct FeatureSnapshot {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 20 |     pub coin: String,
[INFO] [stdout] 21 |     pub timestamp_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub spread: f64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 27 |     pub mid_price: f64,
[INFO] [stdout] 28 |     pub micro_price: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 29 |     /// micro_price - mid_price: positif = ask pressure, negatif = bid pressure
[INFO] [stdout] 30 |     pub micro_mid_diff: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub bid_depth_5: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 34 |     pub ask_depth_5: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 35 |     pub bid_depth_10: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub ask_depth_10: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub imb_l1: f64,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 40 |     pub imb_l5: f64,
[INFO] [stdout] 41 |     pub imb_l10: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 42 |     pub imb_l1_delta: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub imb_divergence: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub spread_vs_ma: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub spread_direction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 51 |     pub wide_spread_flag: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub velocity_20: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub micro_trend: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 59 |     pub price_position: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     pub return_20: f64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub vol_delta_1s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 64 |     pub vol_delta_5s: f64,
[INFO] [stdout] 65 |     pub vol_delta_30s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub buy_ratio_5s: f64,
[INFO] [stdout] 67 |     pub buy_vol_5s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 68 |     pub sell_vol_5s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 69 |     pub cumulative_delta: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     pub trade_count_5s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub trades_per_second_30s: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     pub avg_trade_size: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 76 |     pub volume_per_second: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     pub large_trade_ratio: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     pub trade_size_std: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FeatureSnapshot` 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: associated items `to_feature_vector`, `feature_names`, `feature_count`, and `print_summary` are never used
[INFO] [stdout]    --> src/indicators/feature_snapshot.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl FeatureSnapshot {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn to_feature_vector(&self) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn feature_names() -> Vec<&'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn feature_count() -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn print_summary(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `print_full_features` and `print_lob_detail` are never used
[INFO] [stdout]    --> src/market_data/stream_manager.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl StreamManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn print_full_features(&self, coin: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn print_lob_detail(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `num_orders` is never read
[INFO] [stdout]   --> src/orderbook/lob.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct LobLevel {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 37 |     pub size: f64,
[INFO] [stdout] 38 |     pub num_orders: u32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobLevel` 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 `price` is never read
[INFO] [stdout]   --> src/orderbook/lob.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |     Added { price: f64, size: f64 },
[INFO] [stdout]    |     -----   ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobChange` 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 `price` is never read
[INFO] [stdout]   --> src/orderbook/lob.rs:48:15
[INFO] [stdout]    |
[INFO] [stdout] 48 |     Updated { price: f64, old_size: f64, new_size: f64 },
[INFO] [stdout]    |     -------   ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobChange` 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 `price` is never read
[INFO] [stdout]   --> src/orderbook/lob.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 |     Removed { price: f64, old_size: f64 },
[INFO] [stdout]    |     -------   ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobChange` 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 `coin`, `bid_levels`, `ask_levels`, `received_at_ns`, and `processed_at_ns` are never read
[INFO] [stdout]   --> src/orderbook/lob.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct LobState {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 57 |     pub coin: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub bid_levels: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 81 |     /// Jumlah price levels di ask side
[INFO] [stdout] 82 |     pub ask_levels: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub received_at_ns: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     /// Timestamp kita proses (ns)
[INFO] [stdout] 88 |     pub processed_at_ns: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LobState` 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: method `processing_latency_us` is never used
[INFO] [stdout]   --> src/orderbook/lob.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | impl LobState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 92 |     /// Latency dari exchange kirim sampai kita proses (microseconds)
[INFO] [stdout] 93 |     pub fn processing_latency_us(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `top_bids`, `top_asks`, and `is_empty` are never used
[INFO] [stdout]    --> src/orderbook/lob.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl LimitOrderBook {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn top_bids(&self, n: usize) -> Vec<PriceLevel> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn top_asks(&self, n: usize) -> Vec<PriceLevel> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `coins`, `book_count`, and `print_detailed_state` are never used
[INFO] [stdout]   --> src/orderbook/registry.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl LobRegistry {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn coins(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn book_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn print_detailed_state(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `size`, `is_maker`, `timestamp_ms`, and `hold_time_ms` are never read
[INFO] [stdout]   --> src/paper_trading/account.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct TradeRecord {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub size: f64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub is_maker: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 22 |     pub timestamp_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub hold_time_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TradeRecord` 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 `client_id`, `is_full_fill`, and `slippage` are never read
[INFO] [stdout]   --> src/paper_trading/matching_engine.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct PaperFill {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 25 |     pub client_id: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub is_full_fill: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub slippage: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PaperFill` 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: method `pnl_impact` is never used
[INFO] [stdout]   --> src/paper_trading/matching_engine.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl PaperFill {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 40 |     pub fn pnl_impact(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coin` and `signal_count` are never read
[INFO] [stdout]   --> src/paper_trading/strategy.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct CoinStrategyState {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 36 |     pub coin:           String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub signal_count:   u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CoinStrategyState` 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 `max_drawdown_fraction`, `max_loss_per_trade_usd`, and `max_leverage` are never read
[INFO] [stdout]   --> src/risk/limits.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct RiskLimits {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub max_drawdown_fraction: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     /// Max loss per single trade (USD)
[INFO] [stdout] 19 |     pub max_loss_per_trade_usd: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub max_leverage: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RiskLimits` 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: associated function `normal` is never used
[INFO] [stdout]   --> src/risk/limits.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl RiskLimits {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn normal() -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `daily_start_ms` and `peak_equity_cents` are never read
[INFO] [stdout]   --> src/risk/risk_engine.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct RiskEngine {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 66 |     daily_start_ms: AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     peak_equity_cents: AtomicI64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `on_realized_pnl`, `resume`, `is_halted`, `halt_reason`, `reset_daily`, and `print_status` are never used
[INFO] [stdout]    --> src/risk/risk_engine.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl RiskEngine {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn on_realized_pnl(&self, pnl_usd: f64, equity: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn resume(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn is_halted(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn halt_reason(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn reset_daily(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn print_status(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/types/market_data.rs:53:12
[INFO] [stdout]     |
[INFO] [stdout]  52 | impl OrderBookSnapshot {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout]  53 |     pub fn best_bid(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn best_ask(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn spread(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn mid_price(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn micro_price(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn imbalance(&self, levels: usize) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn bid_depth(&self, levels: usize) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn ask_depth(&self, levels: usize) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash` is never read
[INFO] [stdout]    --> src/types/market_data.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct Trade {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub hash: String,
[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: fields `mids` and `timestamp_ms` are never read
[INFO] [stdout]    --> src/types/market_data.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct AllMids {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] 123 |     /// coin → mid price string
[INFO] [stdout] 124 |     pub mids: HashMap<String, f64>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 125 |     pub timestamp_ms: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AllMids` 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 `0` is never read
[INFO] [stdout]    --> src/types/market_data.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |     AllMids(AllMids),
[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] 134 -     AllMids(AllMids),
[INFO] [stdout] 134 +     AllMids(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Connected` and `Disconnected` are never constructed
[INFO] [stdout]    --> src/types/market_data.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum MarketEvent {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 138 |     Connected { coin: String },
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 139 |     Disconnected { coin: String, reason: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `coin` is never used
[INFO] [stdout]    --> src/types/market_data.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 142 | impl MarketEvent {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 143 |     pub fn coin(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [optimized + debuginfo] target(s) in 29.04s
[INFO] running `Command { std: "docker" "inspect" "753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8", kill_on_drop: false }`
[INFO] [stdout] 753ace89bf492a0719ab802f249826d1c044f6ae6b655c01c57826cb0d84bee8
