[INFO] cloning repository https://github.com/4e84/hlnode-data-server
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/4e84/hlnode-data-server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F4e84%2Fhlnode-data-server", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F4e84%2Fhlnode-data-server'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f5668376686c7de2c514f259252616ca5060d88e
[INFO] testing 4e84/hlnode-data-server against 1.94.0 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F4e84%2Fhlnode-data-server" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/4e84/hlnode-data-server
[INFO] finished tweaking git repo https://github.com/4e84/hlnode-data-server
[INFO] tweaked toml for git repo https://github.com/4e84/hlnode-data-server written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/4e84/hlnode-data-server on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/4e84/hlnode-data-server 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" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded notify-types v2.0.0
[INFO] [stderr]   Downloaded libredox v0.1.4
[INFO] [stderr]   Downloaded notify v8.0.0
[INFO] [stderr]   Downloaded alloy v1.0.22
[INFO] [stderr]   Downloaded lru v0.13.0
[INFO] [stderr]   Downloaded bitcoin-io v0.1.3
[INFO] [stderr]   Downloaded serdect v0.2.0
[INFO] [stderr]   Downloaded alloy-sol-macro-input v1.3.0
[INFO] [stderr]   Downloaded futures-utils-wasm v0.1.0
[INFO] [stderr]   Downloaded alloy-rpc-types-any v1.0.23
[INFO] [stderr]   Downloaded crc v3.3.0
[INFO] [stderr]   Downloaded alloy-eip2930 v0.2.1
[INFO] [stderr]   Downloaded alloy-core v1.3.0
[INFO] [stderr]   Downloaded alloy-tx-macros v1.0.23
[INFO] [stderr]   Downloaded alloy-serde v1.0.23
[INFO] [stderr]   Downloaded clap_derive v4.5.41
[INFO] [stderr]   Downloaded alloy-sol-macro-expander v1.3.0
[INFO] [stderr]   Downloaded alloy-rpc-client v1.0.23
[INFO] [stderr]   Downloaded alloy-contract v1.0.22
[INFO] [stderr]   Downloaded clap v4.5.42
[INFO] [stderr]   Downloaded alloy-sol-types v1.3.0
[INFO] [stderr]   Downloaded alloy-primitives v1.3.0
[INFO] [stderr]   Downloaded alloy-consensus v1.0.23
[INFO] [stderr]   Downloaded alloy-provider v1.0.22
[INFO] [stderr]   Downloaded clap_builder v4.5.42
[INFO] [stderr]   Downloaded ruint v1.15.0
[INFO] [stderr]   Downloaded alloy-rpc-types-eth v1.0.23
[INFO] [stderr]   Downloaded pest v2.8.1
[INFO] [stderr]   Downloaded const_format v0.2.34
[INFO] [stderr]   Downloaded proptest v1.7.0
[INFO] [stderr]   Downloaded secp256k1 v0.30.0
[INFO] [stderr]   Downloaded syn-solidity v1.3.0
[INFO] [stderr]   Downloaded alloy-genesis v1.0.23
[INFO] [stderr]   Downloaded alloy-eips v1.0.23
[INFO] [stderr]   Downloaded blst v0.3.15
[INFO] [stderr]   Downloaded rustls v0.23.30
[INFO] [stderr]   Downloaded hyper-util v0.1.14
[INFO] [stderr]   Downloaded cc v1.2.27
[INFO] [stderr]   Downloaded alloy-chains v0.2.6
[INFO] [stderr]   Downloaded alloy-trie v0.9.0
[INFO] [stderr]   Downloaded bitcoin_hashes v0.14.0
[INFO] [stderr]   Downloaded alloy-signer-local v1.0.23
[INFO] [stderr]   Downloaded alloy-rpc-types v1.0.22
[INFO] [stderr]   Downloaded nybbles v0.4.1
[INFO] [stderr]   Downloaded alloy-json-abi v1.3.0
[INFO] [stderr]   Downloaded alloy-transport v1.0.23
[INFO] [stderr]   Downloaded alloy-json-rpc v1.0.23
[INFO] [stderr]   Downloaded wasmtimer v0.4.2
[INFO] [stderr]   Downloaded alloy-transport-http v1.0.23
[INFO] [stderr]   Downloaded yawc v0.2.6
[INFO] [stderr]   Downloaded alloy-dyn-abi v1.3.0
[INFO] [stderr]   Downloaded alloy-consensus-any v1.0.23
[INFO] [stderr]   Downloaded tokio v1.45.1
[INFO] [stderr]   Downloaded hex-conservative v0.2.1
[INFO] [stderr]   Downloaded alloy-network v1.0.23
[INFO] [stderr]   Downloaded alloy-sol-macro v1.3.0
[INFO] [stderr]   Downloaded const-hex v1.14.1
[INFO] [stderr]   Downloaded alloy-sol-type-parser v1.3.0
[INFO] [stderr]   Downloaded alloy-eip2124 v0.2.0
[INFO] [stderr]   Downloaded alloy-eip7702 v0.6.1
[INFO] [stderr]   Downloaded alloy-signer v1.0.23
[INFO] [stderr]   Downloaded alloy-network-primitives v1.0.23
[INFO] [stderr]   Downloaded c-kzg v2.1.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] eacc29275f2de5b9d500302322303a5bc5cadf5f8951d9ea3133df159b344589
[INFO] running `Command { std: "docker" "start" "-a" "eacc29275f2de5b9d500302322303a5bc5cadf5f8951d9ea3133df159b344589", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "eacc29275f2de5b9d500302322303a5bc5cadf5f8951d9ea3133df159b344589", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "eacc29275f2de5b9d500302322303a5bc5cadf5f8951d9ea3133df159b344589", kill_on_drop: false }`
[INFO] [stdout] eacc29275f2de5b9d500302322303a5bc5cadf5f8951d9ea3133df159b344589
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b027d9afc0aedaabd478ced388be0af9c2675172201a957c9041b57483c1e5b7
[INFO] running `Command { std: "docker" "start" "-a" "b027d9afc0aedaabd478ced388be0af9c2675172201a957c9041b57483c1e5b7", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling const-oid v0.9.6
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling ruint-macro v1.2.1
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling base16ct v0.2.0
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling cc v1.2.27
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling winnow v0.7.12
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling slab v0.4.10
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling sec1 v0.7.3
[INFO] [stderr]    Compiling ff v0.13.1
[INFO] [stderr]    Compiling crypto-bigint v0.5.5
[INFO] [stderr]    Compiling group v0.13.0
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling rfc6979 v0.4.0
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling signal-hook-registry v1.4.5
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling hashbrown v0.15.4
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling crc v3.3.0
[INFO] [stderr]    Compiling rustversion v1.0.21
[INFO] [stderr]    Compiling futures-utils-wasm v0.1.0
[INFO] [stderr]    Compiling indexmap v2.10.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling elliptic-curve v0.13.8
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling ecdsa v0.16.9
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rustls v0.23.30
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling k256 v0.13.4
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling anstyle v1.0.11
[INFO] [stderr]    Compiling anstyle-query v1.1.3
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling anstream v0.6.19
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling macro-string v0.1.4
[INFO] [stderr]    Compiling syn-solidity v1.3.0
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling inotify v0.11.0
[INFO] [stderr]    Compiling rand v0.9.1
[INFO] [stderr]    Compiling webpki-roots v1.0.2
[INFO] [stderr]    Compiling filetime v0.2.25
[INFO] [stderr]    Compiling nom v8.0.0
[INFO] [stderr]    Compiling notify-types v2.0.0
[INFO] [stderr]    Compiling clap_lex v0.7.5
[INFO] [stderr]    Compiling clap_builder v4.5.42
[INFO] [stderr]    Compiling notify v8.0.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling alloy-rlp-derive v0.3.12
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling zerovec v0.11.2
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]    Compiling auto_impl v1.3.0
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling derive_more v2.0.1
[INFO] [stderr]    Compiling tinystr v0.8.1
[INFO] [stderr]    Compiling icu_locale_core v2.0.0
[INFO] [stderr]    Compiling potential_utf v0.1.2
[INFO] [stderr]    Compiling icu_collections v2.0.0
[INFO] [stderr]    Compiling icu_provider v2.0.0
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling const-hex v1.14.1
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling ruint v1.15.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling alloy-rlp v0.3.12
[INFO] [stderr]    Compiling http v1.3.1
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling alloy-primitives v1.3.0
[INFO] [stderr]    Compiling alloy-sol-type-parser v1.3.0
[INFO] [stderr]    Compiling tokio v1.45.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling nybbles v0.4.1
[INFO] [stderr]    Compiling alloy-json-abi v1.3.0
[INFO] [stderr]    Compiling icu_normalizer v2.0.0
[INFO] [stderr]    Compiling icu_properties v2.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling alloy-tx-macros v1.0.23
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling alloy-eip2930 v0.2.1
[INFO] [stderr]    Compiling alloy-sol-macro-input v1.3.0
[INFO] [stderr]    Compiling alloy-eip2124 v0.2.0
[INFO] [stderr]    Compiling alloy-sol-macro-expander v1.3.0
[INFO] [stderr]    Compiling alloy-serde v1.0.23
[INFO] [stderr]    Compiling alloy-eip7702 v0.6.1
[INFO] [stderr]    Compiling alloy-trie v0.9.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling alloy-eips v1.0.23
[INFO] [stderr]    Compiling idna v1.0.3
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling url v2.5.4
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling alloy-signer v1.0.23
[INFO] [stderr]    Compiling pin-project v1.1.10
[INFO] [stderr]    Compiling num_enum_derive v0.7.4
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling alloy-consensus v1.0.23
[INFO] [stderr]    Compiling lru v0.13.0
[INFO] [stderr]    Compiling dashmap v6.1.0
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling rustls-webpki v0.103.4
[INFO] [stderr]    Compiling axum-core v0.5.2
[INFO] [stderr]    Compiling num_enum v0.7.4
[INFO] [stderr]    Compiling serde_path_to_error v0.1.17
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling tokio-util v0.7.15
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling alloy-sol-macro v1.3.0
[INFO] [stderr]    Compiling h2 v0.4.11
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower-http v0.6.6
[INFO] [stderr]    Compiling alloy-sol-types v1.3.0
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling alloy-consensus-any v1.0.23
[INFO] [stderr]    Compiling alloy-network-primitives v1.0.23
[INFO] [stderr]    Compiling alloy-chains v0.2.6
[INFO] [stderr]    Compiling env_filter v0.1.3
[INFO] [stderr]    Compiling rayon v1.10.0
[INFO] [stderr]    Compiling tungstenite v0.27.0
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling clap_derive v4.5.41
[INFO] [stderr]    Compiling jiff v0.2.15
[INFO] [stderr]    Compiling tokio-tungstenite v0.27.0
[INFO] [stderr]    Compiling clap v4.5.42
[INFO] [stderr]    Compiling tokio-rustls v0.26.2
[INFO] [stderr]    Compiling hyper v1.6.0
[INFO] [stderr]    Compiling hyper-util v0.1.14
[INFO] [stderr]    Compiling env_logger v0.11.8
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.8.4
[INFO] [stderr]    Compiling yawc v0.2.6
[INFO] [stderr]    Compiling reqwest v0.12.22
[INFO] [stderr]    Compiling alloy-json-rpc v1.0.23
[INFO] [stderr]    Compiling alloy-rpc-types-eth v1.0.23
[INFO] [stderr]    Compiling alloy-dyn-abi v1.3.0
[INFO] [stderr]    Compiling alloy-transport v1.0.23
[INFO] [stderr]    Compiling alloy-core v1.3.0
[INFO] [stderr]    Compiling alloy-transport-http v1.0.23
[INFO] [stderr]    Compiling alloy-rpc-client v1.0.23
[INFO] [stderr]    Compiling alloy-rpc-types-any v1.0.23
[INFO] [stderr]    Compiling alloy-rpc-types v1.0.22
[INFO] [stderr]    Compiling alloy-network v1.0.23
[INFO] [stderr]    Compiling alloy-provider v1.0.22
[INFO] [stderr]    Compiling alloy-signer-local v1.0.23
[INFO] [stderr]    Compiling alloy-contract v1.0.22
[INFO] [stderr]    Compiling alloy v1.0.22
[INFO] [stderr]    Compiling server v0.1.0 (/opt/rustwide/workdir/server)
[INFO] [stdout] warning: unused import: `computer::LiquidationComputer`
[INFO] [stdout]   --> server/src/liquidation/application/mod.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub(crate) use computer::LiquidationComputer;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/event_watcher.rs:77:13
[INFO] [stdout]    |
[INFO] [stdout] 77 |         use std::str::FromStr;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/event_watcher.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |         use std::str::FromStr;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         use std::str::FromStr;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:374:15
[INFO] [stdout]     |
[INFO] [stdout] 374 |     listener: std::sync::Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-W unused-qualifications`
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 374 -     listener: std::sync::Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout] 374 +     listener: Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:375:10
[INFO] [stdout]     |
[INFO] [stdout] 375 |     dir: std::path::PathBuf,
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 375 -     dir: std::path::PathBuf,
[INFO] [stdout] 375 +     dir: PathBuf,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fill_adapter::FillAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) use fill_adapter::FillAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `misc_event_adapter::MiscEventAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(crate) use misc_event_adapter::MiscEventAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `replica_cmd_adapter::ReplicaCmdAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:22:16
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) use replica_cmd_adapter::ReplicaCmdAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MarkPriceUpdated`
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:11:55
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::liquidation::domain::events::{DomainEvent, MarkPriceUpdated};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:99:75
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<crate::order_book::types::Coin> {
[INFO] [stdout]    |                                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]    |
[INFO] [stdout] 99 -     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<crate::order_book::types::Coin> {
[INFO] [stdout] 99 +     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<Coin> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AssetInfoSource` and `MarkPriceSource`
[INFO] [stdout]   --> server/src/liquidation/ports/mod.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) use traits::{AssetInfoSource, MarkPriceSource, UserStateSource};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ServiceState`
[INFO] [stdout]   --> server/src/liquidation/mod.rs:35:51
[INFO] [stdout]    |
[INFO] [stdout] 35 |     LiquidationService, LiquidationServiceConfig, ServiceState,
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/listeners/funding.rs:137:22
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let reader = std::io::BufReader::new(file);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 137 -         let reader = std::io::BufReader::new(file);
[INFO] [stdout] 137 +         let reader = io::BufReader::new(file);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:619:41
[INFO] [stdout]     |
[INFO] [stdout] 619 |         liquidation_service: Option<Arc<crate::liquidation::LiquidationService<I, L, R>>>,
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -         liquidation_service: Option<Arc<crate::liquidation::LiquidationService<I, L, R>>>,
[INFO] [stdout] 619 +         liquidation_service: Option<Arc<LiquidationService<I, L, R>>>,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `positions`
[INFO] [stdout]    --> server/src/liquidation/service.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |             let positions = self.positions.read().await;
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_positions`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `liquidation_service`
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:355:5
[INFO] [stdout]     |
[INFO] [stdout] 355 |     liquidation_service: Arc<ProductionLiquidationService>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_liquidation_service`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `calculator` and `level_computer` are never read
[INFO] [stdout]   --> server/src/liquidation/application/computer.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub(crate) struct LiquidationComputer<C: LiquidationPriceCalculator = LiquidationPriceCalculatorImpl> {
[INFO] [stdout]    |                   ------------------- fields in this struct
[INFO] [stdout] 21 |     calculator: C,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 22 |     level_computer: LevelComputerImpl,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_calculator`, `compute_price`, and `compute_levels` are never used
[INFO] [stdout]   --> server/src/liquidation/application/computer.rs:43:19
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl<C: LiquidationPriceCalculator> LiquidationComputer<C> {
[INFO] [stdout]    | ---------------------------------------------------------- associated items in this implementation
[INFO] [stdout] 42 |     /// Create a new computer with a custom calculator.
[INFO] [stdout] 43 |     pub(crate) fn with_calculator(calculator: C) -> Self {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub(crate) fn compute_price(
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub(crate) fn compute_levels(
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `computer` is never read
[INFO] [stdout]   --> server/src/liquidation/application/service.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub(crate) struct RealtimeLiquidationService {
[INFO] [stdout]    |                   -------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     computer: LiquidationComputer<LiquidationPriceCalculatorImpl>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `start_bootstrap`, `cache_size`, `import_user_state`, `update_mark_price`, `compute_all_levels`, and `coins` are never used
[INFO] [stdout]    --> server/src/liquidation/application/service.rs:81:19
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl RealtimeLiquidationService {
[INFO] [stdout]     | ------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub(crate) fn start_bootstrap(&self) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub(crate) async fn cache_size(&self) -> usize {
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub(crate) async fn import_user_state(&self, user_state: UserState) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub(crate) async fn update_mark_price(&self, coin: Coin, price: Px) -> Vec<Address> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub(crate) async fn compute_all_levels(&self) -> Vec<LiquidationLevels> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub(crate) async fn coins(&self) -> Vec<Coin> {
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedService` is never used
[INFO] [stdout]    --> server/src/liquidation/application/service.rs:329:17
[INFO] [stdout]     |
[INFO] [stdout] 329 | pub(crate) type SharedService = Arc<RealtimeLiquidationService>;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) struct MarkPriceUpdated {
[INFO] [stdout]    |                   ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MarkPriceUpdated` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(crate) struct PositionChanged {
[INFO] [stdout]    |                   --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PositionChanged` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub(crate) struct BalanceChanged {
[INFO] [stdout]    |                   -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BalanceChanged` 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: variants `CrossToIsolated`, `IsolatedToCross`, `ClosedPnl`, and `Fee` are never constructed
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum BalanceChangeReason {
[INFO] [stdout]    |                 ------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     CrossToIsolated { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     IsolatedToCross { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 49 |     FundingPayment,
[INFO] [stdout] 50 |     ClosedPnl { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 51 |     Fee { coin: Coin },
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BalanceChangeReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) struct LeverageChanged {
[INFO] [stdout]    |                   --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LeverageChanged` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub(crate) struct IsolatedMarginChanged {
[INFO] [stdout]    |                   --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IsolatedMarginChanged` 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: variant `IsolatedMarginChanged` is never constructed
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub(crate) enum DomainEvent {
[INFO] [stdout]    |                 ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 80 |     IsolatedMarginChanged(IsolatedMarginChanged),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DomainEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/state.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) struct UserState {
[INFO] [stdout]    |                   --------- field in this struct
[INFO] [stdout] 20 |     /// User address.
[INFO] [stdout] 21 |     pub user: Address,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserState` 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: function `calculate_liquidation_price` is never used
[INFO] [stdout]   --> server/src/liquidation/domain/types.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub(crate) fn calculate_liquidation_price(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_positive`, `is_negative`, `is_zero`, `to_px`, and `to_str` are never used
[INFO] [stdout]    --> server/src/liquidation/domain/types.rs:136:25
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl SignedPx {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub(crate) const fn is_positive(self) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub(crate) const fn is_negative(self) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub(crate) const fn is_zero(self) -> bool {
[INFO] [stdout]     |                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub(crate) fn to_px(self) -> Option<Px> {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub(crate) fn to_str(self) -> String {
[INFO] [stdout]     |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `populate_from_snapshots`, `populate_hardcoded`, `len`, and `is_empty` are never used
[INFO] [stdout]    --> server/src/liquidation/infrastructure/asset_mapper.rs:44:19
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl AssetIndexMapper {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub(crate) fn populate_from_snapshots(&self, snapshots: &L2Snapshots) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     fn populate_hardcoded(&self, map: &mut HashMap<u32, Coin>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub(crate) fn len(&self) -> usize {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub(crate) fn is_empty(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/fill_adapter.rs:99:9
[INFO] [stdout]     |
[INFO] [stdout]  87 | pub(crate) struct RawFill {
[INFO] [stdout]     |                   ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub hash: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 100 |     #[serde(default)]
[INFO] [stdout] 101 |     pub oid: u64,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 102 |     #[serde(default)]
[INFO] [stdout] 103 |     pub crossed: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 104 |     #[serde(rename = "feeToken", default)]
[INFO] [stdout] 105 |     pub fee_token: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 106 |     #[serde(rename = "twapId", default)]
[INFO] [stdout] 107 |     pub twap_id: Option<u64>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 108 |     #[serde(default)]
[INFO] [stdout] 109 |     pub cloid: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 110 |     #[serde(default)]
[INFO] [stdout] 111 |     pub tid: u64,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 112 |     #[serde(default)]
[INFO] [stdout] 113 |     pub builder: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 114 |     #[serde(rename = "builderFee", default)]
[INFO] [stdout] 115 |     pub builder_fee: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawFill` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `local_time` and `block_number` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/fill_adapter.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub(crate) struct RawFillBatch {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] 121 |     pub local_time: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 122 |     pub block_time: String,
[INFO] [stdout] 123 |     pub block_number: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawFillBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `compute_mid_price`, `to_event`, and `extract_mark_prices` are never used
[INFO] [stdout]    --> server/src/liquidation/infrastructure/mark_price_adapter.rs:26:19
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MarkPriceAdapter {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub(crate) fn compute_mid_price(bids: &[Level], asks: &[Level]) -> Option<Px> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub(crate) fn to_event(
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub(crate) fn extract_mark_prices(snapshots: &L2Snapshots) -> HashMap<Coin, Px> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nonce` is never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub(crate) struct WithdrawDelta {
[INFO] [stdout]     |                   ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WithdrawDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token`, `amount`, `native_token_fee`, `nonce`, and `fee_token` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub(crate) struct SpotTransferDelta {
[INFO] [stdout]     |                   ----------------- fields in this struct
[INFO] [stdout] 111 |     pub token: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 112 |     pub amount: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub native_token_fee: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 120 |     #[serde(default)]
[INFO] [stdout] 121 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 122 |     #[serde(rename = "feeToken", default)]
[INFO] [stdout] 123 |     pub fee_token: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpotTransferDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coin`, `szi`, and `funding_rate` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub(crate) struct FundingDelta {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] 129 |     pub user: String,
[INFO] [stdout] 130 |     pub coin: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 131 |     pub funding_amount: String,
[INFO] [stdout] 132 |     pub szi: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 133 |     pub funding_rate: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FundingDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `time` and `hash` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub(crate) struct RawMiscEvent {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] 176 |     pub time: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 177 |     #[serde(default)]
[INFO] [stdout] 178 |     pub hash: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawMiscEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `local_time` and `block_number` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) struct RawMiscEventBatch {
[INFO] [stdout]     |                   ----------------- fields in this struct
[INFO] [stdout] 185 |     pub local_time: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 186 |     pub block_time: String,
[INFO] [stdout] 187 |     pub block_number: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawMiscEventBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_block_time` is never used
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:192:15
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub(crate) fn parse_block_time(block_time: &str) -> Result<u64> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplicaCmd` is never constructed
[INFO] [stdout]   --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:47:19
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub(crate) struct ReplicaCmd {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nonce` is never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub(crate) struct SignedAction {
[INFO] [stdout]     |                   ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SignedAction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data_dir` is never read
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct RealtimeLiquidationConfig {
[INFO] [stdout]    |                   ------------------------- field in this struct
[INFO] [stdout] 18 |     /// Base path for node data directories.
[INFO] [stdout] 19 |     pub data_dir: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RealtimeLiquidationConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `service` is never used
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:83:19
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl RealtimeOrchestrator {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub(crate) fn service(&self) -> &Arc<RealtimeLiquidationService> {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MarkPriceSource` is never used
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:22:18
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) trait MarkPriceSource: Send + Sync {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AssetInfo` is never constructed
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) struct AssetInfo {
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarginTier` is never constructed
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:56:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) struct MarginTier {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_tiers` are never used
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:65:19
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl AssetInfo {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] 64 |     /// Create a new asset info with single-tier leverage.
[INFO] [stdout] 65 |     pub(crate) fn new(coin: Coin, max_leverage: u32) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub(crate) fn with_tiers(coin: Coin, max_leverage: u32, tiers: Vec<MarginTier>) -> Self {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AssetInfoSource` is never used
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:86:18
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub(crate) trait AssetInfoSource: Send + Sync {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `users_for_coin`, and `is_empty` are never used
[INFO] [stdout]   --> server/src/liquidation/traits.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) trait PositionStore: Send + Sync {
[INFO] [stdout]    |                  ------------- methods in this trait
[INFO] [stdout] 20 |     /// Get a position by user and coin.
[INFO] [stdout] 21 |     fn get(&self, user: &Address, coin: &Coin) -> Option<&Position>;
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn users_for_coin(&self, coin: &Coin) -> Vec<&Address>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fn is_empty(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `on_fill` and `on_funding` are never used
[INFO] [stdout]   --> server/src/liquidation/traits.rs:96:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub(crate) trait RefreshStrategy: Send + Sync {
[INFO] [stdout]    |                  --------------- methods in this trait
[INFO] [stdout] 95 |     /// Called when a fill is received. Returns users to refresh (if any).
[INFO] [stdout] 96 |     fn on_fill(&self, user: &Address, coin: &Coin) -> RefreshDecision;
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     fn on_funding(&self) -> RefreshDecision;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RefreshDecision` is never used
[INFO] [stdout]    --> server/src/liquidation/traits.rs:104:17
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub(crate) enum RefreshDecision {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_str` is never used
[INFO] [stdout]   --> server/src/liquidation/types.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl SignedSz {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub(crate) fn to_str(self) -> String {
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `funding_rate` and `funding_amount` are never read
[INFO] [stdout]    --> server/src/liquidation/types.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub(crate) struct FundingDelta {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub funding_rate: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 192 |     /// Funding amount paid/received.
[INFO] [stdout] 193 |     pub funding_amount: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FundingDelta` 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 `DepositDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:203:19
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub(crate) struct DepositDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WithdrawDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:211:19
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub(crate) struct WithdrawDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpotTransferDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:223:19
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub(crate) struct SpotTransferDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MiscEventType` is never used
[INFO] [stdout]    --> server/src/liquidation/types.rs:237:17
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub(crate) enum MiscEventType {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiscEvent` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:257:19
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub(crate) struct MiscEvent {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiscEventBatch` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:267:19
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub(crate) struct MiscEventBatch {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> server/src/liquidation/types.rs:318:19
[INFO] [stdout]     |
[INFO] [stdout] 316 | impl LiquidationLevels {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 317 |     /// Create empty liquidation levels for a coin.
[INFO] [stdout] 318 |     pub(crate) fn empty(coin: String, time: u64) -> Self {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `state` and `is_ready` are never used
[INFO] [stdout]    --> server/src/liquidation/service.rs:113:25
[INFO] [stdout]     |
[INFO] [stdout]  88 | / impl<I, L, R> LiquidationService<I, L, R>
[INFO] [stdout]  89 | | where
[INFO] [stdout]  90 | |     I: InfoClient,
[INFO] [stdout]  91 | |     L: LevelComputer,
[INFO] [stdout]  92 | |     R: RefreshStrategy,
[INFO] [stdout]     | |_______________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 113 |       pub(crate) async fn state(&self) -> ServiceState {
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |       pub(crate) async fn is_ready(&self) -> bool {
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `handle_immediate_snapshot_with_liquidation` is never used
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:617:14
[INFO] [stdout]     |
[INFO] [stdout] 588 | impl Subscription {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 617 |     async fn handle_immediate_snapshot_with_liquidation<I, L, R>(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `px` is never used
[INFO] [stdout]   --> server/src/types/mod.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Level {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn px(&self) -> &str {
[INFO] [stdout]    |                   ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> server/src/types/node_data.rs:170:11
[INFO] [stdout]     |
[INFO] [stdout] 170 |     Other(serde_json::Value),
[INFO] [stdout]     |     ----- ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MiscEventInner` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 170 -     Other(serde_json::Value),
[INFO] [stdout] 170 +     Other(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_LIQUIDATION_SIG_FIGS` is never used
[INFO] [stdout]  --> server/src/types/subscription.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const DEFAULT_LIQUIDATION_SIG_FIGS: u32 = 3;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `liquidation_sig_figs` and `liquidation_n_levels` are never used
[INFO] [stdout]    --> server/src/types/subscription.rs:116:19
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Subscription {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub(crate) fn liquidation_sig_figs(&self) -> Option<u32> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub(crate) fn liquidation_n_levels(&self) -> Option<usize> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling binaries v0.1.0 (/opt/rustwide/workdir/binaries)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.28s
[INFO] running `Command { std: "docker" "inspect" "b027d9afc0aedaabd478ced388be0af9c2675172201a957c9041b57483c1e5b7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b027d9afc0aedaabd478ced388be0af9c2675172201a957c9041b57483c1e5b7", kill_on_drop: false }`
[INFO] [stdout] b027d9afc0aedaabd478ced388be0af9c2675172201a957c9041b57483c1e5b7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a13167970565cbfb213b3b3819006fb019fee3ea6a1423d1ca62b51df8af8eea
[INFO] running `Command { std: "docker" "start" "-a" "a13167970565cbfb213b3b3819006fb019fee3ea6a1423d1ca62b51df8af8eea", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling tower-http v0.6.6
[INFO] [stderr]    Compiling inotify v0.11.0
[INFO] [stderr]    Compiling notify v8.0.0
[INFO] [stderr]    Compiling tempfile v3.20.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.22
[INFO] [stderr]    Compiling alloy-transport-http v1.0.23
[INFO] [stderr]    Compiling alloy-rpc-client v1.0.23
[INFO] [stderr]    Compiling alloy-provider v1.0.22
[INFO] [stderr]    Compiling alloy-contract v1.0.22
[INFO] [stderr]    Compiling alloy v1.0.22
[INFO] [stderr]    Compiling server v0.1.0 (/opt/rustwide/workdir/server)
[INFO] [stdout] warning: unused import: `computer::LiquidationComputer`
[INFO] [stdout]   --> server/src/liquidation/application/mod.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub(crate) use computer::LiquidationComputer;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/event_watcher.rs:77:13
[INFO] [stdout]    |
[INFO] [stdout] 77 |         use std::str::FromStr;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/event_watcher.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |         use std::str::FromStr;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         use std::str::FromStr;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:374:15
[INFO] [stdout]     |
[INFO] [stdout] 374 |     listener: std::sync::Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-W unused-qualifications`
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 374 -     listener: std::sync::Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout] 374 +     listener: Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:375:10
[INFO] [stdout]     |
[INFO] [stdout] 375 |     dir: std::path::PathBuf,
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 375 -     dir: std::path::PathBuf,
[INFO] [stdout] 375 +     dir: PathBuf,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fill_adapter::FillAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) use fill_adapter::FillAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `misc_event_adapter::MiscEventAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(crate) use misc_event_adapter::MiscEventAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `replica_cmd_adapter::ReplicaCmdAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:22:16
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) use replica_cmd_adapter::ReplicaCmdAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MarkPriceUpdated`
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:11:55
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::liquidation::domain::events::{DomainEvent, MarkPriceUpdated};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:99:75
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<crate::order_book::types::Coin> {
[INFO] [stdout]    |                                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]    |
[INFO] [stdout] 99 -     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<crate::order_book::types::Coin> {
[INFO] [stdout] 99 +     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<Coin> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AssetInfoSource` and `MarkPriceSource`
[INFO] [stdout]   --> server/src/liquidation/ports/mod.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) use traits::{AssetInfoSource, MarkPriceSource, UserStateSource};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ServiceState`
[INFO] [stdout]   --> server/src/liquidation/mod.rs:35:51
[INFO] [stdout]    |
[INFO] [stdout] 35 |     LiquidationService, LiquidationServiceConfig, ServiceState,
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/listeners/funding.rs:137:22
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let reader = std::io::BufReader::new(file);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 137 -         let reader = std::io::BufReader::new(file);
[INFO] [stdout] 137 +         let reader = io::BufReader::new(file);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:619:41
[INFO] [stdout]     |
[INFO] [stdout] 619 |         liquidation_service: Option<Arc<crate::liquidation::LiquidationService<I, L, R>>>,
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -         liquidation_service: Option<Arc<crate::liquidation::LiquidationService<I, L, R>>>,
[INFO] [stdout] 619 +         liquidation_service: Option<Arc<LiquidationService<I, L, R>>>,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `computer::LiquidationComputer`
[INFO] [stdout]   --> server/src/liquidation/application/mod.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub(crate) use computer::LiquidationComputer;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/event_watcher.rs:77:13
[INFO] [stdout]    |
[INFO] [stdout] 77 |         use std::str::FromStr;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/event_watcher.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |         use std::str::FromStr;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         use std::str::FromStr;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:374:15
[INFO] [stdout]     |
[INFO] [stdout] 374 |     listener: std::sync::Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-W unused-qualifications`
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 374 -     listener: std::sync::Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout] 374 +     listener: Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:375:10
[INFO] [stdout]     |
[INFO] [stdout] 375 |     dir: std::path::PathBuf,
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 375 -     dir: std::path::PathBuf,
[INFO] [stdout] 375 +     dir: PathBuf,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:266:24
[INFO] [stdout]     |
[INFO] [stdout] 266 |             let data = std::fs::read_to_string(prod_path).unwrap();
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 266 -             let data = std::fs::read_to_string(prod_path).unwrap();
[INFO] [stdout] 266 +             let data = fs::read_to_string(prod_path).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fill_adapter::FillAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) use fill_adapter::FillAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `misc_event_adapter::MiscEventAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(crate) use misc_event_adapter::MiscEventAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `replica_cmd_adapter::ReplicaCmdAdapter`
[INFO] [stdout]   --> server/src/liquidation/infrastructure/mod.rs:22:16
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) use replica_cmd_adapter::ReplicaCmdAdapter;
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MarkPriceUpdated`
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:11:55
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::liquidation::domain::events::{DomainEvent, MarkPriceUpdated};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:99:75
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<crate::order_book::types::Coin> {
[INFO] [stdout]    |                                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]    |
[INFO] [stdout] 99 -     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<crate::order_book::types::Coin> {
[INFO] [stdout] 99 +     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<Coin> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::liquidation::infrastructure::MarkPriceAdapter`
[INFO] [stdout]    --> server/src/liquidation/orchestrator.rs:481:13
[INFO] [stdout]     |
[INFO] [stdout] 481 |         use crate::liquidation::infrastructure::MarkPriceAdapter;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::liquidation::infrastructure::MarkPriceAdapter`
[INFO] [stdout]    --> server/src/liquidation/orchestrator.rs:498:13
[INFO] [stdout]     |
[INFO] [stdout] 498 |         use crate::liquidation::infrastructure::MarkPriceAdapter;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AssetInfoSource` and `MarkPriceSource`
[INFO] [stdout]   --> server/src/liquidation/ports/mod.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) use traits::{AssetInfoSource, MarkPriceSource, UserStateSource};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignedSz`
[INFO] [stdout]    --> server/src/liquidation/service.rs:343:79
[INFO] [stdout]     |
[INFO] [stdout] 343 |     use crate::liquidation::types::{FundingDelta, LiquidationLevel, Position, SignedSz};
[INFO] [stdout]     |                                                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ServiceState`
[INFO] [stdout]   --> server/src/liquidation/mod.rs:35:51
[INFO] [stdout]    |
[INFO] [stdout] 35 |     LiquidationService, LiquidationServiceConfig, ServiceState,
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/listeners/funding.rs:137:22
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let reader = std::io::BufReader::new(file);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 137 -         let reader = std::io::BufReader::new(file);
[INFO] [stdout] 137 +         let reader = io::BufReader::new(file);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/listeners/funding.rs:367:28
[INFO] [stdout]     |
[INFO] [stdout] 367 |         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 367 -         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stdout] 367 +         tokio::time::sleep(Duration::from_millis(50)).await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/listeners/funding.rs:393:28
[INFO] [stdout]     |
[INFO] [stdout] 393 |         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 393 -         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stdout] 393 +         tokio::time::sleep(Duration::from_millis(50)).await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/listeners/funding.rs:447:28
[INFO] [stdout]     |
[INFO] [stdout] 447 |         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 447 -         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stdout] 447 +         tokio::time::sleep(Duration::from_millis(50)).await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:619:41
[INFO] [stdout]     |
[INFO] [stdout] 619 |         liquidation_service: Option<Arc<crate::liquidation::LiquidationService<I, L, R>>>,
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -         liquidation_service: Option<Arc<crate::liquidation::LiquidationService<I, L, R>>>,
[INFO] [stdout] 619 +         liquidation_service: Option<Arc<LiquidationService<I, L, R>>>,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:835:32
[INFO] [stdout]     |
[INFO] [stdout] 835 |                 _positions: &[&crate::liquidation::types::Position],
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 835 -                 _positions: &[&crate::liquidation::types::Position],
[INFO] [stdout] 835 +                 _positions: &[&Position],
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::subscription::DEFAULT_LEVELS`
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:911:13
[INFO] [stdout]     |
[INFO] [stdout] 911 |         use crate::types::subscription::DEFAULT_LEVELS;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:919:23
[INFO] [stdout]     |
[INFO] [stdout] 919 |         let deposit = crate::liquidation::DomainEvent::BalanceChanged(BalanceChanged {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 919 -         let deposit = crate::liquidation::DomainEvent::BalanceChanged(BalanceChanged {
[INFO] [stdout] 919 +         let deposit = DomainEvent::BalanceChanged(BalanceChanged {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:927:24
[INFO] [stdout]     |
[INFO] [stdout] 927 |         let position = crate::liquidation::DomainEvent::PositionChanged(PositionChanged {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 927 -         let position = crate::liquidation::DomainEvent::PositionChanged(PositionChanged {
[INFO] [stdout] 927 +         let position = DomainEvent::PositionChanged(PositionChanged {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:940:26
[INFO] [stdout]     |
[INFO] [stdout] 940 |         let mark_price = crate::liquidation::DomainEvent::MarkPriceUpdated(MarkPriceUpdated {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 940 -         let mark_price = crate::liquidation::DomainEvent::MarkPriceUpdated(MarkPriceUpdated {
[INFO] [stdout] 940 +         let mark_price = DomainEvent::MarkPriceUpdated(MarkPriceUpdated {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `positions`
[INFO] [stdout]    --> server/src/liquidation/service.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |             let positions = self.positions.read().await;
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_positions`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `liquidation_service`
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:355:5
[INFO] [stdout]     |
[INFO] [stdout] 355 |     liquidation_service: Arc<ProductionLiquidationService>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_liquidation_service`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:474:18
[INFO] [stdout]     |
[INFO] [stdout] 474 |         let (tx, mut rx) = mpsc::channel(100);
[INFO] [stdout]     |                  ----^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> server/src/liquidation/infrastructure/event_watcher.rs:474:18
[INFO] [stdout]     |
[INFO] [stdout] 474 |         let (tx, mut rx) = mpsc::channel(100);
[INFO] [stdout]     |                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `calculator` and `level_computer` are never read
[INFO] [stdout]   --> server/src/liquidation/application/computer.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub(crate) struct LiquidationComputer<C: LiquidationPriceCalculator = LiquidationPriceCalculatorImpl> {
[INFO] [stdout]    |                   ------------------- fields in this struct
[INFO] [stdout] 21 |     calculator: C,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 22 |     level_computer: LevelComputerImpl,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_calculator`, `compute_price`, and `compute_levels` are never used
[INFO] [stdout]   --> server/src/liquidation/application/computer.rs:43:19
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl<C: LiquidationPriceCalculator> LiquidationComputer<C> {
[INFO] [stdout]    | ---------------------------------------------------------- associated items in this implementation
[INFO] [stdout] 42 |     /// Create a new computer with a custom calculator.
[INFO] [stdout] 43 |     pub(crate) fn with_calculator(calculator: C) -> Self {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub(crate) fn compute_price(
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub(crate) fn compute_levels(
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `computer` is never read
[INFO] [stdout]   --> server/src/liquidation/application/service.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub(crate) struct RealtimeLiquidationService {
[INFO] [stdout]    |                   -------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     computer: LiquidationComputer<LiquidationPriceCalculatorImpl>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `start_bootstrap`, `cache_size`, `import_user_state`, `update_mark_price`, `compute_all_levels`, and `coins` are never used
[INFO] [stdout]    --> server/src/liquidation/application/service.rs:81:19
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl RealtimeLiquidationService {
[INFO] [stdout]     | ------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub(crate) fn start_bootstrap(&self) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub(crate) async fn cache_size(&self) -> usize {
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub(crate) async fn import_user_state(&self, user_state: UserState) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub(crate) async fn update_mark_price(&self, coin: Coin, price: Px) -> Vec<Address> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub(crate) async fn compute_all_levels(&self) -> Vec<LiquidationLevels> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub(crate) async fn coins(&self) -> Vec<Coin> {
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedService` is never used
[INFO] [stdout]    --> server/src/liquidation/application/service.rs:329:17
[INFO] [stdout]     |
[INFO] [stdout] 329 | pub(crate) type SharedService = Arc<RealtimeLiquidationService>;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) struct MarkPriceUpdated {
[INFO] [stdout]    |                   ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MarkPriceUpdated` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(crate) struct PositionChanged {
[INFO] [stdout]    |                   --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PositionChanged` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub(crate) struct BalanceChanged {
[INFO] [stdout]    |                   -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BalanceChanged` 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: variants `CrossToIsolated`, `IsolatedToCross`, `ClosedPnl`, and `Fee` are never constructed
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum BalanceChangeReason {
[INFO] [stdout]    |                 ------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     CrossToIsolated { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     IsolatedToCross { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 49 |     FundingPayment,
[INFO] [stdout] 50 |     ClosedPnl { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 51 |     Fee { coin: Coin },
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BalanceChangeReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) struct LeverageChanged {
[INFO] [stdout]    |                   --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LeverageChanged` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub(crate) struct IsolatedMarginChanged {
[INFO] [stdout]    |                   --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IsolatedMarginChanged` 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: variant `IsolatedMarginChanged` is never constructed
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub(crate) enum DomainEvent {
[INFO] [stdout]    |                 ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 80 |     IsolatedMarginChanged(IsolatedMarginChanged),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DomainEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/state.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) struct UserState {
[INFO] [stdout]    |                   --------- field in this struct
[INFO] [stdout] 20 |     /// User address.
[INFO] [stdout] 21 |     pub user: Address,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserState` 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: function `calculate_liquidation_price` is never used
[INFO] [stdout]   --> server/src/liquidation/domain/types.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub(crate) fn calculate_liquidation_price(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_positive`, `is_negative`, `is_zero`, `to_px`, and `to_str` are never used
[INFO] [stdout]    --> server/src/liquidation/domain/types.rs:136:25
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl SignedPx {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub(crate) const fn is_positive(self) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub(crate) const fn is_negative(self) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub(crate) const fn is_zero(self) -> bool {
[INFO] [stdout]     |                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub(crate) fn to_px(self) -> Option<Px> {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub(crate) fn to_str(self) -> String {
[INFO] [stdout]     |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `populate_from_snapshots`, `populate_hardcoded`, `len`, and `is_empty` are never used
[INFO] [stdout]    --> server/src/liquidation/infrastructure/asset_mapper.rs:44:19
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl AssetIndexMapper {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub(crate) fn populate_from_snapshots(&self, snapshots: &L2Snapshots) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     fn populate_hardcoded(&self, map: &mut HashMap<u32, Coin>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub(crate) fn len(&self) -> usize {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub(crate) fn is_empty(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/fill_adapter.rs:99:9
[INFO] [stdout]     |
[INFO] [stdout]  87 | pub(crate) struct RawFill {
[INFO] [stdout]     |                   ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub hash: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 100 |     #[serde(default)]
[INFO] [stdout] 101 |     pub oid: u64,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 102 |     #[serde(default)]
[INFO] [stdout] 103 |     pub crossed: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 104 |     #[serde(rename = "feeToken", default)]
[INFO] [stdout] 105 |     pub fee_token: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 106 |     #[serde(rename = "twapId", default)]
[INFO] [stdout] 107 |     pub twap_id: Option<u64>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 108 |     #[serde(default)]
[INFO] [stdout] 109 |     pub cloid: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 110 |     #[serde(default)]
[INFO] [stdout] 111 |     pub tid: u64,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 112 |     #[serde(default)]
[INFO] [stdout] 113 |     pub builder: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 114 |     #[serde(rename = "builderFee", default)]
[INFO] [stdout] 115 |     pub builder_fee: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawFill` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `local_time` and `block_number` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/fill_adapter.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub(crate) struct RawFillBatch {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] 121 |     pub local_time: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 122 |     pub block_time: String,
[INFO] [stdout] 123 |     pub block_number: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawFillBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `compute_mid_price`, `to_event`, and `extract_mark_prices` are never used
[INFO] [stdout]    --> server/src/liquidation/infrastructure/mark_price_adapter.rs:26:19
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MarkPriceAdapter {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub(crate) fn compute_mid_price(bids: &[Level], asks: &[Level]) -> Option<Px> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub(crate) fn to_event(
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub(crate) fn extract_mark_prices(snapshots: &L2Snapshots) -> HashMap<Coin, Px> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nonce` is never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub(crate) struct WithdrawDelta {
[INFO] [stdout]     |                   ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WithdrawDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token`, `amount`, `native_token_fee`, `nonce`, and `fee_token` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub(crate) struct SpotTransferDelta {
[INFO] [stdout]     |                   ----------------- fields in this struct
[INFO] [stdout] 111 |     pub token: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 112 |     pub amount: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub native_token_fee: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 120 |     #[serde(default)]
[INFO] [stdout] 121 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 122 |     #[serde(rename = "feeToken", default)]
[INFO] [stdout] 123 |     pub fee_token: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpotTransferDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coin`, `szi`, and `funding_rate` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub(crate) struct FundingDelta {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] 129 |     pub user: String,
[INFO] [stdout] 130 |     pub coin: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 131 |     pub funding_amount: String,
[INFO] [stdout] 132 |     pub szi: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 133 |     pub funding_rate: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FundingDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `time` and `hash` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub(crate) struct RawMiscEvent {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] 176 |     pub time: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 177 |     #[serde(default)]
[INFO] [stdout] 178 |     pub hash: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawMiscEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `local_time` and `block_number` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) struct RawMiscEventBatch {
[INFO] [stdout]     |                   ----------------- fields in this struct
[INFO] [stdout] 185 |     pub local_time: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 186 |     pub block_time: String,
[INFO] [stdout] 187 |     pub block_number: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawMiscEventBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_block_time` is never used
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:192:15
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub(crate) fn parse_block_time(block_time: &str) -> Result<u64> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplicaCmd` is never constructed
[INFO] [stdout]   --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:47:19
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub(crate) struct ReplicaCmd {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nonce` is never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub(crate) struct SignedAction {
[INFO] [stdout]     |                   ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SignedAction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data_dir` is never read
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct RealtimeLiquidationConfig {
[INFO] [stdout]    |                   ------------------------- field in this struct
[INFO] [stdout] 18 |     /// Base path for node data directories.
[INFO] [stdout] 19 |     pub data_dir: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RealtimeLiquidationConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `service` is never used
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:83:19
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl RealtimeOrchestrator {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub(crate) fn service(&self) -> &Arc<RealtimeLiquidationService> {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MarkPriceSource` is never used
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:22:18
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) trait MarkPriceSource: Send + Sync {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AssetInfo` is never constructed
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) struct AssetInfo {
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarginTier` is never constructed
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:56:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) struct MarginTier {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_tiers` are never used
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:65:19
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl AssetInfo {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] 64 |     /// Create a new asset info with single-tier leverage.
[INFO] [stdout] 65 |     pub(crate) fn new(coin: Coin, max_leverage: u32) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub(crate) fn with_tiers(coin: Coin, max_leverage: u32, tiers: Vec<MarginTier>) -> Self {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AssetInfoSource` is never used
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:86:18
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub(crate) trait AssetInfoSource: Send + Sync {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `users_for_coin`, and `is_empty` are never used
[INFO] [stdout]   --> server/src/liquidation/traits.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) trait PositionStore: Send + Sync {
[INFO] [stdout]    |                  ------------- methods in this trait
[INFO] [stdout] 20 |     /// Get a position by user and coin.
[INFO] [stdout] 21 |     fn get(&self, user: &Address, coin: &Coin) -> Option<&Position>;
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn users_for_coin(&self, coin: &Coin) -> Vec<&Address>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fn is_empty(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `on_fill` and `on_funding` are never used
[INFO] [stdout]   --> server/src/liquidation/traits.rs:96:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub(crate) trait RefreshStrategy: Send + Sync {
[INFO] [stdout]    |                  --------------- methods in this trait
[INFO] [stdout] 95 |     /// Called when a fill is received. Returns users to refresh (if any).
[INFO] [stdout] 96 |     fn on_fill(&self, user: &Address, coin: &Coin) -> RefreshDecision;
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     fn on_funding(&self) -> RefreshDecision;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RefreshDecision` is never used
[INFO] [stdout]    --> server/src/liquidation/traits.rs:104:17
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub(crate) enum RefreshDecision {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_str` is never used
[INFO] [stdout]   --> server/src/liquidation/types.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl SignedSz {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub(crate) fn to_str(self) -> String {
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `funding_rate` and `funding_amount` are never read
[INFO] [stdout]    --> server/src/liquidation/types.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub(crate) struct FundingDelta {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub funding_rate: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 192 |     /// Funding amount paid/received.
[INFO] [stdout] 193 |     pub funding_amount: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FundingDelta` 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 `DepositDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:203:19
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub(crate) struct DepositDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WithdrawDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:211:19
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub(crate) struct WithdrawDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpotTransferDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:223:19
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub(crate) struct SpotTransferDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MiscEventType` is never used
[INFO] [stdout]    --> server/src/liquidation/types.rs:237:17
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub(crate) enum MiscEventType {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiscEvent` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:257:19
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub(crate) struct MiscEvent {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiscEventBatch` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:267:19
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub(crate) struct MiscEventBatch {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> server/src/liquidation/types.rs:318:19
[INFO] [stdout]     |
[INFO] [stdout] 316 | impl LiquidationLevels {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 317 |     /// Create empty liquidation levels for a coin.
[INFO] [stdout] 318 |     pub(crate) fn empty(coin: String, time: u64) -> Self {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `state` and `is_ready` are never used
[INFO] [stdout]    --> server/src/liquidation/service.rs:113:25
[INFO] [stdout]     |
[INFO] [stdout]  88 | / impl<I, L, R> LiquidationService<I, L, R>
[INFO] [stdout]  89 | | where
[INFO] [stdout]  90 | |     I: InfoClient,
[INFO] [stdout]  91 | |     L: LevelComputer,
[INFO] [stdout]  92 | |     R: RefreshStrategy,
[INFO] [stdout]     | |_______________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 113 |       pub(crate) async fn state(&self) -> ServiceState {
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |       pub(crate) async fn is_ready(&self) -> bool {
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `handle_immediate_snapshot_with_liquidation` is never used
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:617:14
[INFO] [stdout]     |
[INFO] [stdout] 588 | impl Subscription {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 617 |     async fn handle_immediate_snapshot_with_liquidation<I, L, R>(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `px` is never used
[INFO] [stdout]   --> server/src/types/mod.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Level {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn px(&self) -> &str {
[INFO] [stdout]    |                   ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> server/src/types/node_data.rs:170:11
[INFO] [stdout]     |
[INFO] [stdout] 170 |     Other(serde_json::Value),
[INFO] [stdout]     |     ----- ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MiscEventInner` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 170 -     Other(serde_json::Value),
[INFO] [stdout] 170 +     Other(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_LIQUIDATION_SIG_FIGS` is never used
[INFO] [stdout]  --> server/src/types/subscription.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const DEFAULT_LIQUIDATION_SIG_FIGS: u32 = 3;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `liquidation_sig_figs` and `liquidation_n_levels` are never used
[INFO] [stdout]    --> server/src/types/subscription.rs:116:19
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Subscription {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub(crate) fn liquidation_sig_figs(&self) -> Option<u32> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub(crate) fn liquidation_n_levels(&self) -> Option<usize> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `positions`
[INFO] [stdout]    --> server/src/liquidation/service.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |             let positions = self.positions.read().await;
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_positions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `liquidation_service`
[INFO] [stdout]    --> server/src/servers/websocket_server.rs:355:5
[INFO] [stdout]     |
[INFO] [stdout] 355 |     liquidation_service: Arc<ProductionLiquidationService>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_liquidation_service`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_calculator` is never used
[INFO] [stdout]   --> server/src/liquidation/application/computer.rs:43:19
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl<C: LiquidationPriceCalculator> LiquidationComputer<C> {
[INFO] [stdout]    | ---------------------------------------------------------- associated function in this implementation
[INFO] [stdout] 42 |     /// Create a new computer with a custom calculator.
[INFO] [stdout] 43 |     pub(crate) fn with_calculator(calculator: C) -> Self {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `computer` is never read
[INFO] [stdout]   --> server/src/liquidation/application/service.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub(crate) struct RealtimeLiquidationService {
[INFO] [stdout]    |                   -------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     computer: LiquidationComputer<LiquidationPriceCalculatorImpl>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `compute_all_levels` is never used
[INFO] [stdout]    --> server/src/liquidation/application/service.rs:296:25
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl RealtimeLiquidationService {
[INFO] [stdout]     | ------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub(crate) async fn compute_all_levels(&self) -> Vec<LiquidationLevels> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedService` is never used
[INFO] [stdout]    --> server/src/liquidation/application/service.rs:329:17
[INFO] [stdout]     |
[INFO] [stdout] 329 | pub(crate) type SharedService = Arc<RealtimeLiquidationService>;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CrossToIsolated`, `IsolatedToCross`, `ClosedPnl`, and `Fee` are never constructed
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum BalanceChangeReason {
[INFO] [stdout]    |                 ------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     CrossToIsolated { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     IsolatedToCross { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 49 |     FundingPayment,
[INFO] [stdout] 50 |     ClosedPnl { coin: Coin },
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 51 |     Fee { coin: Coin },
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BalanceChangeReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub(crate) struct IsolatedMarginChanged {
[INFO] [stdout]    |                   --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub time: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IsolatedMarginChanged` 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: variant `IsolatedMarginChanged` is never constructed
[INFO] [stdout]   --> server/src/liquidation/domain/events.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub(crate) enum DomainEvent {
[INFO] [stdout]    |                 ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 80 |     IsolatedMarginChanged(IsolatedMarginChanged),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DomainEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `populate_from_snapshots` and `len` are never used
[INFO] [stdout]    --> server/src/liquidation/infrastructure/asset_mapper.rs:44:19
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl AssetIndexMapper {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub(crate) fn populate_from_snapshots(&self, snapshots: &L2Snapshots) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub(crate) fn len(&self) -> usize {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/fill_adapter.rs:99:9
[INFO] [stdout]     |
[INFO] [stdout]  87 | pub(crate) struct RawFill {
[INFO] [stdout]     |                   ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub hash: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 100 |     #[serde(default)]
[INFO] [stdout] 101 |     pub oid: u64,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 102 |     #[serde(default)]
[INFO] [stdout] 103 |     pub crossed: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 104 |     #[serde(rename = "feeToken", default)]
[INFO] [stdout] 105 |     pub fee_token: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 106 |     #[serde(rename = "twapId", default)]
[INFO] [stdout] 107 |     pub twap_id: Option<u64>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 108 |     #[serde(default)]
[INFO] [stdout] 109 |     pub cloid: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 110 |     #[serde(default)]
[INFO] [stdout] 111 |     pub tid: u64,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 112 |     #[serde(default)]
[INFO] [stdout] 113 |     pub builder: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 114 |     #[serde(rename = "builderFee", default)]
[INFO] [stdout] 115 |     pub builder_fee: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawFill` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `local_time` is never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/fill_adapter.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub(crate) struct RawFillBatch {
[INFO] [stdout]     |                   ------------ field in this struct
[INFO] [stdout] 121 |     pub local_time: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawFillBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `extract_mark_prices` is never used
[INFO] [stdout]    --> server/src/liquidation/infrastructure/mark_price_adapter.rs:107:19
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MarkPriceAdapter {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub(crate) fn extract_mark_prices(snapshots: &L2Snapshots) -> HashMap<Coin, Px> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nonce` is never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub(crate) struct WithdrawDelta {
[INFO] [stdout]     |                   ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WithdrawDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token`, `amount`, `native_token_fee`, `nonce`, and `fee_token` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub(crate) struct SpotTransferDelta {
[INFO] [stdout]     |                   ----------------- fields in this struct
[INFO] [stdout] 111 |     pub token: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 112 |     pub amount: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub native_token_fee: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 120 |     #[serde(default)]
[INFO] [stdout] 121 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 122 |     #[serde(rename = "feeToken", default)]
[INFO] [stdout] 123 |     pub fee_token: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpotTransferDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coin`, `szi`, and `funding_rate` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub(crate) struct FundingDelta {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] 129 |     pub user: String,
[INFO] [stdout] 130 |     pub coin: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 131 |     pub funding_amount: String,
[INFO] [stdout] 132 |     pub szi: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 133 |     pub funding_rate: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FundingDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `time` and `hash` are never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub(crate) struct RawMiscEvent {
[INFO] [stdout]     |                   ------------ fields in this struct
[INFO] [stdout] 176 |     pub time: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 177 |     #[serde(default)]
[INFO] [stdout] 178 |     pub hash: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawMiscEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `local_time` is never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) struct RawMiscEventBatch {
[INFO] [stdout]     |                   ----------------- field in this struct
[INFO] [stdout] 185 |     pub local_time: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RawMiscEventBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nonce` is never read
[INFO] [stdout]    --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub(crate) struct SignedAction {
[INFO] [stdout]     |                   ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub nonce: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SignedAction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data_dir` is never read
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct RealtimeLiquidationConfig {
[INFO] [stdout]    |                   ------------------------- field in this struct
[INFO] [stdout] 18 |     /// Base path for node data directories.
[INFO] [stdout] 19 |     pub data_dir: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RealtimeLiquidationConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `service` is never used
[INFO] [stdout]   --> server/src/liquidation/orchestrator.rs:83:19
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl RealtimeOrchestrator {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub(crate) fn service(&self) -> &Arc<RealtimeLiquidationService> {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MarkPriceSource` is never used
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:22:18
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) trait MarkPriceSource: Send + Sync {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `lower_bound` and `max_leverage` are never read
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) struct MarginTier {
[INFO] [stdout]    |                   ---------- fields in this struct
[INFO] [stdout] 57 |     /// Notional position lower bound for this tier.
[INFO] [stdout] 58 |     pub lower_bound: Px,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 59 |     /// Maximum leverage for this tier.
[INFO] [stdout] 60 |     pub max_leverage: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MarginTier` 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: trait `AssetInfoSource` is never used
[INFO] [stdout]   --> server/src/liquidation/ports/traits.rs:86:18
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub(crate) trait AssetInfoSource: Send + Sync {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RefreshUser` and `RefreshUsers` are never constructed
[INFO] [stdout]    --> server/src/liquidation/traits.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub(crate) enum RefreshDecision {
[INFO] [stdout]     |                 --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 108 |     RefreshUser(Address),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 109 |     /// Refresh prices for multiple users.
[INFO] [stdout] 110 |     RefreshUsers(Vec<Address>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RefreshDecision` 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 `MockPositionStore` is never constructed
[INFO] [stdout]    --> server/src/liquidation/traits.rs:122:23
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub(crate) struct MockPositionStore {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> server/src/liquidation/traits.rs:127:23
[INFO] [stdout]     |
[INFO] [stdout] 126 |     impl MockPositionStore {
[INFO] [stdout]     |     ---------------------- associated function in this implementation
[INFO] [stdout] 127 |         pub(crate) fn new(positions: Vec<Position>) -> Self {
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MockInfoClient` is never constructed
[INFO] [stdout]    --> server/src/liquidation/traits.rs:161:23
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub(crate) struct MockInfoClient {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `with_response` are never used
[INFO] [stdout]    --> server/src/liquidation/traits.rs:166:23
[INFO] [stdout]     |
[INFO] [stdout] 165 |     impl MockInfoClient {
[INFO] [stdout]     |     ------------------- associated items in this implementation
[INFO] [stdout] 166 |         pub(crate) fn new() -> Self {
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |         pub(crate) fn with_response(mut self, user: Address, coin: Coin, px: Px) -> Self {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `funding_amount` is never read
[INFO] [stdout]    --> server/src/liquidation/types.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub(crate) struct FundingDelta {
[INFO] [stdout]     |                   ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub funding_amount: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FundingDelta` 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 `DepositDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:203:19
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub(crate) struct DepositDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WithdrawDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:211:19
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub(crate) struct WithdrawDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpotTransferDelta` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:223:19
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub(crate) struct SpotTransferDelta {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MiscEventType` is never used
[INFO] [stdout]    --> server/src/liquidation/types.rs:237:17
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub(crate) enum MiscEventType {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiscEvent` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:257:19
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub(crate) struct MiscEvent {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiscEventBatch` is never constructed
[INFO] [stdout]    --> server/src/liquidation/types.rs:267:19
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub(crate) struct MiscEventBatch {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> server/src/liquidation/types.rs:318:19
[INFO] [stdout]     |
[INFO] [stdout] 316 | impl LiquidationLevels {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 317 |     /// Create empty liquidation levels for a coin.
[INFO] [stdout] 318 |     pub(crate) fn empty(coin: String, time: u64) -> Self {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> server/src/types/node_data.rs:170:11
[INFO] [stdout]     |
[INFO] [stdout] 170 |     Other(serde_json::Value),
[INFO] [stdout]     |     ----- ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MiscEventInner` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 170 -     Other(serde_json::Value),
[INFO] [stdout] 170 +     Other(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_LIQUIDATION_SIG_FIGS` is never used
[INFO] [stdout]  --> server/src/types/subscription.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const DEFAULT_LIQUIDATION_SIG_FIGS: u32 = 3;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `liquidation_sig_figs` is never used
[INFO] [stdout]    --> server/src/types/subscription.rs:116:19
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Subscription {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub(crate) fn liquidation_sig_figs(&self) -> Option<u32> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a type that has a destructor
[INFO] [stdout]    --> server/src/liquidation/infrastructure/asset_mapper.rs:284:17
[INFO] [stdout]     |
[INFO] [stdout] 284 |                 let _ = mapper_clone.get(0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-W let-underscore-drop`
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 284 |                 let _unused = mapper_clone.get(0);
[INFO] [stdout]     |                      ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 284 -                 let _ = mapper_clone.get(0);
[INFO] [stdout] 284 +                 drop(mapper_clone.get(0));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a type that has a destructor
[INFO] [stdout]    --> server/src/liquidation/infrastructure/asset_mapper.rs:285:17
[INFO] [stdout]     |
[INFO] [stdout] 285 |                 let _ = mapper_clone.get(1);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 285 |                 let _unused = mapper_clone.get(1);
[INFO] [stdout]     |                      ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 285 -                 let _ = mapper_clone.get(1);
[INFO] [stdout] 285 +                 drop(mapper_clone.get(1));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a type that has a destructor
[INFO] [stdout]    --> server/src/liquidation/infrastructure/asset_mapper.rs:290:13
[INFO] [stdout]     |
[INFO] [stdout] 290 |             let _ = mapper.get(0);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 290 |             let _unused = mapper.get(0);
[INFO] [stdout]     |                  ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 290 -             let _ = mapper.get(0);
[INFO] [stdout] 290 +             drop(mapper.get(0));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a type that has a destructor
[INFO] [stdout]    --> server/src/liquidation/infrastructure/asset_mapper.rs:291:13
[INFO] [stdout]     |
[INFO] [stdout] 291 |             let _ = mapper.get(1);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 291 |             let _unused = mapper.get(1);
[INFO] [stdout]     |                  ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 291 -             let _ = mapper.get(1);
[INFO] [stdout] 291 +             drop(mapper.get(1));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a type that has a destructor
[INFO] [stdout]    --> server/src/liquidation/orchestrator.rs:286:13
[INFO] [stdout]     |
[INFO] [stdout] 286 | /             let _ = super::run_realtime_liquidation_service(
[INFO] [stdout] 287 | |                 service_orchestrator,
[INFO] [stdout] 288 | |                 event_rx,
[INFO] [stdout] 289 | |                 internal_rx_for_service,
[INFO] [stdout] 290 | |                 internal_tx,
[INFO] [stdout] 291 | |             ).await;
[INFO] [stdout]     | |____________________^
[INFO] [stdout]     |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 286 |             let _unused = super::run_realtime_liquidation_service(
[INFO] [stdout]     |                  ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 286 ~             drop(super::run_realtime_liquidation_service(
[INFO] [stdout] 287 |                 service_orchestrator,
[INFO] [stdout] ...
[INFO] [stdout] 290 |                 internal_tx,
[INFO] [stdout] 291 ~             ).await);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling binaries v0.1.0 (/opt/rustwide/workdir/binaries)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 13.15s
[INFO] running `Command { std: "docker" "inspect" "a13167970565cbfb213b3b3819006fb019fee3ea6a1423d1ca62b51df8af8eea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a13167970565cbfb213b3b3819006fb019fee3ea6a1423d1ca62b51df8af8eea", kill_on_drop: false }`
[INFO] [stdout] a13167970565cbfb213b3b3819006fb019fee3ea6a1423d1ca62b51df8af8eea
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] b32d66120837d7db1a007c4a1add96dd4eb5edeba9f7d9ae660701f9e4f1d867
[INFO] running `Command { std: "docker" "start" "-a" "b32d66120837d7db1a007c4a1add96dd4eb5edeba9f7d9ae660701f9e4f1d867", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `computer::LiquidationComputer`
[INFO] [stderr]   --> server/src/liquidation/application/mod.rs:11:16
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub(crate) use computer::LiquidationComputer;
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]   --> server/src/liquidation/infrastructure/event_watcher.rs:77:13
[INFO] [stderr]    |
[INFO] [stderr] 77 |         use std::str::FromStr;
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]   --> server/src/liquidation/infrastructure/event_watcher.rs:97:13
[INFO] [stderr]    |
[INFO] [stderr] 97 |         use std::str::FromStr;
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]    --> server/src/liquidation/infrastructure/event_watcher.rs:168:13
[INFO] [stderr]     |
[INFO] [stderr] 168 |         use std::str::FromStr;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/liquidation/infrastructure/event_watcher.rs:374:15
[INFO] [stderr]     |
[INFO] [stderr] 374 |     listener: std::sync::Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: requested on the command line with `-W unused-qualifications`
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 374 -     listener: std::sync::Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stderr] 374 +     listener: Arc<tokio::sync::Mutex<LiquidationEventWatcher>>,
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/liquidation/infrastructure/event_watcher.rs:375:10
[INFO] [stderr]     |
[INFO] [stderr] 375 |     dir: std::path::PathBuf,
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 375 -     dir: std::path::PathBuf,
[INFO] [stderr] 375 +     dir: PathBuf,
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `fill_adapter::FillAdapter`
[INFO] [stderr]   --> server/src/liquidation/infrastructure/mod.rs:19:16
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub(crate) use fill_adapter::FillAdapter;
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `misc_event_adapter::MiscEventAdapter`
[INFO] [stderr]   --> server/src/liquidation/infrastructure/mod.rs:21:16
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub(crate) use misc_event_adapter::MiscEventAdapter;
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `replica_cmd_adapter::ReplicaCmdAdapter`
[INFO] [stderr]   --> server/src/liquidation/infrastructure/mod.rs:22:16
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub(crate) use replica_cmd_adapter::ReplicaCmdAdapter;
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `MarkPriceUpdated`
[INFO] [stderr]   --> server/src/liquidation/orchestrator.rs:11:55
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::liquidation::domain::events::{DomainEvent, MarkPriceUpdated};
[INFO] [stderr]    |                                                       ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]   --> server/src/liquidation/orchestrator.rs:99:75
[INFO] [stderr]    |
[INFO] [stderr] 99 |     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<crate::order_book::types::Coin> {
[INFO] [stderr]    |                                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]    |
[INFO] [stderr] 99 -     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<crate::order_book::types::Coin> {
[INFO] [stderr] 99 +     pub(crate) async fn tracked_coins(&self) -> std::collections::HashSet<Coin> {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AssetInfoSource` and `MarkPriceSource`
[INFO] [stderr]   --> server/src/liquidation/ports/mod.rs:10:25
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub(crate) use traits::{AssetInfoSource, MarkPriceSource, UserStateSource};
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ServiceState`
[INFO] [stderr]   --> server/src/liquidation/mod.rs:35:51
[INFO] [stderr]    |
[INFO] [stderr] 35 |     LiquidationService, LiquidationServiceConfig, ServiceState,
[INFO] [stderr]    |                                                   ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/listeners/funding.rs:137:22
[INFO] [stderr]     |
[INFO] [stderr] 137 |         let reader = std::io::BufReader::new(file);
[INFO] [stderr]     |                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 137 -         let reader = std::io::BufReader::new(file);
[INFO] [stderr] 137 +         let reader = io::BufReader::new(file);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/servers/websocket_server.rs:619:41
[INFO] [stderr]     |
[INFO] [stderr] 619 |         liquidation_service: Option<Arc<crate::liquidation::LiquidationService<I, L, R>>>,
[INFO] [stderr]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 619 -         liquidation_service: Option<Arc<crate::liquidation::LiquidationService<I, L, R>>>,
[INFO] [stderr] 619 +         liquidation_service: Option<Arc<LiquidationService<I, L, R>>>,
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `positions`
[INFO] [stderr]    --> server/src/liquidation/service.rs:146:17
[INFO] [stderr]     |
[INFO] [stderr] 146 |             let positions = self.positions.read().await;
[INFO] [stderr]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_positions`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `liquidation_service`
[INFO] [stderr]    --> server/src/servers/websocket_server.rs:355:5
[INFO] [stderr]     |
[INFO] [stderr] 355 |     liquidation_service: Arc<ProductionLiquidationService>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_liquidation_service`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `calculator` and `level_computer` are never read
[INFO] [stderr]   --> server/src/liquidation/application/computer.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub(crate) struct LiquidationComputer<C: LiquidationPriceCalculator = LiquidationPriceCalculatorImpl> {
[INFO] [stderr]    |                   ------------------- fields in this struct
[INFO] [stderr] 21 |     calculator: C,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 22 |     level_computer: LevelComputerImpl,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `with_calculator`, `compute_price`, and `compute_levels` are never used
[INFO] [stderr]   --> server/src/liquidation/application/computer.rs:43:19
[INFO] [stderr]    |
[INFO] [stderr] 41 | impl<C: LiquidationPriceCalculator> LiquidationComputer<C> {
[INFO] [stderr]    | ---------------------------------------------------------- associated items in this implementation
[INFO] [stderr] 42 |     /// Create a new computer with a custom calculator.
[INFO] [stderr] 43 |     pub(crate) fn with_calculator(calculator: C) -> Self {
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 54 |     pub(crate) fn compute_price(
[INFO] [stderr]    |                   ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 99 |     pub(crate) fn compute_levels(
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `computer` is never read
[INFO] [stderr]   --> server/src/liquidation/application/service.rs:55:5
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub(crate) struct RealtimeLiquidationService {
[INFO] [stderr]    |                   -------------------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 55 |     computer: LiquidationComputer<LiquidationPriceCalculatorImpl>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `start_bootstrap`, `cache_size`, `import_user_state`, `update_mark_price`, `compute_all_levels`, and `coins` are never used
[INFO] [stderr]    --> server/src/liquidation/application/service.rs:81:19
[INFO] [stderr]     |
[INFO] [stderr]  66 | impl RealtimeLiquidationService {
[INFO] [stderr]     | ------------------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  81 |     pub(crate) fn start_bootstrap(&self) {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 189 |     pub(crate) async fn cache_size(&self) -> usize {
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 235 |     pub(crate) async fn import_user_state(&self, user_state: UserState) {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 281 |     pub(crate) async fn update_mark_price(&self, coin: Coin, price: Px) -> Vec<Address> {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 296 |     pub(crate) async fn compute_all_levels(&self) -> Vec<LiquidationLevels> {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 311 |     pub(crate) async fn coins(&self) -> Vec<Coin> {
[INFO] [stderr]     |                         ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `SharedService` is never used
[INFO] [stderr]    --> server/src/liquidation/application/service.rs:329:17
[INFO] [stderr]     |
[INFO] [stderr] 329 | pub(crate) type SharedService = Arc<RealtimeLiquidationService>;
[INFO] [stderr]     |                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `time` is never read
[INFO] [stderr]   --> server/src/liquidation/domain/events.rs:16:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub(crate) struct MarkPriceUpdated {
[INFO] [stderr]    |                   ---------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 16 |     pub time: u64,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `MarkPriceUpdated` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `time` is never read
[INFO] [stderr]   --> server/src/liquidation/domain/events.rs:29:9
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub(crate) struct PositionChanged {
[INFO] [stderr]    |                   --------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 29 |     pub time: u64,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PositionChanged` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `time` is never read
[INFO] [stderr]   --> server/src/liquidation/domain/events.rs:38:9
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub(crate) struct BalanceChanged {
[INFO] [stderr]    |                   -------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 38 |     pub time: u64,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `BalanceChanged` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `CrossToIsolated`, `IsolatedToCross`, `ClosedPnl`, and `Fee` are never constructed
[INFO] [stderr]   --> server/src/liquidation/domain/events.rs:47:5
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub(crate) enum BalanceChangeReason {
[INFO] [stderr]    |                 ------------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 47 |     CrossToIsolated { coin: Coin },
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 48 |     IsolatedToCross { coin: Coin },
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 49 |     FundingPayment,
[INFO] [stderr] 50 |     ClosedPnl { coin: Coin },
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 51 |     Fee { coin: Coin },
[INFO] [stderr]    |     ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `BalanceChangeReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `time` is never read
[INFO] [stderr]   --> server/src/liquidation/domain/events.rs:61:9
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub(crate) struct LeverageChanged {
[INFO] [stderr]    |                   --------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 61 |     pub time: u64,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `LeverageChanged` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `time` is never read
[INFO] [stderr]   --> server/src/liquidation/domain/events.rs:70:9
[INFO] [stderr]    |
[INFO] [stderr] 66 | pub(crate) struct IsolatedMarginChanged {
[INFO] [stderr]    |                   --------------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 70 |     pub time: u64,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `IsolatedMarginChanged` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `IsolatedMarginChanged` is never constructed
[INFO] [stderr]   --> server/src/liquidation/domain/events.rs:80:5
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub(crate) enum DomainEvent {
[INFO] [stderr]    |                 ----------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 80 |     IsolatedMarginChanged(IsolatedMarginChanged),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DomainEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `user` is never read
[INFO] [stderr]   --> server/src/liquidation/domain/state.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub(crate) struct UserState {
[INFO] [stderr]    |                   --------- field in this struct
[INFO] [stderr] 20 |     /// User address.
[INFO] [stderr] 21 |     pub user: Address,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `UserState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `calculate_liquidation_price` is never used
[INFO] [stderr]   --> server/src/liquidation/domain/types.rs:30:15
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub(crate) fn calculate_liquidation_price(
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_positive`, `is_negative`, `is_zero`, `to_px`, and `to_str` are never used
[INFO] [stderr]    --> server/src/liquidation/domain/types.rs:136:25
[INFO] [stderr]     |
[INFO] [stderr] 124 | impl SignedPx {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 136 |     pub(crate) const fn is_positive(self) -> bool {
[INFO] [stderr]     |                         ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 141 |     pub(crate) const fn is_negative(self) -> bool {
[INFO] [stderr]     |                         ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 146 |     pub(crate) const fn is_zero(self) -> bool {
[INFO] [stderr]     |                         ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 158 |     pub(crate) fn to_px(self) -> Option<Px> {
[INFO] [stderr]     |                   ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub(crate) fn to_str(self) -> String {
[INFO] [stderr]     |                   ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `populate_from_snapshots`, `populate_hardcoded`, `len`, and `is_empty` are never used
[INFO] [stderr]    --> server/src/liquidation/infrastructure/asset_mapper.rs:44:19
[INFO] [stderr]     |
[INFO] [stderr]  32 | impl AssetIndexMapper {
[INFO] [stderr]     | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  44 |     pub(crate) fn populate_from_snapshots(&self, snapshots: &L2Snapshots) {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  70 |     fn populate_hardcoded(&self, map: &mut HashMap<u32, Coin>) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub(crate) fn len(&self) -> usize {
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] ...
[INFO] [stderr] 181 |     pub(crate) fn is_empty(&self) -> bool {
[INFO] [stderr]     |                   ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/fill_adapter.rs:99:9
[INFO] [stderr]     |
[INFO] [stderr]  87 | pub(crate) struct RawFill {
[INFO] [stderr]     |                   ------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr]  99 |     pub hash: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 100 |     #[serde(default)]
[INFO] [stderr] 101 |     pub oid: u64,
[INFO] [stderr]     |         ^^^
[INFO] [stderr] 102 |     #[serde(default)]
[INFO] [stderr] 103 |     pub crossed: bool,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr] 104 |     #[serde(rename = "feeToken", default)]
[INFO] [stderr] 105 |     pub fee_token: String,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 106 |     #[serde(rename = "twapId", default)]
[INFO] [stderr] 107 |     pub twap_id: Option<u64>,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr] 108 |     #[serde(default)]
[INFO] [stderr] 109 |     pub cloid: Option<String>,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 110 |     #[serde(default)]
[INFO] [stderr] 111 |     pub tid: u64,
[INFO] [stderr]     |         ^^^
[INFO] [stderr] 112 |     #[serde(default)]
[INFO] [stderr] 113 |     pub builder: Option<String>,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr] 114 |     #[serde(rename = "builderFee", default)]
[INFO] [stderr] 115 |     pub builder_fee: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `RawFill` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `local_time` and `block_number` are never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/fill_adapter.rs:121:9
[INFO] [stderr]     |
[INFO] [stderr] 120 | pub(crate) struct RawFillBatch {
[INFO] [stderr]     |                   ------------ fields in this struct
[INFO] [stderr] 121 |     pub local_time: String,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 122 |     pub block_time: String,
[INFO] [stderr] 123 |     pub block_number: u64,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `RawFillBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `compute_mid_price`, `to_event`, and `extract_mark_prices` are never used
[INFO] [stderr]    --> server/src/liquidation/infrastructure/mark_price_adapter.rs:26:19
[INFO] [stderr]     |
[INFO] [stderr]  16 | impl MarkPriceAdapter {
[INFO] [stderr]     | --------------------- associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  26 |     pub(crate) fn compute_mid_price(bids: &[Level], asks: &[Level]) -> Option<Px> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  85 |     pub(crate) fn to_event(
[INFO] [stderr]     |                   ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub(crate) fn extract_mark_prices(snapshots: &L2Snapshots) -> HashMap<Coin, Px> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `nonce` is never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:105:9
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub(crate) struct WithdrawDelta {
[INFO] [stderr]     |                   ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 105 |     pub nonce: u64,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `WithdrawDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `token`, `amount`, `native_token_fee`, `nonce`, and `fee_token` are never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:111:9
[INFO] [stderr]     |
[INFO] [stderr] 110 | pub(crate) struct SpotTransferDelta {
[INFO] [stderr]     |                   ----------------- fields in this struct
[INFO] [stderr] 111 |     pub token: String,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 112 |     pub amount: String,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 119 |     pub native_token_fee: String,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 120 |     #[serde(default)]
[INFO] [stderr] 121 |     pub nonce: u64,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 122 |     #[serde(rename = "feeToken", default)]
[INFO] [stderr] 123 |     pub fee_token: String,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `SpotTransferDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `coin`, `szi`, and `funding_rate` are never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:130:9
[INFO] [stderr]     |
[INFO] [stderr] 128 | pub(crate) struct FundingDelta {
[INFO] [stderr]     |                   ------------ fields in this struct
[INFO] [stderr] 129 |     pub user: String,
[INFO] [stderr] 130 |     pub coin: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 131 |     pub funding_amount: String,
[INFO] [stderr] 132 |     pub szi: String,
[INFO] [stderr]     |         ^^^
[INFO] [stderr] 133 |     pub funding_rate: String,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `FundingDelta` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `time` and `hash` are never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:176:9
[INFO] [stderr]     |
[INFO] [stderr] 175 | pub(crate) struct RawMiscEvent {
[INFO] [stderr]     |                   ------------ fields in this struct
[INFO] [stderr] 176 |     pub time: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 177 |     #[serde(default)]
[INFO] [stderr] 178 |     pub hash: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `RawMiscEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `local_time` and `block_number` are never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:185:9
[INFO] [stderr]     |
[INFO] [stderr] 184 | pub(crate) struct RawMiscEventBatch {
[INFO] [stderr]     |                   ----------------- fields in this struct
[INFO] [stderr] 185 |     pub local_time: String,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 186 |     pub block_time: String,
[INFO] [stderr] 187 |     pub block_number: u64,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `RawMiscEventBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_block_time` is never used
[INFO] [stderr]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:192:15
[INFO] [stderr]     |
[INFO] [stderr] 192 | pub(crate) fn parse_block_time(block_time: &str) -> Result<u64> {
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ReplicaCmd` is never constructed
[INFO] [stderr]   --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:47:19
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub(crate) struct ReplicaCmd {
[INFO] [stderr]    |                   ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `nonce` is never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:107:9
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub(crate) struct SignedAction {
[INFO] [stderr]     |                   ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub nonce: u64,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `SignedAction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `data_dir` is never read
[INFO] [stderr]   --> server/src/liquidation/orchestrator.rs:19:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub(crate) struct RealtimeLiquidationConfig {
[INFO] [stderr]    |                   ------------------------- field in this struct
[INFO] [stderr] 18 |     /// Base path for node data directories.
[INFO] [stderr] 19 |     pub data_dir: PathBuf,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RealtimeLiquidationConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `service` is never used
[INFO] [stderr]   --> server/src/liquidation/orchestrator.rs:83:19
[INFO] [stderr]    |
[INFO] [stderr] 42 | impl RealtimeOrchestrator {
[INFO] [stderr]    | ------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 83 |     pub(crate) fn service(&self) -> &Arc<RealtimeLiquidationService> {
[INFO] [stderr]    |                   ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `MarkPriceSource` is never used
[INFO] [stderr]   --> server/src/liquidation/ports/traits.rs:22:18
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub(crate) trait MarkPriceSource: Send + Sync {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AssetInfo` is never constructed
[INFO] [stderr]   --> server/src/liquidation/ports/traits.rs:45:19
[INFO] [stderr]    |
[INFO] [stderr] 45 | pub(crate) struct AssetInfo {
[INFO] [stderr]    |                   ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MarginTier` is never constructed
[INFO] [stderr]   --> server/src/liquidation/ports/traits.rs:56:19
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub(crate) struct MarginTier {
[INFO] [stderr]    |                   ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `new` and `with_tiers` are never used
[INFO] [stderr]   --> server/src/liquidation/ports/traits.rs:65:19
[INFO] [stderr]    |
[INFO] [stderr] 63 | impl AssetInfo {
[INFO] [stderr]    | -------------- associated functions in this implementation
[INFO] [stderr] 64 |     /// Create a new asset info with single-tier leverage.
[INFO] [stderr] 65 |     pub(crate) fn new(coin: Coin, max_leverage: u32) -> Self {
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] ...
[INFO] [stderr] 74 |     pub(crate) fn with_tiers(coin: Coin, max_leverage: u32, tiers: Vec<MarginTier>) -> Self {
[INFO] [stderr]    |                   ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `AssetInfoSource` is never used
[INFO] [stderr]   --> server/src/liquidation/ports/traits.rs:86:18
[INFO] [stderr]    |
[INFO] [stderr] 86 | pub(crate) trait AssetInfoSource: Send + Sync {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get`, `users_for_coin`, and `is_empty` are never used
[INFO] [stderr]   --> server/src/liquidation/traits.rs:21:8
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub(crate) trait PositionStore: Send + Sync {
[INFO] [stderr]    |                  ------------- methods in this trait
[INFO] [stderr] 20 |     /// Get a position by user and coin.
[INFO] [stderr] 21 |     fn get(&self, user: &Address, coin: &Coin) -> Option<&Position>;
[INFO] [stderr]    |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 24 |     fn users_for_coin(&self, coin: &Coin) -> Vec<&Address>;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 36 |     fn is_empty(&self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `on_fill` and `on_funding` are never used
[INFO] [stderr]   --> server/src/liquidation/traits.rs:96:8
[INFO] [stderr]    |
[INFO] [stderr] 94 | pub(crate) trait RefreshStrategy: Send + Sync {
[INFO] [stderr]    |                  --------------- methods in this trait
[INFO] [stderr] 95 |     /// Called when a fill is received. Returns users to refresh (if any).
[INFO] [stderr] 96 |     fn on_fill(&self, user: &Address, coin: &Coin) -> RefreshDecision;
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 99 |     fn on_funding(&self) -> RefreshDecision;
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `RefreshDecision` is never used
[INFO] [stderr]    --> server/src/liquidation/traits.rs:104:17
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub(crate) enum RefreshDecision {
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_str` is never used
[INFO] [stderr]   --> server/src/liquidation/types.rs:58:19
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl SignedSz {
[INFO] [stderr]    | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 58 |     pub(crate) fn to_str(self) -> String {
[INFO] [stderr]    |                   ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `funding_rate` and `funding_amount` are never read
[INFO] [stderr]    --> server/src/liquidation/types.rs:191:9
[INFO] [stderr]     |
[INFO] [stderr] 183 | pub(crate) struct FundingDelta {
[INFO] [stderr]     |                   ------------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 191 |     pub funding_rate: String,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr] 192 |     /// Funding amount paid/received.
[INFO] [stderr] 193 |     pub funding_amount: String,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `FundingDelta` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DepositDelta` is never constructed
[INFO] [stderr]    --> server/src/liquidation/types.rs:203:19
[INFO] [stderr]     |
[INFO] [stderr] 203 | pub(crate) struct DepositDelta {
[INFO] [stderr]     |                   ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WithdrawDelta` is never constructed
[INFO] [stderr]    --> server/src/liquidation/types.rs:211:19
[INFO] [stderr]     |
[INFO] [stderr] 211 | pub(crate) struct WithdrawDelta {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SpotTransferDelta` is never constructed
[INFO] [stderr]    --> server/src/liquidation/types.rs:223:19
[INFO] [stderr]     |
[INFO] [stderr] 223 | pub(crate) struct SpotTransferDelta {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `MiscEventType` is never used
[INFO] [stderr]    --> server/src/liquidation/types.rs:237:17
[INFO] [stderr]     |
[INFO] [stderr] 237 | pub(crate) enum MiscEventType {
[INFO] [stderr]     |                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MiscEvent` is never constructed
[INFO] [stderr]    --> server/src/liquidation/types.rs:257:19
[INFO] [stderr]     |
[INFO] [stderr] 257 | pub(crate) struct MiscEvent {
[INFO] [stderr]     |                   ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MiscEventBatch` is never constructed
[INFO] [stderr]    --> server/src/liquidation/types.rs:267:19
[INFO] [stderr]     |
[INFO] [stderr] 267 | pub(crate) struct MiscEventBatch {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `empty` is never used
[INFO] [stderr]    --> server/src/liquidation/types.rs:318:19
[INFO] [stderr]     |
[INFO] [stderr] 316 | impl LiquidationLevels {
[INFO] [stderr]     | ---------------------- associated function in this implementation
[INFO] [stderr] 317 |     /// Create empty liquidation levels for a coin.
[INFO] [stderr] 318 |     pub(crate) fn empty(coin: String, time: u64) -> Self {
[INFO] [stderr]     |                   ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `state` and `is_ready` are never used
[INFO] [stderr]    --> server/src/liquidation/service.rs:113:25
[INFO] [stderr]     |
[INFO] [stderr]  88 | / impl<I, L, R> LiquidationService<I, L, R>
[INFO] [stderr]  89 | | where
[INFO] [stderr]  90 | |     I: InfoClient,
[INFO] [stderr]  91 | |     L: LevelComputer,
[INFO] [stderr]  92 | |     R: RefreshStrategy,
[INFO] [stderr]     | |_______________________- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 113 |       pub(crate) async fn state(&self) -> ServiceState {
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 118 |       pub(crate) async fn is_ready(&self) -> bool {
[INFO] [stderr]     |                           ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `handle_immediate_snapshot_with_liquidation` is never used
[INFO] [stderr]    --> server/src/servers/websocket_server.rs:617:14
[INFO] [stderr]     |
[INFO] [stderr] 588 | impl Subscription {
[INFO] [stderr]     | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 617 |     async fn handle_immediate_snapshot_with_liquidation<I, L, R>(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `px` is never used
[INFO] [stderr]   --> server/src/types/mod.rs:42:19
[INFO] [stderr]    |
[INFO] [stderr] 36 | impl Level {
[INFO] [stderr]    | ---------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub(crate) fn px(&self) -> &str {
[INFO] [stderr]    |                   ^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]    --> server/src/types/node_data.rs:170:11
[INFO] [stderr]     |
[INFO] [stderr] 170 |     Other(serde_json::Value),
[INFO] [stderr]     |     ----- ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |     |
[INFO] [stderr]     |     field in this variant
[INFO] [stderr]     |
[INFO] [stderr]     = note: `MiscEventInner` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]     |
[INFO] [stderr] 170 -     Other(serde_json::Value),
[INFO] [stderr] 170 +     Other(()),
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DEFAULT_LIQUIDATION_SIG_FIGS` is never used
[INFO] [stderr]  --> server/src/types/subscription.rs:9:7
[INFO] [stderr]   |
[INFO] [stderr] 9 | const DEFAULT_LIQUIDATION_SIG_FIGS: u32 = 3;
[INFO] [stderr]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `liquidation_sig_figs` and `liquidation_n_levels` are never used
[INFO] [stderr]    --> server/src/types/subscription.rs:116:19
[INFO] [stderr]     |
[INFO] [stderr]  36 | impl Subscription {
[INFO] [stderr]     | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 116 |     pub(crate) fn liquidation_sig_figs(&self) -> Option<u32> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 126 |     pub(crate) fn liquidation_n_levels(&self) -> Option<usize> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `server` (lib) generated 69 warnings (run `cargo fix --lib -p server` to apply 17 suggestions)
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/liquidation/infrastructure/replica_cmd_adapter.rs:266:24
[INFO] [stderr]     |
[INFO] [stderr] 266 |             let data = std::fs::read_to_string(prod_path).unwrap();
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 266 -             let data = std::fs::read_to_string(prod_path).unwrap();
[INFO] [stderr] 266 +             let data = fs::read_to_string(prod_path).unwrap();
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::liquidation::infrastructure::MarkPriceAdapter`
[INFO] [stderr]    --> server/src/liquidation/orchestrator.rs:481:13
[INFO] [stderr]     |
[INFO] [stderr] 481 |         use crate::liquidation::infrastructure::MarkPriceAdapter;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::liquidation::infrastructure::MarkPriceAdapter`
[INFO] [stderr]    --> server/src/liquidation/orchestrator.rs:498:13
[INFO] [stderr]     |
[INFO] [stderr] 498 |         use crate::liquidation::infrastructure::MarkPriceAdapter;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SignedSz`
[INFO] [stderr]    --> server/src/liquidation/service.rs:343:79
[INFO] [stderr]     |
[INFO] [stderr] 343 |     use crate::liquidation::types::{FundingDelta, LiquidationLevel, Position, SignedSz};
[INFO] [stderr]     |                                                                               ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/listeners/funding.rs:367:28
[INFO] [stderr]     |
[INFO] [stderr] 367 |         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 367 -         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stderr] 367 +         tokio::time::sleep(Duration::from_millis(50)).await;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/listeners/funding.rs:393:28
[INFO] [stderr]     |
[INFO] [stderr] 393 |         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 393 -         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stderr] 393 +         tokio::time::sleep(Duration::from_millis(50)).await;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/listeners/funding.rs:447:28
[INFO] [stderr]     |
[INFO] [stderr] 447 |         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 447 -         tokio::time::sleep(std::time::Duration::from_millis(50)).await;
[INFO] [stderr] 447 +         tokio::time::sleep(Duration::from_millis(50)).await;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/servers/websocket_server.rs:835:32
[INFO] [stderr]     |
[INFO] [stderr] 835 |                 _positions: &[&crate::liquidation::types::Position],
[INFO] [stderr]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 835 -                 _positions: &[&crate::liquidation::types::Position],
[INFO] [stderr] 835 +                 _positions: &[&Position],
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::types::subscription::DEFAULT_LEVELS`
[INFO] [stderr]    --> server/src/servers/websocket_server.rs:911:13
[INFO] [stderr]     |
[INFO] [stderr] 911 |         use crate::types::subscription::DEFAULT_LEVELS;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/servers/websocket_server.rs:919:23
[INFO] [stderr]     |
[INFO] [stderr] 919 |         let deposit = crate::liquidation::DomainEvent::BalanceChanged(BalanceChanged {
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 919 -         let deposit = crate::liquidation::DomainEvent::BalanceChanged(BalanceChanged {
[INFO] [stderr] 919 +         let deposit = DomainEvent::BalanceChanged(BalanceChanged {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/servers/websocket_server.rs:927:24
[INFO] [stderr]     |
[INFO] [stderr] 927 |         let position = crate::liquidation::DomainEvent::PositionChanged(PositionChanged {
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 927 -         let position = crate::liquidation::DomainEvent::PositionChanged(PositionChanged {
[INFO] [stderr] 927 +         let position = DomainEvent::PositionChanged(PositionChanged {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> server/src/servers/websocket_server.rs:940:26
[INFO] [stderr]     |
[INFO] [stderr] 940 |         let mark_price = crate::liquidation::DomainEvent::MarkPriceUpdated(MarkPriceUpdated {
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 940 -         let mark_price = crate::liquidation::DomainEvent::MarkPriceUpdated(MarkPriceUpdated {
[INFO] [stderr] 940 +         let mark_price = DomainEvent::MarkPriceUpdated(MarkPriceUpdated {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> server/src/liquidation/infrastructure/event_watcher.rs:474:18
[INFO] [stderr]     |
[INFO] [stderr] 474 |         let (tx, mut rx) = mpsc::channel(100);
[INFO] [stderr]     |                  ----^^
[INFO] [stderr]     |                  |
[INFO] [stderr]     |                  help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rx`
[INFO] [stderr]    --> server/src/liquidation/infrastructure/event_watcher.rs:474:18
[INFO] [stderr]     |
[INFO] [stderr] 474 |         let (tx, mut rx) = mpsc::channel(100);
[INFO] [stderr]     |                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `positions`
[INFO] [stderr]    --> server/src/liquidation/service.rs:146:17
[INFO] [stderr]     |
[INFO] [stderr] 146 |             let positions = self.positions.read().await;
[INFO] [stderr]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_positions`
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `with_calculator` is never used
[INFO] [stderr]   --> server/src/liquidation/application/computer.rs:43:19
[INFO] [stderr]    |
[INFO] [stderr] 41 | impl<C: LiquidationPriceCalculator> LiquidationComputer<C> {
[INFO] [stderr]    | ---------------------------------------------------------- associated function in this implementation
[INFO] [stderr] 42 |     /// Create a new computer with a custom calculator.
[INFO] [stderr] 43 |     pub(crate) fn with_calculator(calculator: C) -> Self {
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `compute_all_levels` is never used
[INFO] [stderr]    --> server/src/liquidation/application/service.rs:296:25
[INFO] [stderr]     |
[INFO] [stderr]  66 | impl RealtimeLiquidationService {
[INFO] [stderr]     | ------------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 296 |     pub(crate) async fn compute_all_levels(&self) -> Vec<LiquidationLevels> {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `populate_from_snapshots` and `len` are never used
[INFO] [stderr]    --> server/src/liquidation/infrastructure/asset_mapper.rs:44:19
[INFO] [stderr]     |
[INFO] [stderr]  32 | impl AssetIndexMapper {
[INFO] [stderr]     | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  44 |     pub(crate) fn populate_from_snapshots(&self, snapshots: &L2Snapshots) {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub(crate) fn len(&self) -> usize {
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `local_time` is never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/fill_adapter.rs:121:9
[INFO] [stderr]     |
[INFO] [stderr] 120 | pub(crate) struct RawFillBatch {
[INFO] [stderr]     |                   ------------ field in this struct
[INFO] [stderr] 121 |     pub local_time: String,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `RawFillBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `extract_mark_prices` is never used
[INFO] [stderr]    --> server/src/liquidation/infrastructure/mark_price_adapter.rs:107:19
[INFO] [stderr]     |
[INFO] [stderr]  16 | impl MarkPriceAdapter {
[INFO] [stderr]     | --------------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub(crate) fn extract_mark_prices(snapshots: &L2Snapshots) -> HashMap<Coin, Px> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `local_time` is never read
[INFO] [stderr]    --> server/src/liquidation/infrastructure/misc_event_adapter.rs:185:9
[INFO] [stderr]     |
[INFO] [stderr] 184 | pub(crate) struct RawMiscEventBatch {
[INFO] [stderr]     |                   ----------------- field in this struct
[INFO] [stderr] 185 |     pub local_time: String,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `RawMiscEventBatch` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `lower_bound` and `max_leverage` are never read
[INFO] [stderr]   --> server/src/liquidation/ports/traits.rs:58:9
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub(crate) struct MarginTier {
[INFO] [stderr]    |                   ---------- fields in this struct
[INFO] [stderr] 57 |     /// Notional position lower bound for this tier.
[INFO] [stderr] 58 |     pub lower_bound: Px,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 59 |     /// Maximum leverage for this tier.
[INFO] [stderr] 60 |     pub max_leverage: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `MarginTier` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `RefreshUser` and `RefreshUsers` are never constructed
[INFO] [stderr]    --> server/src/liquidation/traits.rs:108:5
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub(crate) enum RefreshDecision {
[INFO] [stderr]     |                 --------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 108 |     RefreshUser(Address),
[INFO] [stderr]     |     ^^^^^^^^^^^
[INFO] [stderr] 109 |     /// Refresh prices for multiple users.
[INFO] [stderr] 110 |     RefreshUsers(Vec<Address>),
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `RefreshDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MockPositionStore` is never constructed
[INFO] [stderr]    --> server/src/liquidation/traits.rs:122:23
[INFO] [stderr]     |
[INFO] [stderr] 122 |     pub(crate) struct MockPositionStore {
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> server/src/liquidation/traits.rs:127:23
[INFO] [stderr]     |
[INFO] [stderr] 126 |     impl MockPositionStore {
[INFO] [stderr]     |     ---------------------- associated function in this implementation
[INFO] [stderr] 127 |         pub(crate) fn new(positions: Vec<Position>) -> Self {
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MockInfoClient` is never constructed
[INFO] [stderr]    --> server/src/liquidation/traits.rs:161:23
[INFO] [stderr]     |
[INFO] [stderr] 161 |     pub(crate) struct MockInfoClient {
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `with_response` are never used
[INFO] [stderr]    --> server/src/liquidation/traits.rs:166:23
[INFO] [stderr]     |
[INFO] [stderr] 165 |     impl MockInfoClient {
[INFO] [stderr]     |     ------------------- associated items in this implementation
[INFO] [stderr] 166 |         pub(crate) fn new() -> Self {
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] ...
[INFO] [stderr] 172 |         pub(crate) fn with_response(mut self, user: Address, coin: Coin, px: Px) -> Self {
[INFO] [stderr]     |                       ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `funding_amount` is never read
[INFO] [stderr]    --> server/src/liquidation/types.rs:193:9
[INFO] [stderr]     |
[INFO] [stderr] 183 | pub(crate) struct FundingDelta {
[INFO] [stderr]     |                   ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 193 |     pub funding_amount: String,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `FundingDelta` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `liquidation_sig_figs` is never used
[INFO] [stderr]    --> server/src/types/subscription.rs:116:19
[INFO] [stderr]     |
[INFO] [stderr]  36 | impl Subscription {
[INFO] [stderr]     | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 116 |     pub(crate) fn liquidation_sig_figs(&self) -> Option<u32> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a type that has a destructor
[INFO] [stderr]    --> server/src/liquidation/infrastructure/asset_mapper.rs:284:17
[INFO] [stderr]     |
[INFO] [stderr] 284 |                 let _ = mapper_clone.get(0);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: requested on the command line with `-W let-underscore-drop`
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 284 |                 let _unused = mapper_clone.get(0);
[INFO] [stderr]     |                      ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 284 -                 let _ = mapper_clone.get(0);
[INFO] [stderr] 284 +                 drop(mapper_clone.get(0));
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a type that has a destructor
[INFO] [stderr]    --> server/src/liquidation/infrastructure/asset_mapper.rs:285:17
[INFO] [stderr]     |
[INFO] [stderr] 285 |                 let _ = mapper_clone.get(1);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 285 |                 let _unused = mapper_clone.get(1);
[INFO] [stderr]     |                      ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 285 -                 let _ = mapper_clone.get(1);
[INFO] [stderr] 285 +                 drop(mapper_clone.get(1));
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a type that has a destructor
[INFO] [stderr]    --> server/src/liquidation/infrastructure/asset_mapper.rs:290:13
[INFO] [stderr]     |
[INFO] [stderr] 290 |             let _ = mapper.get(0);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 290 |             let _unused = mapper.get(0);
[INFO] [stderr]     |                  ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 290 -             let _ = mapper.get(0);
[INFO] [stderr] 290 +             drop(mapper.get(0));
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a type that has a destructor
[INFO] [stderr]    --> server/src/liquidation/infrastructure/asset_mapper.rs:291:13
[INFO] [stderr]     |
[INFO] [stderr] 291 |             let _ = mapper.get(1);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 291 |             let _unused = mapper.get(1);
[INFO] [stderr]     |                  ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 291 -             let _ = mapper.get(1);
[INFO] [stderr] 291 +             drop(mapper.get(1));
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a type that has a destructor
[INFO] [stderr]    --> server/src/liquidation/orchestrator.rs:286:13
[INFO] [stderr]     |
[INFO] [stderr] 286 | /             let _ = super::run_realtime_liquidation_service(
[INFO] [stderr] 287 | |                 service_orchestrator,
[INFO] [stderr] 288 | |                 event_rx,
[INFO] [stderr] 289 | |                 internal_rx_for_service,
[INFO] [stderr] 290 | |                 internal_tx,
[INFO] [stderr] 291 | |             ).await;
[INFO] [stderr]     | |____________________^
[INFO] [stderr]     |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 286 |             let _unused = super::run_realtime_liquidation_service(
[INFO] [stderr]     |                  ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 286 ~             drop(super::run_realtime_liquidation_service(
[INFO] [stderr] 287 |                 service_orchestrator,
[INFO] [stderr] ...
[INFO] [stderr] 290 |                 internal_tx,
[INFO] [stderr] 291 ~             ).await);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: `server` (lib test) generated 74 warnings (40 duplicates) (run `cargo fix --lib -p server --tests` to apply 20 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.25s
[INFO] [stderr]      Running unittests src/bin/example_client.rs (/opt/rustwide/target/debug/deps/example_client-9eac82dd6f3611e3)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/websocket_server.rs (/opt/rustwide/target/debug/deps/websocket_server-d2e9b59e0ce59c40)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/server-7b02fa4965187450)
[INFO] [stdout] 
[INFO] [stdout] running 242 tests
[INFO] [stdout] test liquidation::application::computer::tests::test_computer_compute_price_isolated ... ok
[INFO] [stdout] test liquidation::application::computer::tests::test_computer_compute_levels ... ok
[INFO] [stdout] test liquidation::application::computer::tests::test_computer_compute_price_cross ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_bootstrap_mode_caches_events ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_import_user_state ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_bootstrap_filters_stale_events ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_service_apply_position_event ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_bootstrap_applies_fetched_state ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_service_mark_price_updates ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_service_compute_levels ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_stale_events_dropped_after_bootstrap ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_service_multiple_users ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_service_new ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_tracked_coins_empty_initially ... ok
[INFO] [stdout] test liquidation::domain::calculator::tests::test_calculator_long_position ... ok
[INFO] [stdout] test liquidation::application::service::tests::test_tracked_coins_populated_after_position ... ok
[INFO] [stdout] test liquidation::domain::calculator::tests::test_calculator_zero_size ... ok
[INFO] [stdout] test liquidation::domain::events::tests::test_domain_event_variants ... ok
[INFO] [stdout] test liquidation::domain::calculator::tests::test_calculator_short_position ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_apply_balance_changed_withdrawal ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_apply_balance_changed_deposit ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_apply_position_changed_close_position ... ok
[INFO] [stdout] test liquidation::domain::calculator::tests::test_calculator_trait_is_send_sync ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_apply_position_changed_new_position ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_clearinghouse_state_new ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_cross_margin_cascade ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_positions_for_coin ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_update_mark_price_affects_liquidation ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_user_state_cross_account_value_no_positions ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_user_state_cross_account_value_with_profit ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_user_state_cross_maintenance_margin ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_user_state_with_balance ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_user_state_cross_account_value_with_loss ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_entry_price_adding_to_long ... ok
[INFO] [stdout] test liquidation::domain::state::tests::test_user_state_new ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_entry_price_adding_to_short ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_entry_price_closing_position ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_entry_price_flipping_long_to_short ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_entry_price_flipping_short_to_long ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_entry_price_opening_position ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_entry_price_reducing_long ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_entry_price_reducing_short ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_liq_price_larger_position ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_liq_price_long_position ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_liq_price_long_verify_liquidation_condition ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_liq_price_long_with_50x_leverage ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_liq_price_short_position ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_liq_price_short_verify_liquidation_condition ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_liq_price_short_larger_position ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_liq_price_zero_size_returns_none ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_addition ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_from_px ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_new_and_value ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_parse_negative ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_negative ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_positive ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_parse_positive ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_subtraction ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_to_px_negative_returns_none ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_to_px_positive ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_to_px_zero ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_to_str_negative ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_to_str_positive ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_to_str_zero ... ok
[INFO] [stdout] test liquidation::domain::types::tests::test_signed_px_zero ... ok
[INFO] [stdout] test liquidation::info_client::tests::test_deserialize_info_request ... ok
[INFO] [stdout] test liquidation::info_client::tests::test_deserialize_clearinghouse_state ... ok
[INFO] [stdout] test liquidation::info_client::tests::test_parse_liquidation_price ... ok
[INFO] [stdout] test liquidation::infrastructure::asset_mapper::tests::test_as_lookup_fn ... ok
[INFO] [stdout] test liquidation::infrastructure::asset_mapper::tests::test_builder_perps_return_none ... ok
[INFO] [stdout] test liquidation::infrastructure::asset_mapper::tests::test_mapper_new_is_empty ... ok
[INFO] [stdout] test liquidation::infrastructure::asset_mapper::tests::test_populate_from_universe ... ok
[INFO] [stdout] test liquidation::infrastructure::asset_mapper::tests::test_populate_skips_spot_coins ... ok
[INFO] [stdout] test liquidation::infrastructure::asset_mapper::tests::test_hardcoded_mappings ... ok
[INFO] [stdout] test liquidation::infrastructure::event_watcher::tests::test_parse_block_time ... ok
[INFO] [stdout] test liquidation::infrastructure::asset_mapper::tests::test_spot_assets_return_none ... ok
[INFO] [stdout] test liquidation::infrastructure::event_watcher::tests::test_process_fills_line_creates_position_changed_event ... ok
[INFO] [stdout] test liquidation::infrastructure::event_watcher::tests::test_process_misc_events_line_deposit ... ok
[INFO] [stdout] test liquidation::infrastructure::asset_mapper::tests::test_thread_safety ... ok
[INFO] [stdout] test liquidation::infrastructure::fill_adapter::tests::test_parse_close_long_fill ... ok
[INFO] [stdout] test liquidation::infrastructure::event_watcher::tests::test_process_misc_events_line_funding ... ok
[INFO] [stdout] test liquidation::infrastructure::event_watcher::tests::test_process_replica_cmds_line_creates_leverage_changed_event ... ok
[INFO] [stdout] test liquidation::infrastructure::event_watcher::tests::test_process_replica_cmds_unknown_asset_skipped ... ok
[INFO] [stdout] test liquidation::infrastructure::event_watcher::tests::test_watcher_is_reading_initially_false ... ok
[INFO] [stdout] test liquidation::infrastructure::fill_adapter::tests::test_parse_close_short_fill ... ok
[INFO] [stdout] test liquidation::infrastructure::fill_adapter::tests::test_parse_open_long_fill ... ok
[INFO] [stdout] test liquidation::infrastructure::fill_adapter::tests::test_parse_spot_sell_fill ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_basic ... ok
[INFO] [stdout] test liquidation::infrastructure::fill_adapter::tests::test_parse_fill_batch_json ... ok
[INFO] [stdout] test liquidation::infrastructure::fill_adapter::tests::test_parse_open_short_fill ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_empty_book ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_from_inner ... ok
[INFO] [stdout] test liquidation::infrastructure::fill_adapter::tests::test_parse_spot_buy_fill ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_fractional ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_from_inner_empty_asks ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_from_inner_empty_bids ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_no_asks ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_odd_spread ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_no_bids ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_compute_mid_price_tight_spread ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_precision_with_small_prices ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_to_event ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_precision_with_tiny_spread ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_to_event_empty_book ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_to_event_from_inner ... ok
[INFO] [stdout] test liquidation::infrastructure::mark_price_adapter::tests::test_to_event_from_inner_btc_precision ... ok
[INFO] [stdout] test liquidation::infrastructure::misc_event_adapter::tests::test_parse_block_time ... ok
[INFO] [stdout] test liquidation::infrastructure::misc_event_adapter::tests::test_parse_deposit ... ok
[INFO] [stdout] test liquidation::infrastructure::misc_event_adapter::tests::test_parse_misc_event_batch_json ... ok
[INFO] [stdout] test liquidation::infrastructure::misc_event_adapter::tests::test_parse_funding_negative ... ok
[INFO] [stdout] test liquidation::infrastructure::misc_event_adapter::tests::test_parse_funding_positive ... ok
[INFO] [stdout] test liquidation::infrastructure::misc_event_adapter::tests::test_parse_spot_transfer ... ok
[INFO] [stdout] test liquidation::infrastructure::misc_event_adapter::tests::test_parse_withdraw ... ok
[INFO] [stdout] test liquidation::infrastructure::misc_event_adapter::tests::test_parse_misc_event_batch_with_funding ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_production_data_file ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_order_action_with_data ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_evm_raw_tx_action ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_abci_block_format ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_production_replica_batch ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_signed_action_with_order_data ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_replica_cmd_other_action ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_replica_cmd_json_plan_format ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_update_leverage_cross ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_signed_action_with_signature ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_info_request_serialization ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_parse_state_empty_positions ... ok
[INFO] [stdout] test liquidation::infrastructure::replica_cmd_adapter::tests::test_parse_update_leverage_isolated ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_parse_state_skips_zero_size_positions ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_deserialize_clearinghouse_state ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_parse_state_with_cross_position ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_parse_state_with_multiple_positions ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_parse_state_with_isolated_position ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_parse_state_with_short_position ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_different_sig_figs ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_empty_positions ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_multiple_positions_bucketing ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_notional_aggregation ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_mixed_longs_and_shorts ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_longs_sorted_descending ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_positions_without_liquidation_px ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_single_long_position ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_shorts_sorted_ascending ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_single_short_position ... ok
[INFO] [stdout] test liquidation::levels::tests::test_compute_skip_zero_positions ... ok
[INFO] [stdout] test liquidation::levels::tests::test_format_notional ... ok
[INFO] [stdout] test liquidation::levels::tests::test_round_to_sig_figs_edge_cases ... ok
[INFO] [stdout] test liquidation::levels::tests::test_round_to_sig_figs_basic ... ok
[INFO] [stdout] test liquidation::levels::tests::test_round_to_sig_figs_side_aware ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_mark_price_fallback_when_tracked_empty ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_mark_price_filters_when_tracked_nonempty ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_fill_event_triggers_level_broadcast ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_orchestrator_bootstrap_from_source ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_orchestrator_broadcasts_levels_on_event ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_orchestrator_tracked_coins_empty_initially ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_run_realtime_liquidation_service_exists ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_orchestrator_not_ready_initially ... ok
[INFO] [stdout] test liquidation::ports::traits::tests::test_asset_info_new ... ok
[INFO] [stdout] test liquidation::ports::traits::tests::test_asset_info_with_tiers ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_orchestrator_compute_levels ... ok
[INFO] [stdout] test liquidation::position::tests::test_all_users_empty ... ok
[INFO] [stdout] test liquidation::position::tests::test_all_users_single_user ... ok
[INFO] [stdout] test liquidation::position::tests::test_all_users_multiple_coins ... ok
[INFO] [stdout] test liquidation::position::tests::test_apply_funding_deltas_clears_previous_state ... ok
[INFO] [stdout] test liquidation::position::tests::test_apply_funding_deltas_single_position ... ok
[INFO] [stdout] test liquidation::position::tests::test_apply_funding_deltas_multiple_users ... ok
[INFO] [stdout] test liquidation::orchestrator::tests::test_orchestrator_tracked_coins_after_position ... ok
[INFO] [stdout] test liquidation::position::tests::test_apply_funding_deltas_skips_zero_positions ... ok
[INFO] [stdout] test liquidation::position::tests::test_clear ... ok
[INFO] [stdout] test liquidation::position::tests::test_long_and_short_positions ... ok
[INFO] [stdout] test liquidation::position::tests::test_new_position_state_is_empty ... ok
[INFO] [stdout] test liquidation::position::tests::test_position_notional_calculation ... ok
[INFO] [stdout] test liquidation::position::tests::test_invalid_funding_delta_gracefully_skipped ... ok
[INFO] [stdout] test liquidation::position::tests::test_positions_for_coin_empty ... ok
[INFO] [stdout] test liquidation::position::tests::test_positions_for_coin_multiple_positions ... ok
[INFO] [stdout] test liquidation::position::tests::test_positions_for_coin_single_position ... ok
[INFO] [stdout] test liquidation::position::tests::test_secondary_index_consistency ... ok
[INFO] [stdout] test liquidation::position::tests::test_set_liquidation_price ... ok
[INFO] [stdout] test liquidation::position::tests::test_users_for_coin_empty ... ok
[INFO] [stdout] test liquidation::position::tests::test_users_for_coin_multiple_users ... ok
[INFO] [stdout] test liquidation::position::tests::test_set_liquidation_price_nonexistent_position ... ok
[INFO] [stdout] test liquidation::position::tests::test_users_for_coin_single_user ... ok
[INFO] [stdout] test liquidation::service::tests::test_hourly_only_strategy_skips_fills ... ok
[INFO] [stdout] test liquidation::service::tests::test_hourly_only_strategy_refreshes_on_funding ... ok
[INFO] [stdout] test liquidation::service::tests::test_compute_levels_per_client_n_sig_figs ... ok
[INFO] [stdout] test liquidation::service::tests::test_service_compute_all_levels ... ok
[INFO] [stdout] test liquidation::types::tests::test_funding_delta_deserialization ... ok
[INFO] [stdout] test liquidation::types::tests::test_liquidation_levels_truncate ... ok
[INFO] [stdout] test liquidation::service::tests::test_service_initial_state ... ok
[INFO] [stdout] test liquidation::types::tests::test_liquidation_levels_truncate_larger_than_available ... ok
[INFO] [stdout] test liquidation::service::tests::test_service_processes_funding_event ... ok
[INFO] [stdout] test liquidation::types::tests::test_liquidation_level_serialization ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_is_long_short ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_maintenance_margin ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_maintenance_margin_50x ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_notional ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_isolated_margin ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_notional_larger_size ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_unrealized_pnl_long_loss ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_unrealized_pnl_long_profit ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_unrealized_pnl_short_profit ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_unrealized_pnl_short_loss ... ok
[INFO] [stdout] test liquidation::types::tests::test_signed_sz_abs ... ok
[INFO] [stdout] test liquidation::types::tests::test_position_with_margin_constructor ... ok
[INFO] [stdout] test liquidation::types::tests::test_signed_sz_parse_negative ... ok
[INFO] [stdout] test liquidation::types::tests::test_signed_sz_parse_zero ... ok
[INFO] [stdout] test liquidation::types::tests::test_signed_sz_parse_positive ... ok
[INFO] [stdout] test listeners::funding::tests::test_funding_event_deserialization ... ok
[INFO] [stdout] test listeners::funding::tests::test_funding_event_with_positions ... ok
[INFO] [stdout] test order_book::linked_list::tests::simple_linked_list_test ... ok
[INFO] [stdout] test order_book::multi_book::tests::test_deserialization ... ok
[INFO] [stdout] test order_book::multi_book::tests::test_deserialization_from_json ... FAILED
[INFO] [stdout] test order_book::multi_book::tests::test_l4_snapshot_to_l2_snapshot ... ok
[INFO] [stdout] test order_book::tests::simple_book_test ... ok
[INFO] [stdout] test servers::websocket_server::tests::test_liquidation_levels_no_snapshot_when_no_service ... ok
[INFO] [stdout] test servers::websocket_server::tests::test_liquidation_levels_no_snapshot_when_not_ready ... ok
[INFO] [stdout] test servers::websocket_server::tests::test_liquidation_levels_snapshot_on_subscribe_when_ready ... ok
[INFO] [stdout] test servers::websocket_server::tests::test_liquidation_levels_snapshot_respects_n_levels ... ok
[INFO] [stdout] test servers::websocket_server::tests::test_orchestrator_snapshot_returns_levels_when_ready ... ok
[INFO] [stdout] test servers::websocket_server::tests::test_orchestrator_snapshot_returns_none_when_not_ready ... ok
[INFO] [stdout] test types::node_data::tests::test_misc_events_batch_empty ... ok
[INFO] [stdout] test types::node_data::tests::test_misc_events_batch_with_funding ... ok
[INFO] [stdout] test types::node_data::tests::test_twap_batch_deserialization ... ok
[INFO] [stdout] test types::node_data::tests::test_twap_batch_empty_events ... ok
[INFO] [stdout] test types::subscription::test::test_client_message_deserialization ... ok
[INFO] [stdout] test types::subscription::test::test_liquidation_levels_n_levels_helper ... ok
[INFO] [stdout] test types::subscription::test::test_liquidation_levels_response_serialization ... ok
[INFO] [stdout] test types::subscription::test::test_liquidation_levels_subscription_deserialization ... ok
[INFO] [stdout] test types::subscription::test::test_liquidation_levels_subscription_with_n_levels ... ok
[INFO] [stdout] test types::subscription::test::test_liquidation_levels_subscription_with_sig_figs ... ok
[INFO] [stdout] test types::subscription::test::test_liquidation_levels_validation_n_levels_max ... ok
[INFO] [stdout] test types::subscription::test::test_message_deserialization_l2book ... ok
[INFO] [stdout] test types::subscription::test::test_message_deserialization_subscription_response ... ok
[INFO] [stdout] test types::subscription::test::test_message_deserialization_trade ... ok
[INFO] [stdout] test types::subscription::test::test_twap_response_serialization ... ok
[INFO] [stdout] test types::subscription::test::test_twap_subscription_deserialization ... ok
[INFO] [stdout] test listeners::funding::tests::test_cold_start_processes_existing_files ... ok
[INFO] [stdout] test listeners::funding::tests::test_bootstrap_no_funding_event_found ... ok
[INFO] [stdout] test listeners::funding::tests::test_bootstrap_finds_last_funding_event ... ok
[INFO] [stdout] test listeners::directory::tests::test_trade_listener ... FAILED
[INFO] [stdout] test liquidation::info_client::tests::test_empty_users_returns_empty_map ... ok
[INFO] [stdout] test liquidation::info_client::tests::test_info_client_basic_flow ... ok
[INFO] [stdout] test liquidation::infrastructure::state_adapter::tests::test_fetch_state_empty_users ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- order_book::multi_book::tests::test_deserialization_from_json stdout ----
[INFO] [stdout] Error: Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }
[INFO] [stdout] 
[INFO] [stdout] ---- listeners::directory::tests::test_trade_listener stdout ----
[INFO] [stdout] Error: Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     listeners::directory::tests::test_trade_listener
[INFO] [stdout]     order_book::multi_book::tests::test_deserialization_from_json
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 240 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p server --lib`
[INFO] running `Command { std: "docker" "inspect" "b32d66120837d7db1a007c4a1add96dd4eb5edeba9f7d9ae660701f9e4f1d867", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b32d66120837d7db1a007c4a1add96dd4eb5edeba9f7d9ae660701f9e4f1d867", kill_on_drop: false }`
[INFO] [stdout] b32d66120837d7db1a007c4a1add96dd4eb5edeba9f7d9ae660701f9e4f1d867
