[INFO] cloning repository https://github.com/pieterjandubois/FundingSpreadArbitrageV2 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/pieterjandubois/FundingSpreadArbitrageV2" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpieterjandubois%2FFundingSpreadArbitrageV2", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpieterjandubois%2FFundingSpreadArbitrageV2'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4054f6fcba5dd195658cfd8a832183658917c34c [INFO] checking pieterjandubois/FundingSpreadArbitrageV2 against try#54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47 for pr-153041 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpieterjandubois%2FFundingSpreadArbitrageV2" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 [INFO] finished tweaking git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 [INFO] tweaked toml for git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 on toolchain 54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 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" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] checking pieterjandubois/FundingSpreadArbitrageV2 against try#54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47 for pr-153041 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpieterjandubois%2FFundingSpreadArbitrageV2" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 [INFO] finished tweaking git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 [INFO] tweaked toml for git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 on toolchain 54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/pieterjandubois/FundingSpreadArbitrageV2 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" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded utf-8 v0.7.6 [INFO] [stderr] Downloaded tokio-tungstenite v0.21.0 [INFO] [stderr] Downloaded rustls-pki-types v1.14.0 [INFO] [stderr] Downloaded uuid v1.20.0 [INFO] [stderr] Downloaded ref-cast-impl v1.0.25 [INFO] [stderr] Downloaded unarray v0.1.4 [INFO] [stderr] Downloaded num_cpus v1.17.0 [INFO] [stderr] Downloaded core_affinity v0.8.3 [INFO] [stderr] Downloaded ref-cast v1.0.25 [INFO] [stderr] Downloaded rusty-fork v0.3.1 [INFO] [stderr] Downloaded hyper-rustls v0.24.2 [INFO] [stderr] Downloaded iana-time-zone v0.1.65 [INFO] [stderr] Downloaded ryu v1.0.22 [INFO] [stderr] Downloaded lexical-write-integer v1.0.6 [INFO] [stderr] Downloaded lexical-write-float v1.0.6 [INFO] [stderr] Downloaded mio v1.1.1 [INFO] [stderr] Downloaded lexical-util v1.0.7 [INFO] [stderr] Downloaded simd-json v0.13.11 [INFO] [stderr] Downloaded http v1.4.0 [INFO] [stderr] Downloaded tokio-util v0.7.18 [INFO] [stderr] Downloaded proptest v1.9.0 [INFO] [stderr] Downloaded lexical-parse-float v1.0.6 [INFO] [stderr] Downloaded redis v0.25.4 [INFO] [stderr] Downloaded chrono v0.4.43 [INFO] [stderr] Downloaded syn v2.0.114 [INFO] [stderr] Downloaded zerocopy v0.8.34 [INFO] [stderr] Downloaded rustls v0.22.4 [INFO] [stderr] Downloaded webpki-roots v1.0.5 [INFO] [stderr] Downloaded zerocopy-derive v0.8.34 [INFO] [stderr] Downloaded socket2 v0.6.2 [INFO] [stderr] Downloaded cc v1.2.54 [INFO] [stderr] Downloaded tokio-rustls v0.24.1 [INFO] [stderr] Downloaded lexical-parse-integer v1.0.6 [INFO] [stderr] Downloaded zmij v1.0.17 [INFO] [stderr] Downloaded ratatui v0.27.0 [INFO] [stderr] Downloaded value-trait v0.8.1 [INFO] [stderr] Downloaded find-msvc-tools v0.1.8 [INFO] [stderr] Downloaded lexical-core v1.0.6 [INFO] [stderr] Downloaded halfbrown v0.2.5 [INFO] [stderr] Downloaded tokio-rustls v0.25.0 [INFO] [stderr] Downloaded data-encoding v2.10.0 [INFO] [stderr] Downloaded tungstenite v0.21.0 [INFO] [stderr] Downloaded rand_xorshift v0.4.0 [INFO] [stderr] Downloaded tokio v1.49.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f36974d0dafbca2fa86f0fcfc2a2da8b78f09ce01da21e00575441b17d9fcd3d [INFO] running `Command { std: "docker" "start" "-a" "f36974d0dafbca2fa86f0fcfc2a2da8b78f09ce01da21e00575441b17d9fcd3d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f36974d0dafbca2fa86f0fcfc2a2da8b78f09ce01da21e00575441b17d9fcd3d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f36974d0dafbca2fa86f0fcfc2a2da8b78f09ce01da21e00575441b17d9fcd3d", kill_on_drop: false }` [INFO] [stdout] f36974d0dafbca2fa86f0fcfc2a2da8b78f09ce01da21e00575441b17d9fcd3d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8ce1645d88cd5307a32af6e53cf98363c06af45878e0db655864db9a1eb5efe6 [INFO] running `Command { std: "docker" "start" "-a" "8ce1645d88cd5307a32af6e53cf98363c06af45878e0db655864db9a1eb5efe6", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Compiling find-msvc-tools v0.1.8 [INFO] [stderr] Checking itoa v1.0.17 [INFO] [stderr] Compiling zerocopy v0.8.34 [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Checking allocator-api2 v0.2.21 [INFO] [stderr] Checking zeroize v1.8.2 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking bitflags v2.10.0 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling cc v1.2.54 [INFO] [stderr] Checking rustls-pki-types v1.14.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Checking ryu v1.0.22 [INFO] [stderr] Checking form_urlencoded v1.2.2 [INFO] [stderr] Checking lexical-util v1.0.7 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Checking tracing-core v0.1.36 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling zmij v1.0.17 [INFO] [stderr] Checking memchr v2.7.6 [INFO] [stderr] Compiling rustls v0.22.4 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking cpufeatures v0.2.17 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking foldhash v0.1.5 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Checking hashbrown v0.15.5 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking webpki-roots v1.0.5 [INFO] [stderr] Checking castaway v0.2.4 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Checking lexical-parse-integer v1.0.6 [INFO] [stderr] Checking lexical-write-integer v1.0.6 [INFO] [stderr] Checking linux-raw-sys v0.4.15 [INFO] [stderr] Checking base64 v0.21.7 [INFO] [stderr] Checking unicode-width v0.1.14 [INFO] [stderr] Checking static_assertions v1.1.0 [INFO] [stderr] Checking lexical-parse-float v1.0.6 [INFO] [stderr] Checking data-encoding v2.10.0 [INFO] [stderr] Checking utf-8 v0.7.6 [INFO] [stderr] Checking rustls-pemfile v1.0.4 [INFO] [stderr] Checking lexical-write-float v1.0.6 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking socket2 v0.6.2 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking crypto-common v0.1.7 [INFO] [stderr] Checking float-cmp v0.9.0 [INFO] [stderr] Checking lexical-core v1.0.6 [INFO] [stderr] Checking lru v0.12.5 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking compact_str v0.7.1 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking webpki-roots v0.26.11 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking ipnet v2.11.0 [INFO] [stderr] Checking sync_wrapper v0.1.2 [INFO] [stderr] Checking iana-time-zone v0.1.65 [INFO] [stderr] Checking webpki-roots v0.25.4 [INFO] [stderr] Checking mime v0.3.17 [INFO] [stderr] Checking cassowary v0.3.0 [INFO] [stderr] Checking simdutf8 v0.1.5 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [INFO] [stderr] Checking core_affinity v0.8.3 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Checking crossterm v0.27.0 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking uuid v1.20.0 [INFO] [stderr] Checking dotenv v0.15.0 [INFO] [stderr] Checking hex v0.4.3 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Checking rand_core v0.9.5 [INFO] [stderr] Checking linux-raw-sys v0.11.0 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking wait-timeout v0.2.1 [INFO] [stderr] Checking unicode-truncate v1.1.0 [INFO] [stderr] Checking bit-vec v0.8.0 [INFO] [stderr] Checking quick-error v1.2.3 [INFO] [stderr] Checking rand_xorshift v0.4.0 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking unarray v0.1.4 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking bit-set v0.8.0 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Checking tempfile v3.24.0 [INFO] [stderr] Checking rusty-fork v0.3.1 [INFO] [stderr] Checking proptest v1.9.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling stability v0.2.1 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking rustls-webpki v0.102.8 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Checking ratatui v0.27.0 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking halfbrown v0.2.5 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking value-trait v0.8.1 [INFO] [stderr] Checking simd-json v0.13.11 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking tokio-rustls v0.25.0 [INFO] [stderr] Checking tungstenite v0.21.0 [INFO] [stderr] Checking h2 v0.3.27 [INFO] [stderr] Checking combine v4.6.7 [INFO] [stderr] Checking tokio-tungstenite v0.21.0 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking redis v0.25.4 [INFO] [stderr] Checking hyper-rustls v0.24.2 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking arbitrage2 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `redis::aio::MultiplexedConnection` [INFO] [stdout] --> src/strategy/opportunity_detector.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use redis::aio::MultiplexedConnection; [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: `redis::aio::MultiplexedConnection` [INFO] [stdout] --> src/strategy/opportunity_detector.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use redis::aio::MultiplexedConnection; [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: `redis::AsyncCommands` [INFO] [stdout] --> src/strategy/opportunity_detector.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use redis::AsyncCommands; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `TestnetConfig` has no field named `binance` [INFO] [stdout] --> src/strategy/price_chaser.rs:258:13 [INFO] [stdout] | [INFO] [stdout] 258 | binance: None, [INFO] [stdout] | ^^^^^^^ `TestnetConfig` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `redis::AsyncCommands` [INFO] [stdout] --> src/strategy/opportunity_detector.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use redis::AsyncCommands; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_quantity` [INFO] [stdout] --> src/strategy/atomic_execution.rs:444:9 [INFO] [stdout] | [INFO] [stdout] 444 | target_quantity: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_quantity` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `api_duration` [INFO] [stdout] --> src/strategy/entry.rs:848:29 [INFO] [stdout] | [INFO] [stdout] 848 | let api_duration = api_start.elapsed().as_millis(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_api_duration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `long_filled` is never read [INFO] [stdout] --> src/strategy/entry.rs:2033:45 [INFO] [stdout] | [INFO] [stdout] 2033 | ... long_filled = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `short_filled` is never read [INFO] [stdout] --> src/strategy/entry.rs:1775:45 [INFO] [stdout] | [INFO] [stdout] 1775 | ... short_filled = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_quantity` [INFO] [stdout] --> src/strategy/atomic_execution.rs:444:9 [INFO] [stdout] | [INFO] [stdout] 444 | target_quantity: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_quantity` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `api_duration` [INFO] [stdout] --> src/strategy/entry.rs:848:29 [INFO] [stdout] | [INFO] [stdout] 848 | let api_duration = api_start.elapsed().as_millis(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_api_duration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `long_filled` is never read [INFO] [stdout] --> src/strategy/entry.rs:2033:45 [INFO] [stdout] | [INFO] [stdout] 2033 | ... long_filled = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `short_filled` is never read [INFO] [stdout] --> src/strategy/entry.rs:1775:45 [INFO] [stdout] | [INFO] [stdout] 1775 | ... short_filled = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol` [INFO] [stdout] --> src/strategy/testnet_backend.rs:71:62 [INFO] [stdout] | [INFO] [stdout] 71 | async fn set_margin_type_isolated(&self, exchange: &str, symbol: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol` [INFO] [stdout] --> src/strategy/testnet_backend.rs:71:62 [INFO] [stdout] | [INFO] [stdout] 71 | async fn set_margin_type_isolated(&self, exchange: &str, symbol: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `retry_3` [INFO] [stdout] --> src/strategy/fill_probability.rs:306:13 [INFO] [stdout] | [INFO] [stdout] 306 | let retry_3 = estimator.should_retry_limit(&order_book, OrderSide::Long, 500.0, 3); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_retry_3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PipelineMetrics` [INFO] [stdout] --> tests/pipeline_test.rs:1:54 [INFO] [stdout] | [INFO] [stdout] 1 | use arbitrage2::strategy::pipeline::{MarketPipeline, PipelineMetrics}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `arbitrage2::strategy::testnet::binance_demo` [INFO] [stdout] --> tests/binance_best_ask_integration_test.rs:4:36 [INFO] [stdout] | [INFO] [stdout] 4 | use arbitrage2::strategy::testnet::binance_demo::BinanceDemoClient; [INFO] [stdout] | ^^^^^^^^^^^^ could not find `binance_demo` in `testnet` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `TestnetConfig` has no field named `binance` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | binance: None, [INFO] [stdout] | ^^^^^^^ `TestnetConfig` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0432`. [INFO] [stdout] [INFO] [stderr] error: could not compile `arbitrage2` (test "binance_best_ask_integration_test") due to 1 previous error [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error[E0061]: this method takes 0 arguments but 2 arguments were supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:136:13 [INFO] [stdout] | [INFO] [stdout] 136 | metrics.log_summary("binance", "BTCUSDT"); [INFO] [stdout] | ^^^^^^^^^^^ --------- --------- unexpected argument #2 of type `&'static str` [INFO] [stdout] | | [INFO] [stdout] | unexpected argument #1 of type `&'static str` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:146:12 [INFO] [stdout] | [INFO] [stdout] 146 | pub fn log_summary(&self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] help: remove the extra arguments [INFO] [stdout] | [INFO] [stdout] 136 - metrics.log_summary("binance", "BTCUSDT"); [INFO] [stdout] 136 + metrics.log_summary(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> tests/synthetic_config_test.rs:298:9 [INFO] [stdout] | [INFO] [stdout] 298 | let result = SyntheticConfig::from_env(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:159:24 [INFO] [stdout] | [INFO] [stdout] 159 | assert_eq!(metrics.total_reprice_time.as_secs(), 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:33:15 [INFO] [stdout] | [INFO] [stdout] 33 | side: "buy".to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ expected `OrderSide`, found `String` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:34:21 [INFO] [stdout] | [INFO] [stdout] 34 | order_type: "limit".to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ expected `OrderType`, found `String` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `SimulatedOrder` has no field named `quantity` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | quantity: 0.001, [INFO] [stdout] | ^^^^^^^^ `SimulatedOrder` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `size`, `queue_position`, `created_at`, `filled_at`, `fill_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:37:17 [INFO] [stdout] | [INFO] [stdout] 37 | status: "new".to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ expected `OrderStatus`, found `String` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `SimulatedOrder` has no field named `filled_quantity` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | filled_quantity: 0.0, [INFO] [stdout] | ^^^^^^^^^^^^^^^ `SimulatedOrder` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `size`, `queue_position`, `created_at`, `filled_at`, `fill_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `SimulatedOrder` has no field named `average_fill_price` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | average_fill_price: 0.0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ `SimulatedOrder` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `size`, `queue_position`, `created_at`, `filled_at`, `fill_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `SimulatedOrder` has no field named `timestamp` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | timestamp: chrono::Utc::now().timestamp_millis() as u64, [INFO] [stdout] | ^^^^^^^^^ `SimulatedOrder` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `size`, `queue_position`, `created_at`, `filled_at`, `fill_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:202:13 [INFO] [stdout] | [INFO] [stdout] 202 | metrics.record_reprice(reprice_duration_1); [INFO] [stdout] | ^^^^^^^^^^^^^^ ------------------ unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 202 - metrics.record_reprice(reprice_duration_1); [INFO] [stdout] 202 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:206:24 [INFO] [stdout] | [INFO] [stdout] 206 | assert_eq!(metrics.total_reprice_time.as_millis(), 50); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:213:13 [INFO] [stdout] | [INFO] [stdout] 213 | metrics.record_reprice(reprice_duration_2); [INFO] [stdout] | ^^^^^^^^^^^^^^ ------------------ unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 213 - metrics.record_reprice(reprice_duration_2); [INFO] [stdout] 213 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:223:24 [INFO] [stdout] | [INFO] [stdout] 223 | assert_eq!(metrics.total_reprice_time.as_millis(), 80); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `TestnetConfig` has no field named `binance` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | binance: Some(ExchangeCredentials { [INFO] [stdout] | ^^^^^^^ `TestnetConfig` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:83:15 [INFO] [stdout] | [INFO] [stdout] 83 | side: "buy".to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ expected `OrderSide`, found `String` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:84:21 [INFO] [stdout] | [INFO] [stdout] 84 | order_type: "limit".to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ expected `OrderType`, found `String` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `SimulatedOrder` has no field named `quantity` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | quantity: 0.001, [INFO] [stdout] | ^^^^^^^^ `SimulatedOrder` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `size`, `queue_position`, `created_at`, `filled_at`, `fill_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | status: "new".to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ expected `OrderStatus`, found `String` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `SimulatedOrder` has no field named `filled_quantity` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | filled_quantity: 0.0, [INFO] [stdout] | ^^^^^^^^^^^^^^^ `SimulatedOrder` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `size`, `queue_position`, `created_at`, `filled_at`, `fill_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `SimulatedOrder` has no field named `average_fill_price` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | average_fill_price: 0.0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ `SimulatedOrder` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `size`, `queue_position`, `created_at`, `filled_at`, `fill_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `SimulatedOrder` has no field named `timestamp` [INFO] [stdout] --> tests/testnet_backend_single_exchange_test.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | timestamp: chrono::Utc::now().timestamp_millis() as u64, [INFO] [stdout] | ^^^^^^^^^ `SimulatedOrder` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `size`, `queue_position`, `created_at`, `filled_at`, `fill_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0560`. [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | metrics.record_reprice(Duration::from_millis(i * 10)); [INFO] [stdout] | ^^^^^^^^^^^^^^ ----------------------------- unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 232 - metrics.record_reprice(Duration::from_millis(i * 10)); [INFO] [stdout] 232 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:237:24 [INFO] [stdout] | [INFO] [stdout] 237 | assert_eq!(metrics.total_reprice_time.as_millis(), 150); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:257:13 [INFO] [stdout] | [INFO] [stdout] 257 | metrics.record_reprice(Duration::from_millis(25)); [INFO] [stdout] | ^^^^^^^^^^^^^^ ------------------------- unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 257 - metrics.record_reprice(Duration::from_millis(25)); [INFO] [stdout] 257 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0308, E0560. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0308`. [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:259:13 [INFO] [stdout] | [INFO] [stdout] 259 | metrics.record_reprice(Duration::from_millis(30)); [INFO] [stdout] | ^^^^^^^^^^^^^^ ------------------------- unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 259 - metrics.record_reprice(Duration::from_millis(30)); [INFO] [stdout] 259 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `arbitrage2` (test "testnet_backend_single_exchange_test") due to 16 previous errors [INFO] [stdout] error[E0061]: this method takes 0 arguments but 2 arguments were supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:283:13 [INFO] [stdout] | [INFO] [stdout] 283 | metrics.log_summary("binance", "BTCUSDT"); [INFO] [stdout] | ^^^^^^^^^^^ --------- --------- unexpected argument #2 of type `&'static str` [INFO] [stdout] | | [INFO] [stdout] | unexpected argument #1 of type `&'static str` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:146:12 [INFO] [stdout] | [INFO] [stdout] 146 | pub fn log_summary(&self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] help: remove the extra arguments [INFO] [stdout] | [INFO] [stdout] 283 - metrics.log_summary("binance", "BTCUSDT"); [INFO] [stdout] 283 + metrics.log_summary(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:287:24 [INFO] [stdout] | [INFO] [stdout] 287 | assert_eq!(metrics.total_reprice_time.as_millis(), 55); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:299:13 [INFO] [stdout] | [INFO] [stdout] 299 | metrics.record_reprice(Duration::from_millis(20)); [INFO] [stdout] | ^^^^^^^^^^^^^^ ------------------------- unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 299 - metrics.record_reprice(Duration::from_millis(20)); [INFO] [stdout] 299 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:300:13 [INFO] [stdout] | [INFO] [stdout] 300 | metrics.record_reprice(Duration::from_millis(15)); [INFO] [stdout] | ^^^^^^^^^^^^^^ ------------------------- unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 300 - metrics.record_reprice(Duration::from_millis(15)); [INFO] [stdout] 300 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:316:24 [INFO] [stdout] | [INFO] [stdout] 316 | assert_eq!(metrics.total_reprice_time.as_millis(), 35); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `arbitrage2::strategy::atomic_execution::OrderStatusChecker` [INFO] [stdout] --> tests/order_status_checker_test.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use arbitrage2::strategy::atomic_execution::OrderStatusChecker; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `OrderStatusChecker` in `strategy::atomic_execution` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `arbitrage2` (lib test) due to 1 previous error; 8 warnings emitted [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:336:15 [INFO] [stdout] | [INFO] [stdout] 336 | m.record_reprice(Duration::from_millis(10 * (i + 1))); [INFO] [stdout] | ^^^^^^^^^^^^^^ ----------------------------------- unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 336 - m.record_reprice(Duration::from_millis(10 * (i + 1))); [INFO] [stdout] 336 + m.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `std::sync::MutexGuard<'_, HedgeTimingMetrics>` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:349:30 [INFO] [stdout] | [INFO] [stdout] 349 | assert_eq!(final_metrics.total_reprice_time.as_millis(), 150); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:372:24 [INFO] [stdout] | [INFO] [stdout] 372 | assert_eq!(metrics.total_reprice_time.as_secs(), 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `last_measurement` is never read [INFO] [stdout] --> src/bin/monitor.rs:234:5 [INFO] [stdout] | [INFO] [stdout] 223 | struct AllocationMetrics { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 234 | last_measurement: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AllocationMetrics` has a derived impl for the trait `Clone`, but this is 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] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:380:13 [INFO] [stdout] | [INFO] [stdout] 380 | metrics.record_reprice(Duration::from_millis(42)); [INFO] [stdout] | ^^^^^^^^^^^^^^ ------------------------- unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 380 - metrics.record_reprice(Duration::from_millis(42)); [INFO] [stdout] 380 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:397:24 [INFO] [stdout] | [INFO] [stdout] 397 | assert_eq!(metrics.total_reprice_time.as_millis(), 42); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0532]: expected tuple struct or tuple variant, found unit variant `CancellationResult::AlreadyFilled` [INFO] [stdout] --> tests/order_status_checker_test.rs:473:9 [INFO] [stdout] | [INFO] [stdout] 473 | CancellationResult::AlreadyFilled(qty) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this syntax instead: `CancellationResult::AlreadyFilled` [INFO] [stdout] | [INFO] [stdout] ::: src/strategy/atomic_execution.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | AlreadyFilled, [INFO] [stdout] | ------------- `CancellationResult::AlreadyFilled` defined here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0532]: expected tuple struct or tuple variant, found unit variant `CancellationResult::AlreadyFilled` [INFO] [stdout] --> tests/order_status_checker_test.rs:489:9 [INFO] [stdout] | [INFO] [stdout] 489 | CancellationResult::AlreadyFilled(qty) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this syntax instead: `CancellationResult::AlreadyFilled` [INFO] [stdout] | [INFO] [stdout] ::: src/strategy/atomic_execution.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | AlreadyFilled, [INFO] [stdout] | ------------- `CancellationResult::AlreadyFilled` defined here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0532]: expected tuple struct or tuple variant, found unit variant `CancellationResult::AlreadyFilled` [INFO] [stdout] --> tests/order_status_checker_test.rs:589:33 [INFO] [stdout] | [INFO] [stdout] 589 | assert!(matches!(result, Ok(CancellationResult::AlreadyFilled(_)))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this syntax instead: `CancellationResult::AlreadyFilled` [INFO] [stdout] | [INFO] [stdout] ::: src/strategy/atomic_execution.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | AlreadyFilled, [INFO] [stdout] | ------------- `CancellationResult::AlreadyFilled` defined here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0532]: expected tuple struct or tuple variant, found unit variant `CancellationResult::AlreadyFilled` [INFO] [stdout] --> tests/order_status_checker_test.rs:597:33 [INFO] [stdout] | [INFO] [stdout] 597 | assert!(matches!(result, Ok(CancellationResult::AlreadyFilled(_)))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this syntax instead: `CancellationResult::AlreadyFilled` [INFO] [stdout] | [INFO] [stdout] ::: src/strategy/atomic_execution.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | AlreadyFilled, [INFO] [stdout] | ------------- `CancellationResult::AlreadyFilled` defined here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0532]: expected tuple struct or tuple variant, found unit variant `CancellationResult::AlreadyFilled` [INFO] [stdout] --> tests/order_status_checker_test.rs:677:33 [INFO] [stdout] | [INFO] [stdout] 677 | assert!(matches!(result, Ok(CancellationResult::AlreadyFilled(_)))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this syntax instead: `CancellationResult::AlreadyFilled` [INFO] [stdout] | [INFO] [stdout] ::: src/strategy/atomic_execution.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | AlreadyFilled, [INFO] [stdout] | ------------- `CancellationResult::AlreadyFilled` defined here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0532]: expected tuple struct or tuple variant, found unit variant `CancellationResult::AlreadyFilled` [INFO] [stdout] --> tests/order_status_checker_test.rs:685:33 [INFO] [stdout] | [INFO] [stdout] 685 | assert!(matches!(result, Ok(CancellationResult::AlreadyFilled(_)))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this syntax instead: `CancellationResult::AlreadyFilled` [INFO] [stdout] | [INFO] [stdout] ::: src/strategy/atomic_execution.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | AlreadyFilled, [INFO] [stdout] | ------------- `CancellationResult::AlreadyFilled` defined here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:405:60 [INFO] [stdout] | [INFO] [stdout] 405 | metrics.record_api_response("depth_check".to_string(), 15); [INFO] [stdout] | ------------------- ^^ expected `Duration`, found integer [INFO] [stdout] | | [INFO] [stdout] | arguments to this method are incorrect [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:80:12 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn record_api_response(&mut self, endpoint: String, duration: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:406:61 [INFO] [stdout] | [INFO] [stdout] 406 | metrics.record_api_response("cancel_order".to_string(), 25); [INFO] [stdout] | ------------------- ^^ expected `Duration`, found integer [INFO] [stdout] | | [INFO] [stdout] | arguments to this method are incorrect [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:80:12 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn record_api_response(&mut self, endpoint: String, duration: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `get_best_ask`, `get_quantity_step` [INFO] [stdout] --> tests/order_status_checker_test.rs:184:1 [INFO] [stdout] | [INFO] [stdout] 184 | impl ExecutionBackend for MockCancelSuccessBackend { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `get_best_ask`, `get_quantity_step` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn get_best_ask<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] = help: implement the missing item: `fn get_quantity_step<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `get_best_ask`, `get_quantity_step` [INFO] [stdout] --> tests/order_status_checker_test.rs:251:1 [INFO] [stdout] | [INFO] [stdout] 251 | impl ExecutionBackend for MockBinanceAlreadyFilledBackend { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `get_best_ask`, `get_quantity_step` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn get_best_ask<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] = help: implement the missing item: `fn get_quantity_step<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `get_best_ask`, `get_quantity_step` [INFO] [stdout] --> tests/order_status_checker_test.rs:318:1 [INFO] [stdout] | [INFO] [stdout] 318 | impl ExecutionBackend for MockBybitAlreadyFilledBackend { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `get_best_ask`, `get_quantity_step` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn get_best_ask<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] = help: implement the missing item: `fn get_quantity_step<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `get_best_ask`, `get_quantity_step` [INFO] [stdout] --> tests/order_status_checker_test.rs:385:1 [INFO] [stdout] | [INFO] [stdout] 385 | impl ExecutionBackend for MockCancelFailureBackend { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `get_best_ask`, `get_quantity_step` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn get_best_ask<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] = help: implement the missing item: `fn get_quantity_step<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `get_best_ask`, `get_quantity_step` [INFO] [stdout] --> tests/order_status_checker_test.rs:520:5 [INFO] [stdout] | [INFO] [stdout] 520 | impl ExecutionBackend for MockBinanceErrorBackend { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `get_best_ask`, `get_quantity_step` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn get_best_ask<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] = help: implement the missing item: `fn get_quantity_step<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `get_best_ask`, `get_quantity_step` [INFO] [stdout] --> tests/order_status_checker_test.rs:608:5 [INFO] [stdout] | [INFO] [stdout] 608 | impl ExecutionBackend for MockBybitErrorBackend { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `get_best_ask`, `get_quantity_step` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn get_best_ask<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] = help: implement the missing item: `fn get_quantity_step<'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'async_trait>(&'life0 self, _: &'life1 str, _: &'life2 str) -> Pin>> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:407:60 [INFO] [stdout] | [INFO] [stdout] 407 | metrics.record_api_response("place_order".to_string(), 30); [INFO] [stdout] | ------------------- ^^ expected `Duration`, found integer [INFO] [stdout] | | [INFO] [stdout] | arguments to this method are incorrect [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:80:12 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn record_api_response(&mut self, endpoint: String, duration: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 0 arguments but 1 argument was supplied [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:414:13 [INFO] [stdout] | [INFO] [stdout] 414 | metrics.record_reprice(Duration::from_millis(20)); [INFO] [stdout] | ^^^^^^^^^^^^^^ ------------------------- unexpected argument of type `Duration` [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] help: remove the extra argument [INFO] [stdout] | [INFO] [stdout] 414 - metrics.record_reprice(Duration::from_millis(20)); [INFO] [stdout] 414 + metrics.record_reprice(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:419:49 [INFO] [stdout] | [INFO] [stdout] 419 | assert_eq!(metrics.api_response_times[0].1, 15); [INFO] [stdout] | ^^ expected `Duration`, found integer [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `total_reprice_time` on type `HedgeTimingMetrics` [INFO] [stdout] --> tests/hedge_timing_metrics_test.rs:423:24 [INFO] [stdout] | [INFO] [stdout] 423 | assert_eq!(metrics.total_reprice_time.as_millis(), 20); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `fill_detected_at`, `other_leg_check_at`, `cancel_initiated_at`, `cancel_completed_at`, `market_order_initiated_at` ... and 9 others [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0061, E0308, E0609. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0061`. [INFO] [stdout] [INFO] [stderr] error: could not compile `arbitrage2` (test "hedge_timing_metrics_test") due to 26 previous errors [INFO] [stdout] warning: unused import: `redis::aio::MultiplexedConnection` [INFO] [stdout] --> src/strategy/opportunity_detector.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use redis::aio::MultiplexedConnection; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0046, E0432, E0532. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0046`. [INFO] [stdout] [INFO] [stderr] error: could not compile `arbitrage2` (test "order_status_checker_test") due to 13 previous errors [INFO] [stdout] warning: unused import: `redis::AsyncCommands` [INFO] [stdout] --> src/strategy/opportunity_detector.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use redis::AsyncCommands; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_quantity` [INFO] [stdout] --> src/strategy/atomic_execution.rs:444:9 [INFO] [stdout] | [INFO] [stdout] 444 | target_quantity: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_quantity` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `api_duration` [INFO] [stdout] --> src/strategy/entry.rs:848:29 [INFO] [stdout] | [INFO] [stdout] 848 | let api_duration = api_start.elapsed().as_millis(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_api_duration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `long_filled` is never read [INFO] [stdout] --> src/strategy/entry.rs:2033:45 [INFO] [stdout] | [INFO] [stdout] 2033 | ... long_filled = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `short_filled` is never read [INFO] [stdout] --> src/strategy/entry.rs:1775:45 [INFO] [stdout] | [INFO] [stdout] 1775 | ... short_filled = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol` [INFO] [stdout] --> src/strategy/testnet_backend.rs:71:62 [INFO] [stdout] | [INFO] [stdout] 71 | async fn set_margin_type_isolated(&self, exchange: &str, symbol: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BINANCE_USDM_BASE_URL` is never used [INFO] [stdout] --> src/binance.rs:12:7 [INFO] [stdout] | [INFO] [stdout] 12 | const BINANCE_USDM_BASE_URL: &str = "https://fapi.binance.com"; [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 `BINANCE_USDM_WS_BASE_URL` is never used [INFO] [stdout] --> src/binance.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const BINANCE_USDM_WS_BASE_URL: &str = "wss://fstream.binance.com/ws"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `STREAMS_PER_CONNECTION` is never used [INFO] [stdout] --> src/binance.rs:36:7 [INFO] [stdout] | [INFO] [stdout] 36 | const STREAMS_PER_CONNECTION: usize = 100; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_WORKERS` is never used [INFO] [stdout] --> src/binance.rs:37:7 [INFO] [stdout] | [INFO] [stdout] 37 | const MAX_WORKERS: usize = 999; // No limit - spawn as many workers as needed [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BinanceUsdmConnector` is never constructed [INFO] [stdout] --> src/binance.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 39 | pub struct BinanceUsdmConnector; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `connection_check` and `run` are never used [INFO] [stdout] --> src/binance.rs:42:14 [INFO] [stdout] | [INFO] [stdout] 41 | impl BinanceUsdmConnector { [INFO] [stdout] | ------------------------- associated functions in this implementation [INFO] [stdout] 42 | async fn connection_check(client: &reqwest::Client) -> Result<(), DynError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub async fn run( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExchangeInfo` is never constructed [INFO] [stdout] --> src/binance.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 84 | struct ExchangeInfo { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExchangeSymbol` is never constructed [INFO] [stdout] --> src/binance.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | struct ExchangeSymbol { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fetch_valid_usdt_perp_symbols` is never used [INFO] [stdout] --> src/binance.rs:98:10 [INFO] [stdout] | [INFO] [stdout] 98 | async fn fetch_valid_usdt_perp_symbols(client: &reqwest::Client) -> Result, DynError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_streams` is never used [INFO] [stdout] --> src/binance.rs:116:4 [INFO] [stdout] | [INFO] [stdout] 116 | fn build_streams(symbols: &[String]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `redis_key_for` is never used [INFO] [stdout] --> src/binance.rs:126:4 [INFO] [stdout] | [INFO] [stdout] 126 | fn redis_key_for(stream_name: &str, symbol: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ws_batch` is never used [INFO] [stdout] --> src/binance.rs:136:10 [INFO] [stdout] | [INFO] [stdout] 136 | async fn run_ws_batch( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ws_worker` is never used [INFO] [stdout] --> src/binance.rs:328:10 [INFO] [stdout] | [INFO] [stdout] 328 | async fn run_ws_worker( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_plain_usdt_symbol` is never used [INFO] [stdout] --> src/binance.rs:384:4 [INFO] [stdout] | [INFO] [stdout] 384 | fn is_plain_usdt_symbol(symbol: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `spread_bps` and `mid_price` are never used [INFO] [stdout] --> src/strategy/types.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl MarketUpdate { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn spread_bps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn mid_price(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `ID_TO_SYMBOL` is never used [INFO] [stdout] --> src/strategy/types.rs:94:8 [INFO] [stdout] | [INFO] [stdout] 94 | static ID_TO_SYMBOL: Lazy> = Lazy::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `id_to_symbol` is never used [INFO] [stdout] --> src/strategy/types.rs:118:8 [INFO] [stdout] | [INFO] [stdout] 118 | pub fn id_to_symbol(id: u32) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `register_symbol` is never used [INFO] [stdout] --> src/strategy/types.rs:123:8 [INFO] [stdout] | [INFO] [stdout] 123 | pub fn register_symbol(symbol: String, id: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Pending` is never constructed [INFO] [stdout] --> src/strategy/types.rs:141:12 [INFO] [stdout] | [INFO] [stdout] 141 | pub struct Pending; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Filled` is never constructed [INFO] [stdout] --> src/strategy/types.rs:149:12 [INFO] [stdout] | [INFO] [stdout] 149 | pub struct Filled { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Cancelled` is never constructed [INFO] [stdout] --> src/strategy/types.rs:160:12 [INFO] [stdout] | [INFO] [stdout] 160 | pub struct Cancelled { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Order` is never constructed [INFO] [stdout] --> src/strategy/types.rs:181:12 [INFO] [stdout] | [INFO] [stdout] 181 | pub struct Order { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `fill`, and `cancel` are never used [INFO] [stdout] --> src/strategy/types.rs:194:12 [INFO] [stdout] | [INFO] [stdout] 189 | impl Order { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn new(id: u64, symbol_id: u32, price: f64, size: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 211 | pub fn fill(self, _fill_price: f64, _fill_time: u64) -> Order { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 228 | pub fn cancel(self, _reason: &'static str) -> Order { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_fill_price`, `id`, `symbol_id`, and `size` are never used [INFO] [stdout] --> src/strategy/types.rs:247:12 [INFO] [stdout] | [INFO] [stdout] 239 | impl Order { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 247 | pub fn get_fill_price(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn id(&self) -> u64 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn symbol_id(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn size(&self) -> f64 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_reason`, `id`, and `symbol_id` are never used [INFO] [stdout] --> src/strategy/types.rs:275:12 [INFO] [stdout] | [INFO] [stdout] 270 | impl Order { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn get_reason(&self) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 281 | pub fn id(&self) -> u64 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 287 | pub fn symbol_id(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `id`, `symbol_id`, `price`, and `size` are never used [INFO] [stdout] --> src/strategy/types.rs:295:12 [INFO] [stdout] | [INFO] [stdout] 292 | impl Order { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 295 | pub fn id(&self) -> u64 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 301 | pub fn symbol_id(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | pub fn price(&self) -> f64 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 313 | pub fn size(&self) -> f64 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `passes_all` is never used [INFO] [stdout] --> src/strategy/types.rs:331:12 [INFO] [stdout] | [INFO] [stdout] 330 | impl HardConstraints { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 331 | pub fn passes_all(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `calculate_confidence_score` is never used [INFO] [stdout] --> src/strategy/types.rs:351:12 [INFO] [stdout] | [INFO] [stdout] 350 | impl ConfluenceMetrics { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] 351 | pub fn calculate_confidence_score(&self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderRequest` is never constructed [INFO] [stdout] --> src/strategy/types.rs:420:12 [INFO] [stdout] | [INFO] [stdout] 420 | pub struct OrderRequest { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `market`, `limit`, `is_market`, `is_limit`, `is_buy`, and `is_sell` are never used [INFO] [stdout] --> src/strategy/types.rs:469:12 [INFO] [stdout] | [INFO] [stdout] 452 | impl OrderRequest { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 469 | pub fn market( [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 508 | pub fn limit( [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 533 | pub fn is_market(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn is_limit(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | pub fn is_buy(&self) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | pub fn is_sell(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `serialize_to_json` is never used [INFO] [stdout] --> src/strategy/types.rs:832:8 [INFO] [stdout] | [INFO] [stdout] 832 | pub fn serialize_to_json(value: &T) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RepricingEvent` is never constructed [INFO] [stdout] --> src/strategy/types.rs:866:12 [INFO] [stdout] | [INFO] [stdout] 866 | pub struct RepricingEvent { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RepricingMetrics` is never constructed [INFO] [stdout] --> src/strategy/types.rs:878:12 [INFO] [stdout] | [INFO] [stdout] 878 | pub struct RepricingMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `finalize` are never used [INFO] [stdout] --> src/strategy/types.rs:889:12 [INFO] [stdout] | [INFO] [stdout] 888 | impl RepricingMetrics { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 889 | pub fn new(initial_price: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 901 | pub fn finalize(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RepricingConfig` is never constructed [INFO] [stdout] --> src/strategy/types.rs:909:12 [INFO] [stdout] | [INFO] [stdout] 909 | pub struct RepricingConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ExecutionMode` is never used [INFO] [stdout] --> src/strategy/types.rs:920:10 [INFO] [stdout] | [INFO] [stdout] 920 | pub enum ExecutionMode { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `ultra_fast`, `balanced`, `safe`, and `from_confidence` are never used [INFO] [stdout] --> src/strategy/types.rs:927:12 [INFO] [stdout] | [INFO] [stdout] 926 | impl RepricingConfig { [INFO] [stdout] | -------------------- associated functions in this implementation [INFO] [stdout] 927 | pub fn ultra_fast() -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 938 | pub fn balanced() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 949 | pub fn safe() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 964 | pub fn from_confidence(confidence_score: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/strategy/market_data.rs:173:12 [INFO] [stdout] | [INFO] [stdout] 83 | impl MarketDataStore { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn prefetch_symbol(&self, symbol_id: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn get_spread_bps(&self, symbol_id: u32) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn get_timestamp(&self, symbol_id: u32) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 338 | pub fn get_mid_price(&self, symbol_id: u32) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 363 | pub fn is_stale(&self, symbol_id: u32, current_time_us: u64, threshold_us: u64) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 396 | pub fn iter_spreads(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 459 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BufferPool` is never constructed [INFO] [stdout] --> src/strategy/buffer_pool.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct BufferPool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `buffer_count`, `buffer_capacity`, `get_string_buffer`, `create_small_vec`, and `create_small_vec_with_capacity` are never used [INFO] [stdout] --> src/strategy/buffer_pool.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl BufferPool { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn buffer_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn buffer_capacity(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn get_string_buffer(&mut self) -> &mut String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn create_small_vec() -> SmallVec<[T; 8]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn create_small_vec_with_capacity(capacity: usize) -> SmallVec<[T; 8]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `with_string_buffer` is never used [INFO] [stdout] --> src/strategy/buffer_pool.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 124 | pub fn with_string_buffer(f: F) -> R [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_small_vec` is never used [INFO] [stdout] --> src/strategy/buffer_pool.rs:147:8 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn create_small_vec() -> SmallVec<[T; 8]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_capacity`, `depth`, `is_full`, `is_empty`, and `metrics` are never used [INFO] [stdout] --> src/strategy/pipeline.rs:118:12 [INFO] [stdout] | [INFO] [stdout] 83 | impl MarketPipeline { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn with_capacity(capacity: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn depth(&self) -> usize { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn is_full(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn metrics(&self) -> PipelineMetrics { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `try_push` is never used [INFO] [stdout] --> src/strategy/pipeline.rs:289:12 [INFO] [stdout] | [INFO] [stdout] 226 | impl MarketProducer { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn try_push(&self, update: MarketUpdate) -> Result<(), MarketUpdate> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `pop_batch` is never used [INFO] [stdout] --> src/strategy/pipeline.rs:374:12 [INFO] [stdout] | [INFO] [stdout] 319 | impl MarketConsumer { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 374 | pub fn pop_batch(&self, max_batch: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PipelineMetrics` is never constructed [INFO] [stdout] --> src/strategy/pipeline.rs:390:12 [INFO] [stdout] | [INFO] [stdout] 390 | pub struct PipelineMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `drop_rate`, `utilization`, and `is_backpressure` are never used [INFO] [stdout] --> src/strategy/pipeline.rs:412:12 [INFO] [stdout] | [INFO] [stdout] 410 | impl PipelineMetrics { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] 411 | /// Calculate the drop rate (percentage of updates dropped). [INFO] [stdout] 412 | pub fn drop_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 421 | pub fn utilization(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 430 | pub fn is_backpressure(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ORDER_QUEUE_CAPACITY` is never used [INFO] [stdout] --> src/strategy/pipeline.rs:635:7 [INFO] [stdout] | [INFO] [stdout] 635 | const ORDER_QUEUE_CAPACITY: usize = 1_000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExecutionPipeline` is never constructed [INFO] [stdout] --> src/strategy/pipeline.rs:668:12 [INFO] [stdout] | [INFO] [stdout] 668 | pub struct ExecutionPipeline { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/strategy/pipeline.rs:699:12 [INFO] [stdout] | [INFO] [stdout] 689 | impl ExecutionPipeline { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 699 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 724 | pub fn with_capacity(capacity: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 742 | pub fn producer(&self) -> OrderProducer { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 755 | pub fn consumer(&self) -> OrderConsumer { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 771 | pub fn depth(&self) -> usize { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 777 | pub fn capacity(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 783 | pub fn is_full(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 789 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 796 | pub fn metrics(&self) -> ExecutionMetrics { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderProducer` is never constructed [INFO] [stdout] --> src/strategy/pipeline.rs:819:12 [INFO] [stdout] | [INFO] [stdout] 819 | pub struct OrderProducer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `submit` and `try_submit` are never used [INFO] [stdout] --> src/strategy/pipeline.rs:853:12 [INFO] [stdout] | [INFO] [stdout] 830 | impl OrderProducer { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 853 | pub fn submit(&self, order: OrderRequest) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 893 | pub fn try_submit( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderConsumer` is never constructed [INFO] [stdout] --> src/strategy/pipeline.rs:917:12 [INFO] [stdout] | [INFO] [stdout] 917 | pub struct OrderConsumer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `pop` and `pop_batch` are never used [INFO] [stdout] --> src/strategy/pipeline.rs:945:12 [INFO] [stdout] | [INFO] [stdout] 926 | impl OrderConsumer { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 945 | pub fn pop(&self) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 981 | pub fn pop_batch(&self, max_batch: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExecutionMetrics` is never constructed [INFO] [stdout] --> src/strategy/pipeline.rs:997:12 [INFO] [stdout] | [INFO] [stdout] 997 | pub struct ExecutionMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `drop_rate`, `utilization`, and `is_backpressure` are never used [INFO] [stdout] --> src/strategy/pipeline.rs:1019:12 [INFO] [stdout] | [INFO] [stdout] 1017 | impl ExecutionMetrics { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] 1018 | /// Calculate the drop rate (percentage of orders dropped). [INFO] [stdout] 1019 | pub fn drop_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1028 | pub fn utilization(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1037 | pub fn is_backpressure(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_empty` is never used [INFO] [stdout] --> src/strategy/symbol_map.rs:165:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl SymbolMap { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new_shared` is never used [INFO] [stdout] --> src/strategy/symbol_map.rs:182:12 [INFO] [stdout] | [INFO] [stdout] 177 | impl SymbolMap { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn new_shared() -> Arc { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `push_count`, `pop_count`, `drop_count`, `len`, and `is_empty` are never used [INFO] [stdout] --> src/strategy/opportunity_queue.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl OpportunityQueue { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn push_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn pop_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn drop_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `pop_batch` is never used [INFO] [stdout] --> src/strategy/opportunity_queue.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 182 | impl OpportunityConsumer { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn pop_batch(&self, max_batch: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CoreAssignment` is never constructed [INFO] [stdout] --> src/strategy/thread_pinning.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct CoreAssignment { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `default_assignment` and `custom` are never used [INFO] [stdout] --> src/strategy/thread_pinning.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl CoreAssignment { [INFO] [stdout] | ------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn default_assignment() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn custom(strategy_core: usize, websocket_cores: Vec) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_pinned_thread` is never used [INFO] [stdout] --> src/strategy/thread_pinning.rs:249:8 [INFO] [stdout] | [INFO] [stdout] 249 | pub fn spawn_pinned_thread( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spread_exceeds_threshold` is never used [INFO] [stdout] --> src/strategy/branchless.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn spread_exceeds_threshold(spread: f64, threshold: f64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `funding_delta_substantial` is never used [INFO] [stdout] --> src/strategy/branchless.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn funding_delta_substantial(funding_delta: f64, threshold: f64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `depth_sufficient` is never used [INFO] [stdout] --> src/strategy/branchless.rs:57:8 [INFO] [stdout] | [INFO] [stdout] 57 | pub fn depth_sufficient(depth: f64, threshold: f64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `all_conditions_pass` is never used [INFO] [stdout] --> src/strategy/branchless.rs:81:8 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn all_conditions_pass(spread_ok: bool, funding_ok: bool, depth_ok: bool) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `any_condition_passes` is never used [INFO] [stdout] --> src/strategy/branchless.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn any_condition_passes(cond1: bool, cond2: bool, cond3: bool) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `min_f64` is never used [INFO] [stdout] --> src/strategy/branchless.rs:120:8 [INFO] [stdout] | [INFO] [stdout] 120 | pub fn min_f64(a: f64, b: f64) -> f64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `max_f64` is never used [INFO] [stdout] --> src/strategy/branchless.rs:129:8 [INFO] [stdout] | [INFO] [stdout] 129 | pub fn max_f64(a: f64, b: f64) -> f64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clamp_f64` is never used [INFO] [stdout] --> src/strategy/branchless.rs:154:8 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn clamp_f64(value: f64, min: f64, max: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `select_f64` is never used [INFO] [stdout] --> src/strategy/branchless.rs:175:8 [INFO] [stdout] | [INFO] [stdout] 175 | pub fn select_f64(condition: bool, value_if_true: f64, value_if_false: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_opportunity` is never used [INFO] [stdout] --> src/strategy/branchless.rs:202:8 [INFO] [stdout] | [INFO] [stdout] 202 | pub fn is_valid_opportunity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_exit_opportunity` is never used [INFO] [stdout] --> src/strategy/branchless.rs:230:8 [INFO] [stdout] | [INFO] [stdout] 230 | pub fn should_exit_opportunity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `abs_f64` is never used [INFO] [stdout] --> src/strategy/branchless.rs:272:8 [INFO] [stdout] | [INFO] [stdout] 272 | pub fn abs_f64(x: f64) -> f64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `sign_f64` is never used [INFO] [stdout] --> src/strategy/branchless.rs:291:8 [INFO] [stdout] | [INFO] [stdout] 291 | pub fn sign_f64(x: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `ID_TO_EXCHANGE` is never used [INFO] [stdout] --> src/strategy/exchange_fees.rs:100:8 [INFO] [stdout] | [INFO] [stdout] 100 | static ID_TO_EXCHANGE: Lazy> = Lazy::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `exchange_to_id` is never used [INFO] [stdout] --> src/strategy/exchange_fees.rs:192:8 [INFO] [stdout] | [INFO] [stdout] 192 | pub fn exchange_to_id(exchange: &str) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `id_to_exchange` is never used [INFO] [stdout] --> src/strategy/exchange_fees.rs:209:8 [INFO] [stdout] | [INFO] [stdout] 209 | pub fn id_to_exchange(exchange_id: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_all_exchange_ids` is never used [INFO] [stdout] --> src/strategy/exchange_fees.rs:219:8 [INFO] [stdout] | [INFO] [stdout] 219 | pub fn get_all_exchange_ids() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_all_exchange_names` is never used [INFO] [stdout] --> src/strategy/exchange_fees.rs:235:8 [INFO] [stdout] | [INFO] [stdout] 235 | pub fn get_all_exchange_names() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LatencyMonitor` is never constructed [INFO] [stdout] --> src/strategy/latency.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct LatencyMonitor { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `any_stale` are never used [INFO] [stdout] --> src/strategy/latency.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl LatencyMonitor { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 14 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn any_stale(&self, threshold_ms: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LatencyStats` is never constructed [INFO] [stdout] --> src/strategy/latency_tracker.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct LatencyStats { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record`, `snapshot`, and `reset` are never used [INFO] [stdout] --> src/strategy/latency_tracker.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl LatencyStats { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 27 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn record(&self, latency_ns: u64) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn snapshot(&self) -> LatencySnapshot { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn reset(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LatencySnapshot` is never constructed [INFO] [stdout] --> src/strategy/latency_tracker.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | pub struct LatencySnapshot { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/strategy/latency_tracker.rs:122:12 [INFO] [stdout] | [INFO] [stdout] 121 | impl LatencySnapshot { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] 122 | pub fn p50_us(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn p95_us(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn p99_us(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn max_us(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn p50_ms(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn p95_ms(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn p99_ms(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn max_ms(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `measure_latency` is never used [INFO] [stdout] --> src/strategy/latency_tracker.rs:157:8 [INFO] [stdout] | [INFO] [stdout] 157 | pub fn measure_latency(f: F) -> (R, u64) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `measure_and_record` is never used [INFO] [stdout] --> src/strategy/latency_tracker.rs:169:8 [INFO] [stdout] | [INFO] [stdout] 169 | pub fn measure_and_record(stats: &LatencyStats, f: F) -> R [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConfluenceCalculator` is never constructed [INFO] [stdout] --> src/strategy/confluence.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct ConfluenceCalculator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/strategy/confluence.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl ConfluenceCalculator { [INFO] [stdout] | ------------------------- associated items in this implementation [INFO] [stdout] 17 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn check_hard_constraints( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn calculate_obi(bid_volume: f64, ask_volume: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn calculate_vwap_deviation(current_price: f64, vwap: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn calculate_atr(high: f64, low: f64, _close: f64, prev_close: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn update_oi_history(&mut self, oi: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn update_vwap_history(&mut self, price: f64, volume: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn update_atr_history(&mut self, atr: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn get_atr_trend(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn identify_liquidation_clusters( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `parse_price`, `is_valid_opportunity`, `should_exit_opportunity`, `min`, `max`, and `clamp` are never used [INFO] [stdout] --> src/strategy/scanner.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 5 | impl OpportunityScanner { [INFO] [stdout] | ----------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn parse_price(price_str: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn is_valid_opportunity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | pub fn should_exit_opportunity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn min(a: f64, b: f64) -> f64 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub fn max(a: f64, b: f64) -> f64 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn clamp(value: f64, min: f64, max: f64) -> f64 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `calculate_slippage` is never used [INFO] [stdout] --> src/strategy/entry.rs:345:12 [INFO] [stdout] | [INFO] [stdout] 79 | impl EntryExecutor { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 345 | pub fn calculate_slippage(position_size: f64, order_book_depth: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `calculate_unrealized_pnl` and `check_exit_conditions` are never used [INFO] [stdout] --> src/strategy/positions.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 5 | impl PositionManager { [INFO] [stdout] | -------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn calculate_unrealized_pnl( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn check_exit_conditions( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_state` is never used [INFO] [stdout] --> src/strategy/portfolio.rs:59:18 [INFO] [stdout] | [INFO] [stdout] 20 | impl PortfolioManager { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 59 | pub async fn get_state(&self) -> PortfolioState { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_market_consumer` is never used [INFO] [stdout] --> src/strategy/runner.rs:92:12 [INFO] [stdout] | [INFO] [stdout] 37 | impl StrategyRunner { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn set_market_consumer(&mut self, consumer: MarketConsumer) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `reprice_count`, `first_reprice_at`, and `last_reprice_at` are never read [INFO] [stdout] --> src/strategy/atomic_execution.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct HedgeTimingMetrics { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | pub reprice_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 26 | pub first_reprice_at: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | pub last_reprice_at: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HedgeTimingMetrics` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `record_reprice`, `depth_check_duration`, `total_reprice_duration`, and `log_summary` are never used [INFO] [stdout] --> src/strategy/atomic_execution.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl HedgeTimingMetrics { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn record_reprice(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn depth_check_duration(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn total_reprice_duration(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn log_summary(&self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Debug`, `Warn`, and `Error` are never constructed [INFO] [stdout] --> src/strategy/atomic_execution.rs:187:5 [INFO] [stdout] | [INFO] [stdout] 186 | pub enum LogLevel { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 187 | Debug, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 188 | Info, [INFO] [stdout] 189 | Warn, [INFO] [stdout] | ^^^^ [INFO] [stdout] 190 | Error, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogLevel` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `log_other_leg_check`, `log_cancel_completed`, `log_market_order_initiated`, `log_market_order_accepted`, and `log_error` are never used [INFO] [stdout] --> src/strategy/atomic_execution.rs:199:12 [INFO] [stdout] | [INFO] [stdout] 198 | impl HedgeLogger { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 199 | pub fn new(level: LogLevel) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 213 | pub fn log_other_leg_check(&self, exchange: &str, status: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn log_cancel_completed(&self, exchange: &str, success: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | pub fn log_market_order_initiated(&self, exchange: &str, symbol: &str, side: &str, quantity: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | pub fn log_market_order_accepted(&self, exchange: &str, order_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 306 | pub fn log_error(&self, message: &str) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Success`, `Failed`, `AlreadyFilled`, and `NotFound` are never constructed [INFO] [stdout] --> src/strategy/atomic_execution.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 316 | pub enum CancellationResult { [INFO] [stdout] | ------------------ variants in this enum [INFO] [stdout] 317 | Success, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 318 | Cancelled, [INFO] [stdout] 319 | Failed(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 320 | AlreadyFilled, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 321 | NotFound, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CancellationResult` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `check_interval_ms` and `max_checks` are never read [INFO] [stdout] --> src/strategy/atomic_execution.rs:349:9 [INFO] [stdout] | [INFO] [stdout] 348 | pub struct RaceConditionGuard { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 349 | pub check_interval_ms: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 350 | pub max_checks: u32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RaceConditionGuard` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/strategy/atomic_execution.rs:354:12 [INFO] [stdout] | [INFO] [stdout] 353 | impl RaceConditionGuard { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] 354 | pub fn new(check_interval_ms: u64, max_checks: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `long_qty` is never read [INFO] [stdout] --> src/strategy/atomic_execution.rs:423:22 [INFO] [stdout] | [INFO] [stdout] 423 | OnlyLongFilled { long_qty: f64 }, [INFO] [stdout] | -------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `BothLegsStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `short_qty` is never read [INFO] [stdout] --> src/strategy/atomic_execution.rs:424:23 [INFO] [stdout] | [INFO] [stdout] 424 | OnlyShortFilled { short_qty: f64 }, [INFO] [stdout] | --------------- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `BothLegsStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resume_trading` is never used [INFO] [stdout] --> src/strategy/atomic_execution.rs:509:8 [INFO] [stdout] | [INFO] [stdout] 509 | pub fn resume_trading() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_all_balances` and `is_symbol_tradeable` are never used [INFO] [stdout] --> src/strategy/execution_backend.rs:33:14 [INFO] [stdout] | [INFO] [stdout] 7 | pub trait ExecutionBackend: Send + Sync { [INFO] [stdout] | ---------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 33 | async fn get_all_balances(&self) -> Result, Box>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | async fn is_symbol_tradeable(&self, exchange: &str, symbol: &str) -> Result>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestnetConfig` is never constructed [INFO] [stdout] --> src/strategy/testnet_config.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct TestnetConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExchangeCredentials` is never constructed [INFO] [stdout] --> src/strategy/testnet_config.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct ExchangeCredentials { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_env`, `load_exchange_creds`, `load_exchange_creds_with_passphrase`, and `has_any_configured` are never used [INFO] [stdout] --> src/strategy/testnet_config.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl TestnetConfig { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 21 | pub fn from_env() -> Result> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | fn load_exchange_creds(prefix: &str) -> Result, Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | fn load_exchange_creds_with_passphrase(prefix: &str) -> Result, Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn has_any_configured(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `HmacSha256` is never used [INFO] [stdout] --> src/strategy/testnet/bybit_testnet.rs:14:6 [INFO] [stdout] | [INFO] [stdout] 14 | type HmacSha256 = Hmac; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BYBIT_DEMO_URL` is never used [INFO] [stdout] --> src/strategy/testnet/bybit_testnet.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const BYBIT_DEMO_URL: &str = "https://api-demo.bybit.com"; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ORDER_BOOK_CACHE_TTL` is never used [INFO] [stdout] --> src/strategy/testnet/bybit_testnet.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const ORDER_BOOK_CACHE_TTL: Duration = Duration::from_millis(100); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CachedOrderBook` is never constructed [INFO] [stdout] --> src/strategy/testnet/bybit_testnet.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 23 | struct CachedOrderBook { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BybitDemoClient` is never constructed [INFO] [stdout] --> src/strategy/testnet/bybit_testnet.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct BybitDemoClient { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/strategy/testnet/bybit_testnet.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl BybitDemoClient { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 43 | pub fn new(credentials: ExchangeCredentials) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub async fn sync_server_time(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | async fn get_timestamp(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub async fn get_qty_step(&self, symbol: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | fn generate_post_signature(&self, timestamp: &str, recv_window: &str, body: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | fn generate_get_signature(&self, timestamp: &str, recv_window: &str, query_string: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 190 | pub async fn set_leverage(&self, symbol: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | pub async fn is_symbol_tradeable(&self, symbol: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | pub async fn place_market_order(&self, order: SimulatedOrder) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 358 | pub async fn place_order(&self, order: SimulatedOrder) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 454 | pub async fn get_order_status(&self, order_id: &str, symbol: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 503 | pub async fn get_order_status_detailed(&self, order_id: &str, symbol: &str) -> Result Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 618 | pub async fn get_balance(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 700 | pub async fn get_order_book_depth(&self, symbol: &str, levels: usize) -> Result Result> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 839 | pub async fn get_best_ask(&self, symbol: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `HmacSha256` is never used [INFO] [stdout] --> src/strategy/testnet/bitget_demo.rs:10:6 [INFO] [stdout] | [INFO] [stdout] 10 | type HmacSha256 = Hmac; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BITGET_DEMO_URL` is never used [INFO] [stdout] --> src/strategy/testnet/bitget_demo.rs:12:7 [INFO] [stdout] | [INFO] [stdout] 12 | const BITGET_DEMO_URL: &str = "https://api.bitget.com"; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BitgetDemoClient` is never constructed [INFO] [stdout] --> src/strategy/testnet/bitget_demo.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct BitgetDemoClient { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/strategy/testnet/bitget_demo.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl BitgetDemoClient { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 22 | pub fn new(credentials: ExchangeCredentials) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | fn generate_signature(&self, timestamp: &str, method: &str, path: &str, query_string: &str, body: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub async fn is_symbol_tradeable(&self, symbol: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub async fn place_order(&self, order: SimulatedOrder) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub async fn get_order_status(&self, order_id: &str, symbol: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 204 | pub async fn cancel_order(&self, order_id: &str, symbol: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub async fn get_balance(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestnetBackend` is never constructed [INFO] [stdout] --> src/strategy/testnet_backend.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct TestnetBackend { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `sync_server_time` are never used [INFO] [stdout] --> src/strategy/testnet_backend.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl TestnetBackend { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 22 | pub fn new(config: TestnetConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub async fn sync_server_time(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SyntheticConfig` is never constructed [INFO] [stdout] --> src/strategy/synthetic_config.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SyntheticConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_env`, `validate`, and `new` are never used [INFO] [stdout] --> src/strategy/synthetic_config.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl SyntheticConfig { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 19 | /// Load configuration from environment variables with defaults [INFO] [stdout] 20 | pub fn from_env() -> Result> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn validate(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestMetricsCollector` is never constructed [INFO] [stdout] --> src/strategy/test_metrics.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct TestMetricsCollector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/strategy/test_metrics.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl TestMetricsCollector { [INFO] [stdout] | ------------------------- associated items in this implementation [INFO] [stdout] 54 | /// Create a new test metrics collector [INFO] [stdout] 55 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn record_opportunity(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn record_trade_executed(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn record_success(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn record_failure(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn record_partial_fill(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn record_cancellation(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn record_timeout(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn record_emergency_close(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn record_websocket_latency(&self, latency: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn record_queue_latency(&self, latency: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn record_opportunity_detection_latency(&self, latency: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn record_order_placement_latency(&self, latency: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn record_end_to_end_latency(&self, latency: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn calculate_success_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | fn calculate_percentile(sorted_values: &[Duration], percentile: f64) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | fn calculate_latency_percentiles(latencies: &[Duration]) -> (Option, Option, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn get_websocket_latency_percentiles(&self) -> (Option, Option, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | pub fn get_queue_latency_percentiles(&self) -> (Option, Option, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn get_opportunity_detection_percentiles(&self) -> (Option, Option, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 234 | pub fn get_order_placement_percentiles(&self) -> (Option, Option, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | pub fn get_end_to_end_percentiles(&self) -> (Option, Option, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 256 | pub fn report_summary(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn report_periodic(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `exchange`, `symbol`, `available_liquidity`, `required_liquidity`, `check_duration_ms`, and `timestamp` are never read [INFO] [stdout] --> src/strategy/depth_checker.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct DepthCheckResult { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 11 | pub exchange: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 12 | pub symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 13 | pub available_liquidity: f64, // Sum of top 5 levels [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 14 | pub required_liquidity: f64, // hedge_quantity * 1.5 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub check_duration_ms: u128, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | pub timestamp: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DepthCheckResult` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/strategy/price_chaser.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 77 | pub struct RepricingEvent { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 78 | pub timestamp: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 79 | pub old_price: f64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 80 | pub new_price: f64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 81 | pub reason: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 82 | pub elapsed_ms: u128, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 83 | pub exchange: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 84 | pub side: OrderSide, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RepricingEvent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `ConfigStorage` is never used [INFO] [stdout] --> src/strategy/config_storage.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait ConfigStorage: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `InMemoryConfigStorage` is never constructed [INFO] [stdout] --> src/strategy/config_storage.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct InMemoryConfigStorage { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/strategy/config_storage.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl InMemoryConfigStorage { [INFO] [stdout] | -------------------------- associated function in this implementation [INFO] [stdout] 30 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConfidenceThresholds` is never constructed [INFO] [stdout] --> src/strategy/config_storage.rs:123:8 [INFO] [stdout] | [INFO] [stdout] 123 | struct ConfidenceThresholds { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConfigValidator` is never constructed [INFO] [stdout] --> src/strategy/config_storage.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 129 | pub struct ConfigValidator; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `validate_repricing_config` and `validate_confidence_thresholds` are never used [INFO] [stdout] --> src/strategy/config_storage.rs:133:12 [INFO] [stdout] | [INFO] [stdout] 131 | impl ConfigValidator { [INFO] [stdout] | -------------------- associated functions in this implementation [INFO] [stdout] 132 | /// Validate repricing configuration parameters [INFO] [stdout] 133 | pub fn validate_repricing_config(config: &RepricingConfig) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn validate_confidence_thresholds(ultra_fast: f64, balanced: f64) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `should_retry_limit` is never used [INFO] [stdout] --> src/strategy/fill_probability.rs:167:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl FillProbabilityEstimator { [INFO] [stdout] | ----------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn should_retry_limit( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `recommended_action` is never read [INFO] [stdout] --> src/strategy/fill_probability.rs:199:9 [INFO] [stdout] | [INFO] [stdout] 195 | pub struct FillProbability { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 199 | pub recommended_action: OrderAction, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FillProbability` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RateLimiter` is never constructed [INFO] [stdout] --> src/strategy/rate_limiter.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct RateLimiter { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RateLimiterState` is never constructed [INFO] [stdout] --> src/strategy/rate_limiter.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | struct RateLimiterState { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `acquire`, and `stats` are never used [INFO] [stdout] --> src/strategy/rate_limiter.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl RateLimiter { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 20 | pub fn new(requests_per_second: u32, burst_capacity: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub async fn acquire(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub async fn stats(&self) -> RateLimiterStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RateLimiterStats` is never constructed [INFO] [stdout] --> src/strategy/rate_limiter.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 94 | pub struct RateLimiterStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "8ce1645d88cd5307a32af6e53cf98363c06af45878e0db655864db9a1eb5efe6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8ce1645d88cd5307a32af6e53cf98363c06af45878e0db655864db9a1eb5efe6", kill_on_drop: false }` [INFO] [stdout] 8ce1645d88cd5307a32af6e53cf98363c06af45878e0db655864db9a1eb5efe6