[INFO] cloning repository https://github.com/RenatGafarov/symmetrical-funicular-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/RenatGafarov/symmetrical-funicular-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRenatGafarov%2Fsymmetrical-funicular-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRenatGafarov%2Fsymmetrical-funicular-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b399694f86c0baa054c83d578cad818dabd2bfbc [INFO] checking RenatGafarov/symmetrical-funicular-rust against master#80b898258da78fdd1262438126aa0cf90e395f0c for pr-149195-4 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRenatGafarov%2Fsymmetrical-funicular-rust" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/RenatGafarov/symmetrical-funicular-rust [INFO] finished tweaking git repo https://github.com/RenatGafarov/symmetrical-funicular-rust [INFO] tweaked toml for git repo https://github.com/RenatGafarov/symmetrical-funicular-rust written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/RenatGafarov/symmetrical-funicular-rust on toolchain 80b898258da78fdd1262438126aa0cf90e395f0c [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+80b898258da78fdd1262438126aa0cf90e395f0c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/RenatGafarov/symmetrical-funicular-rust 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" "+80b898258da78fdd1262438126aa0cf90e395f0c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded rkyv_derive v0.7.46 [INFO] [stderr] Downloaded rust_decimal_macros v1.40.0 [INFO] [stderr] Downloaded rust_decimal v1.40.0 [INFO] [stderr] Downloaded rkyv v0.7.46 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:29356a839a4d14451438f794ce8414e707d72405f44418718d724d22562fe786" "/opt/rustwide/cargo-home/bin/cargo" "+80b898258da78fdd1262438126aa0cf90e395f0c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] c621c359beec60af4e1ebdd4a86b4a43d104ff377ce4817e07b2d70100930b1e [INFO] running `Command { std: "docker" "start" "-a" "c621c359beec60af4e1ebdd4a86b4a43d104ff377ce4817e07b2d70100930b1e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c621c359beec60af4e1ebdd4a86b4a43d104ff377ce4817e07b2d70100930b1e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c621c359beec60af4e1ebdd4a86b4a43d104ff377ce4817e07b2d70100930b1e", kill_on_drop: false }` [INFO] [stdout] c621c359beec60af4e1ebdd4a86b4a43d104ff377ce4817e07b2d70100930b1e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:29356a839a4d14451438f794ce8414e707d72405f44418718d724d22562fe786" "/opt/rustwide/cargo-home/bin/cargo" "+80b898258da78fdd1262438126aa0cf90e395f0c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9b6e764d31a53f788193e198b8481dcdf8ff318149565a9456d9aae2603d83e5 [INFO] running `Command { std: "docker" "start" "-a" "9b6e764d31a53f788193e198b8481dcdf8ff318149565a9456d9aae2603d83e5", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling zmij v1.0.16 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking socket2 v0.6.1 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling litemap v0.8.1 [INFO] [stderr] Compiling writeable v0.6.2 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling slab v0.4.11 [INFO] [stderr] Compiling bytes v1.11.0 [INFO] [stderr] Compiling zerocopy v0.8.33 [INFO] [stderr] Compiling foldhash v0.1.5 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling crc v3.4.0 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling event-listener v5.4.1 [INFO] [stderr] Compiling hashlink v0.10.0 [INFO] [stderr] Compiling spin v0.9.8 [INFO] [stderr] Compiling ryu v1.0.22 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling darling_core v0.21.3 [INFO] [stderr] Compiling atoi v2.0.0 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling flume v0.11.1 [INFO] [stderr] Checking rand_core v0.9.5 [INFO] [stderr] Checking futures-intrusive v0.5.0 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Compiling rust_decimal v1.40.0 [INFO] [stderr] Checking data-encoding v2.10.0 [INFO] [stderr] Checking rustls-pki-types v1.14.0 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Checking uuid v1.19.0 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking tempfile v3.24.0 [INFO] [stderr] Compiling rust_decimal_macros v1.40.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Compiling darling_macro v0.21.3 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Compiling darling v0.21.3 [INFO] [stderr] Compiling serde_with_macros v3.16.1 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking tokio-stream v0.1.18 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Checking sqlx-core v0.8.6 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tungstenite v0.26.2 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking serde_with v3.16.1 [INFO] [stderr] Checking h2 v0.4.13 [INFO] [stderr] Checking tokio-tungstenite v0.26.2 [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Compiling sqlx-sqlite v0.8.6 [INFO] [stderr] Checking hyper-util v0.1.19 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking reqwest v0.12.28 [INFO] [stderr] Compiling sqlx-macros-core v0.8.6 [INFO] [stderr] Compiling sqlx-macros v0.8.6 [INFO] [stderr] Checking sqlx v0.8.6 [INFO] [stderr] Checking symmetrical-funicular-rust v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `WebSocketConfig` [INFO] [stdout] --> src/config/mod.rs:22:36 [INFO] [stdout] | [INFO] [stdout] 22 | pub use exchange::{ExchangeConfig, WebSocketConfig}; [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: `RetryConfig` [INFO] [stdout] --> src/config/mod.rs:23:38 [INFO] [stdout] | [INFO] [stdout] 23 | pub use execution::{ExecutionConfig, RetryConfig}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TelegramConfig` [INFO] [stdout] --> src/config/mod.rs:24:44 [INFO] [stdout] | [INFO] [stdout] 24 | pub use notification::{NotificationConfig, TelegramConfig}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ClientConfig` [INFO] [stdout] --> src/exchanges/gate/mod.rs:7:26 [INFO] [stdout] | [INFO] [stdout] 7 | pub use client::{Client, ClientConfig}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `EXCHANGE_NAME` [INFO] [stdout] --> src/exchanges/gate/mod.rs:8:34 [INFO] [stdout] | [INFO] [stdout] 8 | pub use exchange::{GateExchange, EXCHANGE_NAME}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PriceLevel` [INFO] [stdout] --> src/detector/cross.rs:13:68 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::domain::{Fees, Opportunity, OpportunityType, Orderbook, PriceLevel}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `WebSocketConfig` [INFO] [stdout] --> src/config/mod.rs:22:36 [INFO] [stdout] | [INFO] [stdout] 22 | pub use exchange::{ExchangeConfig, WebSocketConfig}; [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: `RetryConfig` [INFO] [stdout] --> src/config/mod.rs:23:38 [INFO] [stdout] | [INFO] [stdout] 23 | pub use execution::{ExecutionConfig, RetryConfig}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TelegramConfig` [INFO] [stdout] --> src/config/mod.rs:24:44 [INFO] [stdout] | [INFO] [stdout] 24 | pub use notification::{NotificationConfig, TelegramConfig}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ClientConfig` [INFO] [stdout] --> src/exchanges/gate/mod.rs:7:26 [INFO] [stdout] | [INFO] [stdout] 7 | pub use client::{Client, ClientConfig}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `EXCHANGE_NAME` [INFO] [stdout] --> src/exchanges/gate/mod.rs:8:34 [INFO] [stdout] | [INFO] [stdout] 8 | pub use exchange::{GateExchange, EXCHANGE_NAME}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `exchange_manager`, `cross_exchange_detector`, and `executing_pairs` are never read [INFO] [stdout] --> src/bot/mod.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct Bot { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 30 | cfg: Config, [INFO] [stdout] 31 | exchange_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | cross_exchange_detector: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | executing_pairs: RwLock>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `try_lock_pair`, `unlock_pair`, and `save_opportunity` are never used [INFO] [stdout] --> src/bot/mod.rs:345:18 [INFO] [stdout] | [INFO] [stdout] 51 | impl Bot { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 345 | pub async fn try_lock_pair(&self, pair: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 355 | pub async fn unlock_pair(&self, pair: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 362 | pub async fn save_opportunity(&self, opportunity: &Opportunity) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `total_volume`, `best_trade`, and `worst_trade` are never read [INFO] [stdout] --> src/bot/stats.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Stats { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 12 | pub total_volume: f64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 13 | pub best_trade: f64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | pub worst_trade: f64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Stats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `execution` and `balance` are never read [INFO] [stdout] --> src/config/mod.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 37 | pub struct Config { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 47 | pub execution: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub balance: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `enabled`, `sync_interval`, `max_age`, and `sync_after_trade` are never read [INFO] [stdout] --> src/config/balance.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct BalanceConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 13 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 16 | pub sync_interval: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | pub max_age: Duration, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub sync_after_trade: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BalanceConfig` 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 `testnet` is never read [INFO] [stdout] --> src/config/exchange.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct ExchangeConfig { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 16 | pub testnet: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExchangeConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config/exchange.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct WebSocketConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 36 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WebSocketConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `timeout` and `retry` are never read [INFO] [stdout] --> src/config/execution.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct ExecutionConfig { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 13 | pub timeout: Duration, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 14 | /// Retry behavior for failed orders. [INFO] [stdout] 15 | pub retry: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExecutionConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `max_attempts`, `initial_delay`, `max_delay`, and `multiplier` are never read [INFO] [stdout] --> src/config/execution.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct RetryConfig { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 21 | /// Maximum number of retry attempts. [INFO] [stdout] 22 | pub max_attempts: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub initial_delay: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub max_delay: Duration, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 29 | /// Factor by which delay increases after each retry. [INFO] [stdout] 30 | pub multiplier: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RetryConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `notify_opportunities`, `notify_executions`, `notify_errors`, and `notify_overview` are never read [INFO] [stdout] --> src/config/notification.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct TelegramConfig { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 32 | pub notify_opportunities: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub notify_executions: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 38 | pub notify_errors: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub notify_overview: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TelegramConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `max_position_per_exchange`, `daily_loss_limit`, and `kill_switch_drawdown` are never read [INFO] [stdout] --> src/config/risk.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct RiskConfig { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 8 | /// Maximum position size per exchange as a decimal (e.g., "0.20" for 20%). [INFO] [stdout] 9 | pub max_position_per_exchange: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 10 | /// Maximum daily loss before stopping trading (e.g., "0.05" for 5%). [INFO] [stdout] 11 | pub daily_loss_limit: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | /// Drawdown threshold that triggers emergency stop (e.g., "0.05" for 5%). [INFO] [stdout] 13 | pub kill_switch_drawdown: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RiskConfig` 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 `is_expired` and `is_profitable` are never used [INFO] [stdout] --> src/domain/opportunity.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl Opportunity { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] 71 | /// Returns true if the opportunity has expired. [INFO] [stdout] 72 | pub fn is_expired(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn is_profitable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_orderbook`, `cancel_order`, and `supported_pairs` are never used [INFO] [stdout] --> src/exchanges/mod.rs:69:14 [INFO] [stdout] | [INFO] [stdout] 52 | pub trait Exchange: Send + Sync { [INFO] [stdout] | -------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 69 | async fn get_orderbook(&self, pair: &str) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | async fn cancel_order(&self, order_id: &str) -> Result<()>; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | fn supported_pairs(&self) -> Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `unregister` and `status` are never used [INFO] [stdout] --> src/exchanges/manager.rs:97:18 [INFO] [stdout] | [INFO] [stdout] 32 | impl Manager { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 97 | pub async fn unregister(&self, name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub async fn status(&self) -> HashMap { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `OrderbookProviderError` is never used [INFO] [stdout] --> src/exchanges/provider.rs:12:10 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum OrderbookProviderError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get` is never used [INFO] [stdout] --> src/exchanges/provider.rs:32:14 [INFO] [stdout] | [INFO] [stdout] 27 | pub trait OrderbookProvider: Send + Sync { [INFO] [stdout] | ----------------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 32 | async fn get(&self, exchange: &str, pair: &str) -> Result; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `ping`, `request_count`, and `rate_limit` are never used [INFO] [stdout] --> src/exchanges/gate/client.rs:309:18 [INFO] [stdout] | [INFO] [stdout] 93 | impl Client { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 309 | pub async fn ping(&self) -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn request_count(&self) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn rate_limit(&self) -> i64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `orderbook_depth` and `pairs` are never read [INFO] [stdout] --> src/exchanges/gate/exchange.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct GateExchange { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 35 | orderbook_depth: i32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | pairs: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderbookResponse` is never constructed [INFO] [stdout] --> src/exchanges/gate/exchange.rs:315:8 [INFO] [stdout] | [INFO] [stdout] 315 | struct OrderbookResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_orderbook` is never used [INFO] [stdout] --> src/exchanges/gate/exchange.rs:322:8 [INFO] [stdout] | [INFO] [stdout] 321 | impl OrderbookResponse { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] 322 | fn to_orderbook(&self, pair: &str) -> Orderbook { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_levels` is never used [INFO] [stdout] --> src/exchanges/gate/exchange.rs:341:4 [INFO] [stdout] | [INFO] [stdout] 341 | fn parse_levels(levels: &[Vec]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `orderbook_depth` and `pairs` are never read [INFO] [stdout] --> src/exchanges/poloniex/exchange.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct PoloniexExchange { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 30 | orderbook_depth: i32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | pairs: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderbookResponse` is never constructed [INFO] [stdout] --> src/exchanges/poloniex/exchange.rs:308:8 [INFO] [stdout] | [INFO] [stdout] 308 | struct OrderbookResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_orderbook` is never used [INFO] [stdout] --> src/exchanges/poloniex/exchange.rs:327:8 [INFO] [stdout] | [INFO] [stdout] 326 | impl OrderbookResponse { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] 327 | fn to_orderbook(&self, pair: &str) -> Orderbook { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_price_levels` is never used [INFO] [stdout] --> src/exchanges/utils.rs:47:8 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn parse_price_levels(data: &[String]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `save`, `get_by_id`, `get_all`, `get_by_pair`, and `count` are never used [INFO] [stdout] --> src/storage/mod.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 12 | pub trait OpportunityStorage: Send + Sync { [INFO] [stdout] | ------------------ methods in this trait [INFO] [stdout] ... [INFO] [stdout] 15 | async fn save(&self, opp: &Opportunity) -> Result; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | async fn get_by_id(&self, id: &str) -> Result, StorageError>; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | async fn get_all(&self) -> Result, StorageError>; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | async fn get_by_pair(&self, pair: &str) -> Result, StorageError>; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | async fn count(&self) -> Result; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `NotFound` and `InvalidData` are never constructed [INFO] [stdout] --> src/storage/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum StorageError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 40 | NotFound(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | InvalidData(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StorageError` 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 `generate_unique_hash` is never used [INFO] [stdout] --> src/storage/sqlite.rs:110:4 [INFO] [stdout] | [INFO] [stdout] 110 | fn generate_unique_hash(opp: &Opportunity) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_opportunity_row` is never used [INFO] [stdout] --> src/storage/sqlite.rs:259:4 [INFO] [stdout] | [INFO] [stdout] 259 | fn parse_opportunity_row(row: &sqlx::sqlite::SqliteRow) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InvalidConfig` and `Provider` are never constructed [INFO] [stdout] --> src/detector/mod.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum DetectorError { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 21 | InvalidConfig(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | Provider(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DetectorError` 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 `exchange_manager`, `cross_exchange_detector`, and `executing_pairs` are never read [INFO] [stdout] --> src/bot/mod.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct Bot { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 30 | cfg: Config, [INFO] [stdout] 31 | exchange_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | cross_exchange_detector: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | executing_pairs: RwLock>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `try_lock_pair`, `unlock_pair`, and `save_opportunity` are never used [INFO] [stdout] --> src/bot/mod.rs:345:18 [INFO] [stdout] | [INFO] [stdout] 51 | impl Bot { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 345 | pub async fn try_lock_pair(&self, pair: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 355 | pub async fn unlock_pair(&self, pair: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 362 | pub async fn save_opportunity(&self, opportunity: &Opportunity) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `total_volume`, `best_trade`, and `worst_trade` are never read [INFO] [stdout] --> src/bot/stats.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Stats { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 12 | pub total_volume: f64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 13 | pub best_trade: f64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | pub worst_trade: f64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Stats` 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 `is_expired` and `is_profitable` are never used [INFO] [stdout] --> src/domain/opportunity.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl Opportunity { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] 71 | /// Returns true if the opportunity has expired. [INFO] [stdout] 72 | pub fn is_expired(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn is_profitable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_orderbook`, `cancel_order`, and `supported_pairs` are never used [INFO] [stdout] --> src/exchanges/mod.rs:69:14 [INFO] [stdout] | [INFO] [stdout] 52 | pub trait Exchange: Send + Sync { [INFO] [stdout] | -------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 69 | async fn get_orderbook(&self, pair: &str) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | async fn cancel_order(&self, order_id: &str) -> Result<()>; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | fn supported_pairs(&self) -> Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `ping`, `request_count`, and `rate_limit` are never used [INFO] [stdout] --> src/exchanges/gate/client.rs:309:18 [INFO] [stdout] | [INFO] [stdout] 93 | impl Client { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 309 | pub async fn ping(&self) -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn request_count(&self) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn rate_limit(&self) -> i64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `orderbook_depth` and `pairs` are never read [INFO] [stdout] --> src/exchanges/gate/exchange.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct GateExchange { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 35 | orderbook_depth: i32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | pairs: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderbookResponse` is never constructed [INFO] [stdout] --> src/exchanges/gate/exchange.rs:315:8 [INFO] [stdout] | [INFO] [stdout] 315 | struct OrderbookResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_orderbook` is never used [INFO] [stdout] --> src/exchanges/gate/exchange.rs:322:8 [INFO] [stdout] | [INFO] [stdout] 321 | impl OrderbookResponse { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] 322 | fn to_orderbook(&self, pair: &str) -> Orderbook { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_levels` is never used [INFO] [stdout] --> src/exchanges/gate/exchange.rs:341:4 [INFO] [stdout] | [INFO] [stdout] 341 | fn parse_levels(levels: &[Vec]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `orderbook_depth` and `pairs` are never read [INFO] [stdout] --> src/exchanges/poloniex/exchange.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct PoloniexExchange { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 30 | orderbook_depth: i32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | pairs: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderbookResponse` is never constructed [INFO] [stdout] --> src/exchanges/poloniex/exchange.rs:308:8 [INFO] [stdout] | [INFO] [stdout] 308 | struct OrderbookResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_orderbook` is never used [INFO] [stdout] --> src/exchanges/poloniex/exchange.rs:327:8 [INFO] [stdout] | [INFO] [stdout] 326 | impl OrderbookResponse { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] 327 | fn to_orderbook(&self, pair: &str) -> Orderbook { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_price_levels` is never used [INFO] [stdout] --> src/exchanges/utils.rs:47:8 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn parse_price_levels(data: &[String]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `save`, `get_by_id`, `get_all`, `get_by_pair`, and `count` are never used [INFO] [stdout] --> src/storage/mod.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 12 | pub trait OpportunityStorage: Send + Sync { [INFO] [stdout] | ------------------ methods in this trait [INFO] [stdout] ... [INFO] [stdout] 15 | async fn save(&self, opp: &Opportunity) -> Result; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | async fn get_by_id(&self, id: &str) -> Result, StorageError>; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | async fn get_all(&self) -> Result, StorageError>; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | async fn get_by_pair(&self, pair: &str) -> Result, StorageError>; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | async fn count(&self) -> Result; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `NotFound` and `InvalidData` are never constructed [INFO] [stdout] --> src/storage/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum StorageError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 40 | NotFound(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | InvalidData(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StorageError` 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 `generate_unique_hash` is never used [INFO] [stdout] --> src/storage/sqlite.rs:110:4 [INFO] [stdout] | [INFO] [stdout] 110 | fn generate_unique_hash(opp: &Opportunity) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_opportunity_row` is never used [INFO] [stdout] --> src/storage/sqlite.rs:259:4 [INFO] [stdout] | [INFO] [stdout] 259 | fn parse_opportunity_row(row: &sqlx::sqlite::SqliteRow) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InvalidConfig` and `Provider` are never constructed [INFO] [stdout] --> src/detector/mod.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum DetectorError { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 21 | InvalidConfig(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | Provider(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DetectorError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.43s [INFO] running `Command { std: "docker" "inspect" "9b6e764d31a53f788193e198b8481dcdf8ff318149565a9456d9aae2603d83e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9b6e764d31a53f788193e198b8481dcdf8ff318149565a9456d9aae2603d83e5", kill_on_drop: false }` [INFO] [stdout] 9b6e764d31a53f788193e198b8481dcdf8ff318149565a9456d9aae2603d83e5