[INFO] cloning repository https://github.com/Bwizrd/pattern_detector [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Bwizrd/pattern_detector" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBwizrd%2Fpattern_detector", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBwizrd%2Fpattern_detector'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 751012581dab1fdad3e35959874cf4a59cab2737 [INFO] checking Bwizrd/pattern_detector against master#f21fbac535ab2c3bc50db20547f4d48477357103 for pr-143193 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBwizrd%2Fpattern_detector" "/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/Bwizrd/pattern_detector [INFO] finished tweaking git repo https://github.com/Bwizrd/pattern_detector [INFO] tweaked toml for git repo https://github.com/Bwizrd/pattern_detector written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Bwizrd/pattern_detector on toolchain f21fbac535ab2c3bc50db20547f4d48477357103 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f21fbac535ab2c3bc50db20547f4d48477357103" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Bwizrd/pattern_detector 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" "+f21fbac535ab2c3bc50db20547f4d48477357103" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded log-mdc v0.1.0 [INFO] [stderr] Downloaded tracing-appender v0.2.3 [INFO] [stderr] Downloaded destructure_traitobject v0.2.0 [INFO] [stderr] Downloaded unsafe-any-ors v1.0.0 [INFO] [stderr] Downloaded typemap-ors v1.0.0 [INFO] [stderr] Downloaded synthez v0.3.1 [INFO] [stderr] Downloaded peg-runtime v0.6.3 [INFO] [stderr] Downloaded synthez-codegen v0.3.1 [INFO] [stderr] Downloaded lazy-regex-proc_macros v3.4.1 [INFO] [stderr] Downloaded go-parse-duration v0.1.1 [INFO] [stderr] Downloaded peg v0.6.3 [INFO] [stderr] Downloaded ctrlc v3.4.7 [INFO] [stderr] Downloaded typed-builder v0.15.2 [INFO] [stderr] Downloaded synthez-core v0.3.1 [INFO] [stderr] Downloaded influxdb v0.7.2 [INFO] [stderr] Downloaded peg-macros v0.6.3 [INFO] [stderr] Downloaded zstd-safe v7.2.3 [INFO] [stderr] Downloaded actix-cors v0.6.5 [INFO] [stderr] Downloaded influxdb2 v0.5.2 [INFO] [stderr] Downloaded cucumber-codegen v0.21.1 [INFO] [stderr] Downloaded cucumber-expressions v0.3.0 [INFO] [stderr] Downloaded gherkin v0.14.0 [INFO] [stderr] Downloaded log4rs v1.3.0 [INFO] [stderr] Downloaded smawk v0.3.2 [INFO] [stderr] Downloaded inventory v0.3.19 [INFO] [stderr] Downloaded cucumber v0.21.1 [INFO] [stderr] Downloaded redis v0.24.0 [INFO] [stderr] Downloaded sealed v0.5.0 [INFO] [stderr] Downloaded smart-default v0.7.1 [INFO] [stderr] Downloaded ratatui v0.24.0 [INFO] [stderr] Downloaded lazy-regex v3.4.1 [INFO] [stderr] Downloaded is-terminal v0.4.15 [INFO] [stderr] Downloaded influxdb2-derive v0.1.1 [INFO] [stderr] Downloaded typed-builder-macro v0.15.2 [INFO] [stderr] Downloaded thread-id v4.2.2 [INFO] [stderr] Downloaded influxdb2-structmap v0.2.0 [INFO] [stderr] Downloaded zstd-sys v2.0.14+zstd.1.5.7 [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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+f21fbac535ab2c3bc50db20547f4d48477357103" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] aa7f468b68d42156b55ad884a82e2b6066cbf59a2ef161cd9135d9e1f8e8f71c [INFO] running `Command { std: "docker" "start" "-a" "aa7f468b68d42156b55ad884a82e2b6066cbf59a2ef161cd9135d9e1f8e8f71c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "aa7f468b68d42156b55ad884a82e2b6066cbf59a2ef161cd9135d9e1f8e8f71c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa7f468b68d42156b55ad884a82e2b6066cbf59a2ef161cd9135d9e1f8e8f71c", kill_on_drop: false }` [INFO] [stdout] aa7f468b68d42156b55ad884a82e2b6066cbf59a2ef161cd9135d9e1f8e8f71c [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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+f21fbac535ab2c3bc50db20547f4d48477357103" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] eba12e91aa805e4be5ffbbb6e261d32a6886b6594d1403beed22e5b28278f106 [INFO] running `Command { std: "docker" "start" "-a" "eba12e91aa805e4be5ffbbb6e261d32a6886b6594d1403beed22e5b28278f106", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.93 [INFO] [stderr] Compiling unicode-ident v1.0.17 [INFO] [stderr] Compiling libc v0.2.172 [INFO] [stderr] Compiling serde v1.0.218 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Checking smallvec v1.14.0 [INFO] [stderr] Checking pin-project-lite v0.2.16 [INFO] [stderr] Checking bytes v1.10.0 [INFO] [stderr] Checking itoa v1.0.14 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Checking once_cell v1.20.3 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking bitflags v2.8.0 [INFO] [stderr] Checking fnv v1.0.7 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling pkg-config v0.3.31 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Compiling httparse v1.10.0 [INFO] [stderr] Checking writeable v0.5.5 [INFO] [stderr] Checking allocator-api2 v0.2.21 [INFO] [stderr] Checking litemap v0.7.4 [INFO] [stderr] Checking foldhash v0.1.5 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking icu_locid_transform_data v1.5.0 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking percent-encoding v2.3.1 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Checking icu_properties_data v1.5.0 [INFO] [stderr] Checking utf8_iter v1.0.4 [INFO] [stderr] Checking utf16_iter v1.0.5 [INFO] [stderr] Compiling heck v0.4.1 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Checking icu_normalizer_data v1.5.0 [INFO] [stderr] Checking ryu v1.0.19 [INFO] [stderr] Checking write16 v1.0.0 [INFO] [stderr] Checking httpdate v1.0.3 [INFO] [stderr] Checking form_urlencoded v1.2.1 [INFO] [stderr] Checking tower-service v0.3.3 [INFO] [stderr] Checking hashbrown v0.15.2 [INFO] [stderr] Checking generic-array v0.14.7 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking foreign-types-shared v0.1.1 [INFO] [stderr] Compiling openssl v0.10.71 [INFO] [stderr] Checking foreign-types v0.3.2 [INFO] [stderr] Checking http v1.3.1 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling serde_json v1.0.139 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking untrusted v0.9.0 [INFO] [stderr] Compiling convert_case v0.4.0 [INFO] [stderr] Compiling quote v1.0.38 [INFO] [stderr] Checking openssl-probe v0.1.6 [INFO] [stderr] Checking mime v0.3.17 [INFO] [stderr] Checking indexmap v2.7.1 [INFO] [stderr] Checking try-lock v0.2.5 [INFO] [stderr] Compiling jobserver v0.1.32 [INFO] [stderr] Compiling rustversion v1.0.19 [INFO] [stderr] Compiling syn v2.0.98 [INFO] [stderr] Compiling either v1.14.0 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling cc v1.2.15 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking want v0.3.1 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking alloc-no-stdlib v2.0.4 [INFO] [stderr] Checking local-waker v0.1.4 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Checking powerfmt v0.2.0 [INFO] [stderr] Compiling zstd-safe v7.2.3 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Compiling time-core v0.1.2 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Compiling num-conv v0.1.0 [INFO] [stderr] Checking deranged v0.3.11 [INFO] [stderr] Checking alloc-stdlib v0.2.2 [INFO] [stderr] Compiling time-macros v0.2.19 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Compiling ahash v0.8.11 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Compiling log v0.4.26 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Checking adler2 v2.0.0 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Checking linux-raw-sys v0.4.15 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Checking iana-time-zone v0.1.61 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Checking anstyle-parse v0.2.6 [INFO] [stderr] Checking miniz_oxide v0.8.5 [INFO] [stderr] Checking brotli-decompressor v4.0.2 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking actix-utils v3.0.1 [INFO] [stderr] Checking actix-service v2.0.2 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking socket2 v0.5.8 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking bytestring v1.4.0 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking bstr v1.11.3 [INFO] [stderr] Compiling cookie v0.16.2 [INFO] [stderr] Checking anstyle v1.0.10 [INFO] [stderr] Compiling peg-runtime v0.6.3 [INFO] [stderr] Checking tower-layer v0.3.3 [INFO] [stderr] Compiling anyhow v1.0.96 [INFO] [stderr] Compiling bytecount v0.6.8 [INFO] [stderr] Compiling doc-comment v0.3.3 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking time v0.3.37 [INFO] [stderr] Checking regex-syntax v0.6.29 [INFO] [stderr] Checking unicode-width v0.1.14 [INFO] [stderr] Checking base64 v0.21.7 [INFO] [stderr] Checking is_terminal_polyfill v1.70.1 [INFO] [stderr] Checking same-file v1.0.6 [INFO] [stderr] Checking anstyle-query v1.1.2 [INFO] [stderr] Compiling regex-lite v0.1.6 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling openssl-sys v0.9.106 [INFO] [stderr] Compiling ring v0.17.11 [INFO] [stderr] Compiling zstd-sys v2.0.14+zstd.1.5.7 [INFO] [stderr] Compiling parking_lot_core v0.8.6 [INFO] [stderr] Checking colorchoice v1.0.3 [INFO] [stderr] Checking walkdir v2.5.0 [INFO] [stderr] Checking anstream v0.6.18 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Compiling peg-macros v0.6.3 [INFO] [stderr] Checking rustls-pemfile v1.0.4 [INFO] [stderr] Checking flate2 v1.0.35 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Compiling nom_locate v4.2.0 [INFO] [stderr] Checking terminal_size v0.4.1 [INFO] [stderr] Checking brotli v6.0.0 [INFO] [stderr] Checking local-channel v0.1.5 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking instant v0.1.13 [INFO] [stderr] Checking clap_lex v0.7.4 [INFO] [stderr] Checking webpki-roots v0.25.4 [INFO] [stderr] Compiling getrandom v0.3.1 [INFO] [stderr] Compiling synstructure v0.13.1 [INFO] [stderr] Checking unicode-linebreak v0.1.5 [INFO] [stderr] Checking base64 v0.22.1 [INFO] [stderr] Checking sync_wrapper v1.0.2 [INFO] [stderr] Checking overload v0.1.1 [INFO] [stderr] Checking strsim v0.11.1 [INFO] [stderr] Checking smawk v0.3.2 [INFO] [stderr] Compiling regex-syntax v0.7.5 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Checking ipnet v2.11.0 [INFO] [stderr] Checking language-tags v0.3.2 [INFO] [stderr] Checking destructure_traitobject v0.2.0 [INFO] [stderr] Checking regex-automata v0.1.10 [INFO] [stderr] Checking sync_wrapper v0.1.2 [INFO] [stderr] Checking humantime v2.1.0 [INFO] [stderr] Checking peg v0.6.3 [INFO] [stderr] Checking unsafe-any-ors v1.0.0 [INFO] [stderr] Checking textwrap v0.16.1 [INFO] [stderr] Checking clap_builder v4.5.31 [INFO] [stderr] Checking nu-ansi-term v0.46.0 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling itertools v0.10.5 [INFO] [stderr] Checking ordered-float v2.10.1 [INFO] [stderr] Checking ordered-float v3.9.2 [INFO] [stderr] Checking csv-core v0.1.12 [INFO] [stderr] Checking thread_local v1.1.8 [INFO] [stderr] Checking matchers v0.1.0 [INFO] [stderr] Compiling inflections v1.1.1 [INFO] [stderr] Checking impl-more v0.1.9 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Checking unsafe-libyaml v0.2.11 [INFO] [stderr] Checking unicode-width v0.2.0 [INFO] [stderr] Checking utf-8 v0.7.6 [INFO] [stderr] Checking secrecy v0.8.0 [INFO] [stderr] Checking parking_lot v0.11.2 [INFO] [stderr] Checking console v0.15.10 [INFO] [stderr] Checking typemap-ors v1.0.0 [INFO] [stderr] Checking thread-id v4.2.2 [INFO] [stderr] Checking is-terminal v0.4.15 [INFO] [stderr] Checking socket2 v0.4.10 [INFO] [stderr] Checking itertools v0.11.0 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Compiling serde_derive v1.0.218 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling zerofrom-derive v0.1.5 [INFO] [stderr] Compiling yoke-derive v0.7.5 [INFO] [stderr] Compiling tracing-attributes v0.1.28 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling derive_more v0.99.19 [INFO] [stderr] Compiling sealed v0.5.0 [INFO] [stderr] Compiling typed-builder-macro v0.15.2 [INFO] [stderr] Compiling snafu-derive v0.6.10 [INFO] [stderr] Compiling lazy-regex-proc_macros v3.4.1 [INFO] [stderr] Compiling strum_macros v0.25.3 [INFO] [stderr] Compiling synthez-core v0.3.1 [INFO] [stderr] Compiling clap_derive v4.5.28 [INFO] [stderr] Checking zerofrom v0.1.5 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking yoke v0.7.5 [INFO] [stderr] Checking zerovec v0.10.4 [INFO] [stderr] Checking typed-builder v0.15.2 [INFO] [stderr] Compiling pin-project-internal v1.1.9 [INFO] [stderr] Compiling actix-macros v0.2.4 [INFO] [stderr] Compiling async-trait v0.1.88 [INFO] [stderr] Compiling synthez-codegen v0.3.1 [INFO] [stderr] Checking lazy-regex v3.4.1 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Compiling influxdb2-derive v0.1.1 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Compiling synthez v0.3.1 [INFO] [stderr] Checking tinystr v0.7.6 [INFO] [stderr] Checking icu_collections v1.5.0 [INFO] [stderr] Compiling smart-default v0.7.1 [INFO] [stderr] Checking snafu v0.6.10 [INFO] [stderr] Checking strum v0.25.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking icu_locid v1.5.0 [INFO] [stderr] Checking lru v0.12.5 [INFO] [stderr] Checking combine v4.6.7 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking pin-project v1.1.9 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking fallible-iterator v0.2.0 [INFO] [stderr] Checking inventory v0.3.19 [INFO] [stderr] Checking drain_filter_polyfill v0.1.3 [INFO] [stderr] Checking arc-swap v1.7.1 [INFO] [stderr] Checking matchit v0.7.3 [INFO] [stderr] Checking cassowary v0.3.0 [INFO] [stderr] Checking linked-hash-map v0.5.6 [INFO] [stderr] Compiling indoc v2.0.6 [INFO] [stderr] Checking log-mdc v0.1.0 [INFO] [stderr] Checking clap v4.5.31 [INFO] [stderr] Checking unicode-segmentation v1.12.0 [INFO] [stderr] Checking go-parse-duration v0.1.1 [INFO] [stderr] Checking sha1_smol v1.0.1 [INFO] [stderr] Checking ctrlc v3.4.7 [INFO] [stderr] Checking uuid v1.17.0 [INFO] [stderr] Checking tower-http v0.5.2 [INFO] [stderr] Checking sha2 v0.10.8 [INFO] [stderr] Checking icu_provider v1.5.0 [INFO] [stderr] Checking dotenv v0.15.0 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Checking dotenvy v0.15.7 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking icu_locid_transform v1.5.0 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Compiling cucumber-expressions v0.3.0 [INFO] [stderr] Checking icu_properties v1.5.1 [INFO] [stderr] Compiling cucumber-codegen v0.21.1 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking chrono v0.4.39 [INFO] [stderr] Checking serde-value v0.7.0 [INFO] [stderr] Checking csv v1.3.1 [INFO] [stderr] Checking serde_path_to_error v0.1.17 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking globset v0.4.16 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Checking icu_normalizer v1.5.0 [INFO] [stderr] Compiling actix-router v0.5.3 [INFO] [stderr] Checking tokio v1.43.0 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Checking crossterm v0.27.0 [INFO] [stderr] Checking ignore v0.4.23 [INFO] [stderr] Compiling actix-web-codegen v4.3.0 [INFO] [stderr] Checking influxdb2-structmap v0.2.0 [INFO] [stderr] Checking log4rs v1.3.0 [INFO] [stderr] Checking globwalk v0.9.1 [INFO] [stderr] Checking idna_adapter v1.2.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking ratatui v0.24.0 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking tracing-appender v0.2.3 [INFO] [stderr] Compiling gherkin v0.14.0 [INFO] [stderr] Checking tungstenite v0.21.0 [INFO] [stderr] Checking redis v0.24.0 [INFO] [stderr] Checking cucumber v0.21.1 [INFO] [stderr] Checking tokio-util v0.7.13 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking actix-rt v2.10.0 [INFO] [stderr] Checking hyper v1.6.0 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking tokio-tungstenite v0.21.0 [INFO] [stderr] Checking actix-server v2.5.0 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking actix-codec v0.5.2 [INFO] [stderr] Checking hyper-util v0.1.14 [INFO] [stderr] Checking axum v0.7.9 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking actix-http v3.9.0 [INFO] [stderr] Checking actix-web v4.9.0 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking hyper-rustls v0.24.2 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking influxdb2 v0.5.2 [INFO] [stderr] Checking influxdb v0.7.2 [INFO] [stderr] Checking actix-cors v0.6.5 [INFO] [stderr] Checking pattern_detector v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `Responder` and `get` [INFO] [stdout] --> src/api/get_zone_by_id.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use actix_web::{get, web, HttpResponse, Responder}; [INFO] [stdout] | ^^^ ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/api/get_zone_by_id.rs:9:26 [INFO] [stdout] | [INFO] [stdout] 9 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `web` [INFO] [stdout] --> src/api/latest_zones_handler.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use actix_web::{web, HttpResponse, Responder}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/api/test_trade_handler.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::json` [INFO] [stdout] --> src/api/test_trade_handler.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use serde_json::json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/cache/minimal_zone_cache.rs:2:18 [INFO] [stdout] | [INFO] [stdout] 2 | use log::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/cache/zone_cache_writer.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Utc` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:4:24 [INFO] [stdout] | [INFO] [stdout] 4 | use chrono::{DateTime, Utc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> src/zones/zone_detection.rs:7:18 [INFO] [stdout] | [INFO] [stdout] 7 | use log::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/zones/zone_detection.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/zone_interactions.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | use log::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/errors.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Responder` and `get` [INFO] [stdout] --> src/api/get_zone_by_id.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use actix_web::{get, web, HttpResponse, Responder}; [INFO] [stdout] | ^^^ ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/api/get_zone_by_id.rs:9:26 [INFO] [stdout] | [INFO] [stdout] 9 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `web` [INFO] [stdout] --> src/api/latest_zones_handler.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use actix_web::{web, HttpResponse, Responder}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/api/test_trade_handler.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::json` [INFO] [stdout] --> src/api/test_trade_handler.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use serde_json::json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/cache/minimal_zone_cache.rs:2:18 [INFO] [stdout] | [INFO] [stdout] 2 | use log::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/cache/zone_cache_writer.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Utc` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:4:24 [INFO] [stdout] | [INFO] [stdout] 4 | use chrono::{DateTime, Utc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> src/zones/zone_detection.rs:7:18 [INFO] [stdout] | [INFO] [stdout] 7 | use log::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/zones/zone_detection.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/zone_interactions.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | use log::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/errors.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `caller_task_id` [INFO] [stdout] --> src/api/detect.rs:618:21 [INFO] [stdout] | [INFO] [stdout] 618 | let caller_task_id = format!("bulk_task_{}/{}", current_symbol, current_timeframe); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_caller_task_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `caller_task_id` [INFO] [stdout] --> src/api/detect.rs:618:21 [INFO] [stdout] | [INFO] [stdout] 618 | let caller_task_id = format!("bulk_task_{}/{}", current_symbol, current_timeframe); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_caller_task_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:535:13 [INFO] [stdout] | [INFO] [stdout] 535 | let mut blocked_set = BLOCKED_ZONES.lock().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:535:13 [INFO] [stdout] | [INFO] [stdout] 535 | let mut blocked_set = BLOCKED_ZONES.lock().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol` [INFO] [stdout] --> src/trading/trade_event_logger.rs:267:17 [INFO] [stdout] | [INFO] [stdout] 267 | let symbol = parts[0]; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol` [INFO] [stdout] --> src/trading/trade_event_logger.rs:267:17 [INFO] [stdout] | [INFO] [stdout] 267 | let symbol = parts[0]; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_still_valid` is never read [INFO] [stdout] --> src/api/detect.rs:1393:17 [INFO] [stdout] | [INFO] [stdout] 1393 | is_still_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_still_valid` is never read [INFO] [stdout] --> src/api/detect.rs:1400:17 [INFO] [stdout] | [INFO] [stdout] 1400 | is_still_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_still_valid` is never read [INFO] [stdout] --> src/api/detect.rs:1393:17 [INFO] [stdout] | [INFO] [stdout] 1393 | is_still_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_still_valid` is never read [INFO] [stdout] --> src/api/detect.rs:1400:17 [INFO] [stdout] | [INFO] [stdout] 1400 | is_still_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `entry_price` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:304:9 [INFO] [stdout] | [INFO] [stdout] 304 | entry_price: f64, entry_time: Option<&str>, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entry_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `zone_high` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:305:9 [INFO] [stdout] | [INFO] [stdout] 305 | zone_high: f64, zone_low: f64, zone_time: Option<&str> [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_zone_high` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `zone_low` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:305:25 [INFO] [stdout] | [INFO] [stdout] 305 | zone_high: f64, zone_low: f64, zone_time: Option<&str> [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_zone_low` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `entry_price` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:304:9 [INFO] [stdout] | [INFO] [stdout] 304 | entry_price: f64, entry_time: Option<&str>, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entry_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `zone_high` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:305:9 [INFO] [stdout] | [INFO] [stdout] 305 | zone_high: f64, zone_low: f64, zone_time: Option<&str> [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_zone_high` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `zone_low` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:305:25 [INFO] [stdout] | [INFO] [stdout] 305 | zone_high: f64, zone_low: f64, zone_time: Option<&str> [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_zone_low` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end_idx` [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:435:89 [INFO] [stdout] | [INFO] [stdout] 435 | fn detect_zone_before_multi_candle(&self, candles: &[CandleData], start_idx: usize, end_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_end_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `current_score` [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:312:25 [INFO] [stdout] | [INFO] [stdout] 312 | let current_score = m["strength_score"].as_f64().unwrap_or(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_score` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `existing_score` [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:313:25 [INFO] [stdout] | [INFO] [stdout] 313 | let existing_score = existing["strength_score"].as_f64().unwrap_or(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_existing_score` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end_idx` [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:435:89 [INFO] [stdout] | [INFO] [stdout] 435 | fn detect_zone_before_multi_candle(&self, candles: &[CandleData], start_idx: usize, end_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_end_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `current_score` [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:312:25 [INFO] [stdout] | [INFO] [stdout] 312 | let current_score = m["strength_score"].as_f64().unwrap_or(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_score` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `existing_score` [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:313:25 [INFO] [stdout] | [INFO] [stdout] 313 | let existing_score = existing["strength_score"].as_f64().unwrap_or(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_existing_score` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `losing_trades`, `win_rate`, and `profit_factor` are never read [INFO] [stdout] --> src/api/optimize_handler.rs:168:5 [INFO] [stdout] | [INFO] [stdout] 165 | struct TradeTaskSummary { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 168 | losing_trades: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 169 | total_pnl_pips: f64, [INFO] [stdout] 170 | win_rate: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 171 | profit_factor: f64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeTaskSummary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `proximity_alert_cache` is never read [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct NewRealTimeZoneMonitor { [INFO] [stdout] | ---------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 64 | proximity_alert_cache: Arc>>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FiftyPercentBodyCandleRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/FiftyPercentBodyCandle.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct FiftyPercentBodyCandleRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BigBarRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/big_bar.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BigBarRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BullishEngulfingRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/bullish_engulfing.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct BullishEngulfingRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CombinedDemandRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct CombinedDemandRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:116:8 [INFO] [stdout] | [INFO] [stdout] 114 | impl CombinedDemandRecognizer { [INFO] [stdout] | ----------------------------- methods in this implementation [INFO] [stdout] 115 | /// Combine demand moves and zones into a single list for display [INFO] [stdout] 116 | fn combine_moves_and_zones(&self, moves: Vec, zones: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | fn calculate_atr(&self, candles: &[CandleData], period: usize) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | fn detect_significant_moves(&self, candles: &[CandleData], atr: f64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 359 | fn find_demand_zones(&self, candles: &[CandleData], demand_moves: &[Value]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | fn detect_zone_before_single_candle(&self, candles: &[CandleData], move_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | fn detect_zone_before_multi_candle(&self, candles: &[CandleData], start_idx: usize, end_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 479 | fn detect_swing_low_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn detect_base_consolidation_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Optio... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 626 | fn detect_dbr_pattern_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 702 | fn filter_overlapping_zones(&self, zones: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConsolidationRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/consolidation.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct ConsolidationRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_consolidation_zones` and `find_consolidation_starting_at` are never used [INFO] [stdout] --> src/zones/patterns/consolidation.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl ConsolidationRecognizer { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] 108 | pub fn find_consolidation_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn find_consolidation_starting_at(&self, candles: &[CandleData], start_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DemandMoveAwayRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct DemandMoveAwayRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `calculate_atr` and `detect_significant_moves` are never used [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:101:8 [INFO] [stdout] | [INFO] [stdout] 99 | impl DemandMoveAwayRecognizer { [INFO] [stdout] | ----------------------------- methods in this implementation [INFO] [stdout] 100 | /// Calculate Average True Range (ATR) for volatility reference [INFO] [stdout] 101 | fn calculate_atr(&self, candles: &[CandleData], period: usize) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn detect_significant_moves(&self, candles: &[CandleData], atr: f64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FlexibleDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/demand_zone.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct FlexibleDemandZoneRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `detect_swing_low_zones`, `detect_rejection_candle_zones`, `detect_consolidation_breakout_zones`, `detect_range_test_zones`, and `count_zone_retests` are never used [INFO] [stdout] --> src/zones/patterns/demand_zone.rs:187:8 [INFO] [stdout] | [INFO] [stdout] 185 | impl FlexibleDemandZoneRecognizer { [INFO] [stdout] | --------------------------------- methods in this implementation [INFO] [stdout] 186 | /// Detect swing low reversals that form demand zones [INFO] [stdout] 187 | fn detect_swing_low_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | fn detect_rejection_candle_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 407 | fn detect_consolidation_breakout_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 527 | fn detect_range_test_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 639 | fn count_zone_retests(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, zone_high: f64, zone_low: f64) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DropBaseRallyRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/drop_base_rally.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct DropBaseRallyRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/drop_base_rally.rs:161:8 [INFO] [stdout] | [INFO] [stdout] 159 | impl DropBaseRallyRecognizer { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] 160 | /// Calculate the body to wick ratio of a candle [INFO] [stdout] 161 | fn calculate_body_to_wick_ratio(&self, candle: &CandleData) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | fn is_bearish_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | fn is_bullish_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn is_drop_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | fn is_rally_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | fn is_base_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 200 | fn find_dbr_pattern_starting_at(&self, candles: &[CandleData], start_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | fn calculate_pattern_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PinBarRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/pin_bar.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct PinBarRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EnhancedSupplyDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_demand.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct EnhancedSupplyDemandZoneRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/supply_demand.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 122 | impl EnhancedSupplyDemandZoneRecognizer { [INFO] [stdout] | --------------------------------------- methods in this implementation [INFO] [stdout] 123 | /// Detect the original pattern (bearish/bullish sequence) [INFO] [stdout] 124 | fn detect_original_pattern( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | fn detect_swing_pattern( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 401 | fn is_swing_low(&self, candles: &[CandleData], idx: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 415 | fn is_swing_high(&self, candles: &[CandleData], idx: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | fn calculate_swing_depth(&self, candles: &[CandleData], idx: usize, swing_type: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | fn calculate_demand_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 503 | fn calculate_supply_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | fn detect_rbr_pattern(&self, candles: &[CandleData], demand_zones: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 790 | fn detect_momentum_shift_zones(&self, candles: &[CandleData], demand_zones: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1079 | fn apply_quality_filters(&self, zones: Vec, _zone_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1120 | fn filter_overlapping_zones(&self, zones: Vec, zone_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1175 | fn zone_strength_label(&self, quality_score: f64) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SimpleSupplyDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_demand_zone_simple.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SimpleSupplyDemandZoneRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SupplyZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_zone.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SupplyZoneRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `FiftyPercentBeforeBigBar` should have a snake case name [INFO] [stdout] --> src/zones/patterns/mod.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | mod FiftyPercentBeforeBigBar; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_percent_before_big_bar` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `FiftyPercentBodyCandle` should have a snake case name [INFO] [stdout] --> src/zones/patterns/mod.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | mod FiftyPercentBodyCandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_percent_body_candle` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `losing_trades`, `win_rate`, and `profit_factor` are never read [INFO] [stdout] --> src/api/optimize_handler.rs:168:5 [INFO] [stdout] | [INFO] [stdout] 165 | struct TradeTaskSummary { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 168 | losing_trades: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 169 | total_pnl_pips: f64, [INFO] [stdout] 170 | win_rate: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 171 | profit_factor: f64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeTaskSummary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `proximity_alert_cache` is never read [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct NewRealTimeZoneMonitor { [INFO] [stdout] | ---------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 64 | proximity_alert_cache: Arc>>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FiftyPercentBodyCandleRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/FiftyPercentBodyCandle.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct FiftyPercentBodyCandleRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BigBarRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/big_bar.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BigBarRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BullishEngulfingRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/bullish_engulfing.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct BullishEngulfingRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CombinedDemandRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct CombinedDemandRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:116:8 [INFO] [stdout] | [INFO] [stdout] 114 | impl CombinedDemandRecognizer { [INFO] [stdout] | ----------------------------- methods in this implementation [INFO] [stdout] 115 | /// Combine demand moves and zones into a single list for display [INFO] [stdout] 116 | fn combine_moves_and_zones(&self, moves: Vec, zones: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | fn calculate_atr(&self, candles: &[CandleData], period: usize) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | fn detect_significant_moves(&self, candles: &[CandleData], atr: f64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 359 | fn find_demand_zones(&self, candles: &[CandleData], demand_moves: &[Value]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | fn detect_zone_before_single_candle(&self, candles: &[CandleData], move_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | fn detect_zone_before_multi_candle(&self, candles: &[CandleData], start_idx: usize, end_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 479 | fn detect_swing_low_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn detect_base_consolidation_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Optio... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 626 | fn detect_dbr_pattern_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 702 | fn filter_overlapping_zones(&self, zones: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConsolidationRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/consolidation.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct ConsolidationRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_consolidation_zones` and `find_consolidation_starting_at` are never used [INFO] [stdout] --> src/zones/patterns/consolidation.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl ConsolidationRecognizer { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] 108 | pub fn find_consolidation_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn find_consolidation_starting_at(&self, candles: &[CandleData], start_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DemandMoveAwayRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct DemandMoveAwayRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `calculate_atr` and `detect_significant_moves` are never used [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:101:8 [INFO] [stdout] | [INFO] [stdout] 99 | impl DemandMoveAwayRecognizer { [INFO] [stdout] | ----------------------------- methods in this implementation [INFO] [stdout] 100 | /// Calculate Average True Range (ATR) for volatility reference [INFO] [stdout] 101 | fn calculate_atr(&self, candles: &[CandleData], period: usize) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn detect_significant_moves(&self, candles: &[CandleData], atr: f64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FlexibleDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/demand_zone.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct FlexibleDemandZoneRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `detect_swing_low_zones`, `detect_rejection_candle_zones`, `detect_consolidation_breakout_zones`, `detect_range_test_zones`, and `count_zone_retests` are never used [INFO] [stdout] --> src/zones/patterns/demand_zone.rs:187:8 [INFO] [stdout] | [INFO] [stdout] 185 | impl FlexibleDemandZoneRecognizer { [INFO] [stdout] | --------------------------------- methods in this implementation [INFO] [stdout] 186 | /// Detect swing low reversals that form demand zones [INFO] [stdout] 187 | fn detect_swing_low_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | fn detect_rejection_candle_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 407 | fn detect_consolidation_breakout_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 527 | fn detect_range_test_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 639 | fn count_zone_retests(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, zone_high: f64, zone_low: f64) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DropBaseRallyRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/drop_base_rally.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct DropBaseRallyRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/drop_base_rally.rs:161:8 [INFO] [stdout] | [INFO] [stdout] 159 | impl DropBaseRallyRecognizer { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] 160 | /// Calculate the body to wick ratio of a candle [INFO] [stdout] 161 | fn calculate_body_to_wick_ratio(&self, candle: &CandleData) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | fn is_bearish_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | fn is_bullish_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn is_drop_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | fn is_rally_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | fn is_base_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 200 | fn find_dbr_pattern_starting_at(&self, candles: &[CandleData], start_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | fn calculate_pattern_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PinBarRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/pin_bar.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct PinBarRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RallyRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/rally.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct RallyRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EnhancedSupplyDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_demand.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct EnhancedSupplyDemandZoneRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/supply_demand.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 122 | impl EnhancedSupplyDemandZoneRecognizer { [INFO] [stdout] | --------------------------------------- methods in this implementation [INFO] [stdout] 123 | /// Detect the original pattern (bearish/bullish sequence) [INFO] [stdout] 124 | fn detect_original_pattern( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | fn detect_swing_pattern( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 401 | fn is_swing_low(&self, candles: &[CandleData], idx: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 415 | fn is_swing_high(&self, candles: &[CandleData], idx: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | fn calculate_swing_depth(&self, candles: &[CandleData], idx: usize, swing_type: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | fn calculate_demand_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 503 | fn calculate_supply_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | fn detect_rbr_pattern(&self, candles: &[CandleData], demand_zones: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 790 | fn detect_momentum_shift_zones(&self, candles: &[CandleData], demand_zones: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1079 | fn apply_quality_filters(&self, zones: Vec, _zone_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1120 | fn filter_overlapping_zones(&self, zones: Vec, zone_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1175 | fn zone_strength_label(&self, quality_score: f64) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SimpleSupplyDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_demand_zone_simple.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SimpleSupplyDemandZoneRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SupplyZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_zone.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SupplyZoneRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `FiftyPercentBeforeBigBar` should have a snake case name [INFO] [stdout] --> src/zones/patterns/mod.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | mod FiftyPercentBeforeBigBar; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_percent_before_big_bar` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `FiftyPercentBodyCandle` should have a snake case name [INFO] [stdout] --> src/zones/patterns/mod.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | mod FiftyPercentBodyCandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_percent_body_candle` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Weekday` [INFO] [stdout] --> tests/optimization/html_reporter_advanced.rs:4:29 [INFO] [stdout] | [INFO] [stdout] 4 | use chrono::{DateTime, Utc, Weekday}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> tests/optimization/html_reporter_advanced.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pattern_detector::types::CandleData` [INFO] [stdout] --> tests/optimization/performance_scanner.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use pattern_detector::types::CandleData; // Assuming CandleData from pattern_detector::types [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Datelike`, `Timelike`, and `Weekday` [INFO] [stdout] --> tests/optimization/performance_scanner.rs:11:29 [INFO] [stdout] | [INFO] [stdout] 11 | use chrono::{DateTime, Utc, Weekday, Timelike, Datelike}; // Add all chrono traits used [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/bin/trade_analyzer/zone_fetcher.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use log::{info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/bin/trade_analyzer/zone_fetcher.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use log::{info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exit_price` [INFO] [stdout] --> tests/backtest.rs:168:22 [INFO] [stdout] | [INFO] [stdout] 168 | if let (Some(exit_price), Some(exit_time), Some(pl_pips), Some(exit_reason)) = ( [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exit_price` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/bin/dashboard/main.rs:13:15 [INFO] [stdout] | [INFO] [stdout] 13 | use tracing::{error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> tests/zone_consistency_tests.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | let config = match TestConfig::from_env() { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `touch_count` [INFO] [stdout] --> tests/zone_consistency_tests.rs:544:21 [INFO] [stdout] | [INFO] [stdout] 544 | let (is_active, touch_count, bars_active) = calculate_zone_activity_test( [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_touch_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bars_active_demand` [INFO] [stdout] --> tests/zone_consistency_tests.rs:556:48 [INFO] [stdout] | [INFO] [stdout] 556 | let (is_active_demand, touch_count_demand, bars_active_demand) = calculate_zone_activity_test( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bars_active_demand` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `influx_host`, `influx_org`, `influx_token`, `influx_bucket`, `write_bucket`, and `zone_measurement` are never read [INFO] [stdout] --> tests/zone_consistency_tests.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | struct TestConfig { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 15 | influx_host: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 16 | influx_org: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 17 | influx_token: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 18 | influx_bucket: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 19 | write_bucket: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 20 | zone_measurement: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/bin/dashboard/main.rs:13:15 [INFO] [stdout] | [INFO] [stdout] 13 | use tracing::{error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/multithreaded_optimization.rs:136:21 [INFO] [stdout] | [INFO] [stdout] 136 | let mut cache = candle_cache.lock().await; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/multithreaded_optimization.rs:165:21 [INFO] [stdout] | [INFO] [stdout] 165 | let mut cache = candle_cache.lock().await; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Responder` and `get` [INFO] [stdout] --> src/api/get_zone_by_id.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use actix_web::{get, web, HttpResponse, Responder}; [INFO] [stdout] | ^^^ ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/api/get_zone_by_id.rs:9:26 [INFO] [stdout] | [INFO] [stdout] 9 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `web` [INFO] [stdout] --> src/api/latest_zones_handler.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use actix_web::{web, HttpResponse, Responder}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/api/test_trade_handler.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::json` [INFO] [stdout] --> src/api/test_trade_handler.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use serde_json::json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/cache/minimal_zone_cache.rs:2:18 [INFO] [stdout] | [INFO] [stdout] 2 | use log::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/cache/zone_cache_writer.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/errors.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/handlers.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use log::{info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Utc` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:4:24 [INFO] [stdout] | [INFO] [stdout] 4 | use chrono::{DateTime, Utc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> src/zones/zone_detection.rs:7:18 [INFO] [stdout] | [INFO] [stdout] 7 | use log::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/zones/zone_detection.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `actix_web::http::StatusCode` [INFO] [stdout] --> src/main.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use actix_web::http::StatusCode; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `actix_web::web::Json` [INFO] [stdout] --> src/main.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use actix_web::web::Json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/main.rs:32:26 [INFO] [stdout] | [INFO] [stdout] 32 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `touch_threshold_pips` [INFO] [stdout] --> src/bin/trade_analyzer/zone_proximity_analyzer.rs:136:17 [INFO] [stdout] | [INFO] [stdout] 136 | let touch_threshold_pips = touch_threshold / pip_value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_touch_threshold_pips` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `output_file`, `min_timeframe`, and `debug` are never read [INFO] [stdout] --> src/bin/trade_analyzer/config.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct AnalysisConfig { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 39 | pub output_file: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 40 | pub min_timeframe: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 41 | pub debug: bool, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AnalysisConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_daily_signal_count` is never used [INFO] [stdout] --> src/bin/trade_analyzer/trade_validation.rs:255:12 [INFO] [stdout] | [INFO] [stdout] 116 | impl BacktestTradeValidator { [INFO] [stdout] | --------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 255 | pub fn get_daily_signal_count(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_proximity_events` and `get_zone_summaries` are never used [INFO] [stdout] --> src/bin/trade_analyzer/zone_proximity_analyzer.rs:288:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl ZoneProximityAnalyzer { [INFO] [stdout] | -------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 288 | pub fn get_proximity_events(&self) -> &Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 292 | pub fn get_zone_summaries(&self) -> &HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol` [INFO] [stdout] --> tests/optimization/html_reporter.rs:556:5 [INFO] [stdout] | [INFO] [stdout] 556 | symbol: &str, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `caller_task_id` [INFO] [stdout] --> src/api/detect.rs:618:21 [INFO] [stdout] | [INFO] [stdout] 618 | let caller_task_id = format!("bulk_task_{}/{}", current_symbol, current_timeframe); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_caller_task_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Responder` and `get` [INFO] [stdout] --> src/api/get_zone_by_id.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use actix_web::{get, web, HttpResponse, Responder}; [INFO] [stdout] | ^^^ ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/api/get_zone_by_id.rs:9:26 [INFO] [stdout] | [INFO] [stdout] 9 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `web` [INFO] [stdout] --> src/api/latest_zones_handler.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use actix_web::{web, HttpResponse, Responder}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/api/test_trade_handler.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::json` [INFO] [stdout] --> src/api/test_trade_handler.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use serde_json::json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/cache/minimal_zone_cache.rs:2:18 [INFO] [stdout] | [INFO] [stdout] 2 | use log::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/cache/zone_cache_writer.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/errors.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/handlers.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use log::{info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Utc` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:4:24 [INFO] [stdout] | [INFO] [stdout] 4 | use chrono::{DateTime, Utc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> src/zones/zone_detection.rs:7:18 [INFO] [stdout] | [INFO] [stdout] 7 | use log::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/zones/zone_detection.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `actix_web::http::StatusCode` [INFO] [stdout] --> src/main.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use actix_web::http::StatusCode; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `actix_web::web::Json` [INFO] [stdout] --> src/main.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use actix_web::web::Json; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Serialize` [INFO] [stdout] --> src/main.rs:32:26 [INFO] [stdout] | [INFO] [stdout] 32 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `touch_threshold_pips` [INFO] [stdout] --> src/bin/trade_analyzer/zone_proximity_analyzer.rs:136:17 [INFO] [stdout] | [INFO] [stdout] 136 | let touch_threshold_pips = touch_threshold / pip_value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_touch_threshold_pips` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `output_file`, `min_timeframe`, and `debug` are never read [INFO] [stdout] --> src/bin/trade_analyzer/config.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct AnalysisConfig { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 39 | pub output_file: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 40 | pub min_timeframe: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 41 | pub debug: bool, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AnalysisConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_daily_signal_count` is never used [INFO] [stdout] --> src/bin/trade_analyzer/trade_validation.rs:255:12 [INFO] [stdout] | [INFO] [stdout] 116 | impl BacktestTradeValidator { [INFO] [stdout] | --------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 255 | pub fn get_daily_signal_count(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_proximity_events` and `get_zone_summaries` are never used [INFO] [stdout] --> src/bin/trade_analyzer/zone_proximity_analyzer.rs:288:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl ZoneProximityAnalyzer { [INFO] [stdout] | -------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 288 | pub fn get_proximity_events(&self) -> &Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 292 | pub fn get_zone_summaries(&self) -> &HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `filtered_zones` [INFO] [stdout] --> src/bin/dashboard/ui.rs:785:13 [INFO] [stdout] | [INFO] [stdout] 785 | let filtered_zones: Vec<_> = if app.trading_plan_enabled { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filtered_zones` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol_tf` [INFO] [stdout] --> src/bin/dashboard/ui.rs:813:21 [INFO] [stdout] | [INFO] [stdout] 813 | let symbol_tf = format!("{}/{}", zone.symbol, zone.timeframe); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol_tf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PendingOrdersContainer` is never constructed [INFO] [stdout] --> src/bin/dashboard/app.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct PendingOrdersContainer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `symbol` is never read [INFO] [stdout] --> src/bin/dashboard/app.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct PriceStreamData { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 58 | pub symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PriceStreamData` 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 `previous_triggers` and `redis_client` are never read [INFO] [stdout] --> src/bin/dashboard/app.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct App { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 92 | pub previous_triggers: std::collections::HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub redis_client: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id`, `symbol`, `strategy_type`, `description`, `createdAt`, and `updatedAt` are never read [INFO] [stdout] --> src/bin/dashboard/app.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 139 | pub struct DayTradingStrategy { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 140 | pub id: String, [INFO] [stdout] | ^^ [INFO] [stdout] 141 | pub symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 142 | #[serde(rename = "type")] [INFO] [stdout] 143 | pub strategy_type: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 144 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 145 | pub createdAt: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 146 | pub updatedAt: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DayTradingStrategy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/bin/dashboard/app.rs:486:12 [INFO] [stdout] | [INFO] [stdout] 155 | impl App { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 486 | pub fn create_trade_from_trigger(&mut self, notification: &TradeNotificationDisplay) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1514 | pub async fn clear_notifications_via_api(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1737 | async fn get_current_prices(&self) -> Result, Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1768 | async fn fetch_detailed_prices(&mut self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2263 | pub async fn get_redis_stats(&self) -> (usize, usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2292 | pub fn get_pending_order(&self, zone_id: &str) -> Option<&PendingOrder> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2302 | pub fn get_strategy_code_for_zone( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `description` is never read [INFO] [stdout] --> src/bin/dashboard/notifications.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct RuleValidationResult { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 18 | pub rule_name: String, [INFO] [stdout] 19 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RuleValidationResult` 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 `min_distance_pips` is never read [INFO] [stdout] --> src/bin/dashboard/notifications.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 37 | pub struct TradingConfig { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 51 | pub min_distance_pips: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradingConfig` 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 `render_enhanced_validated_trades` is never used [INFO] [stdout] --> src/bin/dashboard/notifications.rs:883:4 [INFO] [stdout] | [INFO] [stdout] 883 | fn render_enhanced_validated_trades( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `sl` and `tp` are never read [INFO] [stdout] --> src/bin/dashboard/trading_plan.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct TradingSetup { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 9 | pub sl: f64, [INFO] [stdout] | ^^ [INFO] [stdout] 10 | pub tp: f64, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradingSetup` 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 `last_update`, `last_crossing_time`, and `is_zone_active` are never read [INFO] [stdout] --> src/bin/dashboard/types.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct ZoneDistanceInfo { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 33 | pub last_update: DateTime, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub last_crossing_time: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 43 | pub is_zone_active: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ZoneDistanceInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/bin/dashboard/types.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct ValidatedTradeDisplay { [INFO] [stdout] | --------------------- fields in this struct [INFO] [stdout] 62 | pub timestamp: DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 63 | pub symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 64 | pub timeframe: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 65 | pub direction: String, // BUY/SELL [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 66 | pub entry_price: f64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 67 | pub stop_loss: f64, // Hardcoded for now [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 68 | pub take_profit: f64, // Hardcoded for now [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 69 | pub signal_id: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ValidatedTradeDisplay` 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 `Closed` is never constructed [INFO] [stdout] --> src/bin/dashboard/types.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 89 | pub enum TradeStatus { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] 90 | Open, [INFO] [stdout] 91 | Closed, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeStatus` 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 `ui_notification_monitor` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn ui_notification_monitor(f: &mut Frame, app: &App) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_trade_alert_popup` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1238:4 [INFO] [stdout] | [INFO] [stdout] 1238 | fn render_trade_alert_popup(f: &mut Frame, app: &App, size: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_all_notifications_panel_enhanced` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1307:4 [INFO] [stdout] | [INFO] [stdout] 1307 | fn render_all_notifications_panel_enhanced( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_validated_trades_panel` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1638:4 [INFO] [stdout] | [INFO] [stdout] 1638 | fn render_validated_trades_panel(f: &mut Frame, app: &App, header_area: Rect, content_area: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_notification_help_enhanced` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1733:4 [INFO] [stdout] | [INFO] [stdout] 1733 | fn render_notification_help_enhanced(f: &mut Frame, area: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_notification_timeframe_status` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1748:4 [INFO] [stdout] | [INFO] [stdout] 1748 | fn render_notification_timeframe_status(f: &mut Frame, app: &App, area: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_notification_timeframe_controls` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1775:4 [INFO] [stdout] | [INFO] [stdout] 1775 | fn render_notification_timeframe_controls(f: &mut Frame, app: &App, area: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `createdAt` should have a snake case name [INFO] [stdout] --> src/bin/dashboard/app.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | pub createdAt: String, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `created_at` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `updatedAt` should have a snake case name [INFO] [stdout] --> src/bin/dashboard/app.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | pub updatedAt: String, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `updated_at` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `OrderEventBuilder` and `OrderStatus` [INFO] [stdout] --> src/bin/zone_monitor/db/mod.rs:8:18 [INFO] [stdout] | [INFO] [stdout] 8 | pub use schema::{OrderStatus, OrderEventBuilder}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/optimization/main.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | let mut cache = candle_cache.lock().await; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/optimization/main.rs:159:21 [INFO] [stdout] | [INFO] [stdout] 159 | let mut cache = candle_cache.lock().await; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Value` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1036:13 [INFO] [stdout] | [INFO] [stdout] 1036 | use serde_json::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `round_f64_report` is never used [INFO] [stdout] --> tests/optimization/html_reporter_advanced.rs:10:4 [INFO] [stdout] | [INFO] [stdout] 10 | fn round_f64_report(value: f64, decimals: u32) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/bin/zone_monitor/telegram_notifier.rs:12:15 [INFO] [stdout] | [INFO] [stdout] 12 | use tracing::{error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_map_key_to_string` is never used [INFO] [stdout] --> tests/optimization/html_reporter_advanced.rs:17:4 [INFO] [stdout] | [INFO] [stdout] 17 | fn format_map_key_to_string(key: T) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `filtered_zones` [INFO] [stdout] --> src/bin/dashboard/ui.rs:785:13 [INFO] [stdout] | [INFO] [stdout] 785 | let filtered_zones: Vec<_> = if app.trading_plan_enabled { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filtered_zones` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol_tf` [INFO] [stdout] --> src/bin/dashboard/ui.rs:813:21 [INFO] [stdout] | [INFO] [stdout] 813 | let symbol_tf = format!("{}/{}", zone.symbol, zone.timeframe); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol_tf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `OrderEventBuilder` and `OrderStatus` [INFO] [stdout] --> src/bin/zone_monitor/db/mod.rs:8:18 [INFO] [stdout] | [INFO] [stdout] 8 | pub use schema::{OrderStatus, OrderEventBuilder}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Value` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1036:13 [INFO] [stdout] | [INFO] [stdout] 1036 | use serde_json::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/bin/zone_monitor/telegram_notifier.rs:12:15 [INFO] [stdout] | [INFO] [stdout] 12 | use tracing::{error, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PendingOrdersContainer` is never constructed [INFO] [stdout] --> src/bin/dashboard/app.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct PendingOrdersContainer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `symbol` is never read [INFO] [stdout] --> src/bin/dashboard/app.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct PriceStreamData { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 58 | pub symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PriceStreamData` 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 `previous_triggers` and `redis_client` are never read [INFO] [stdout] --> src/bin/dashboard/app.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct App { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 92 | pub previous_triggers: std::collections::HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub redis_client: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id`, `symbol`, `strategy_type`, `description`, `createdAt`, and `updatedAt` are never read [INFO] [stdout] --> src/bin/dashboard/app.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 139 | pub struct DayTradingStrategy { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 140 | pub id: String, [INFO] [stdout] | ^^ [INFO] [stdout] 141 | pub symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 142 | #[serde(rename = "type")] [INFO] [stdout] 143 | pub strategy_type: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 144 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 145 | pub createdAt: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 146 | pub updatedAt: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DayTradingStrategy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/bin/dashboard/app.rs:486:12 [INFO] [stdout] | [INFO] [stdout] 155 | impl App { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 486 | pub fn create_trade_from_trigger(&mut self, notification: &TradeNotificationDisplay) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1514 | pub async fn clear_notifications_via_api(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1737 | async fn get_current_prices(&self) -> Result, Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1768 | async fn fetch_detailed_prices(&mut self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2263 | pub async fn get_redis_stats(&self) -> (usize, usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2292 | pub fn get_pending_order(&self, zone_id: &str) -> Option<&PendingOrder> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2302 | pub fn get_strategy_code_for_zone( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `description` is never read [INFO] [stdout] --> src/bin/dashboard/notifications.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct RuleValidationResult { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 18 | pub rule_name: String, [INFO] [stdout] 19 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RuleValidationResult` 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 `min_distance_pips` is never read [INFO] [stdout] --> src/bin/dashboard/notifications.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 37 | pub struct TradingConfig { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 51 | pub min_distance_pips: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradingConfig` 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 `render_enhanced_validated_trades` is never used [INFO] [stdout] --> src/bin/dashboard/notifications.rs:883:4 [INFO] [stdout] | [INFO] [stdout] 883 | fn render_enhanced_validated_trades( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `sl` and `tp` are never read [INFO] [stdout] --> src/bin/dashboard/trading_plan.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct TradingSetup { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 9 | pub sl: f64, [INFO] [stdout] | ^^ [INFO] [stdout] 10 | pub tp: f64, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradingSetup` 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 `last_update`, `last_crossing_time`, and `is_zone_active` are never read [INFO] [stdout] --> src/bin/dashboard/types.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct ZoneDistanceInfo { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 33 | pub last_update: DateTime, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub last_crossing_time: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 43 | pub is_zone_active: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ZoneDistanceInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/bin/dashboard/types.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct ValidatedTradeDisplay { [INFO] [stdout] | --------------------- fields in this struct [INFO] [stdout] 62 | pub timestamp: DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 63 | pub symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 64 | pub timeframe: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 65 | pub direction: String, // BUY/SELL [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 66 | pub entry_price: f64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 67 | pub stop_loss: f64, // Hardcoded for now [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 68 | pub take_profit: f64, // Hardcoded for now [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 69 | pub signal_id: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ValidatedTradeDisplay` 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 `Closed` is never constructed [INFO] [stdout] --> src/bin/dashboard/types.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 89 | pub enum TradeStatus { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] 90 | Open, [INFO] [stdout] 91 | Closed, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeStatus` 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 `ui_notification_monitor` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn ui_notification_monitor(f: &mut Frame, app: &App) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_trade_alert_popup` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1238:4 [INFO] [stdout] | [INFO] [stdout] 1238 | fn render_trade_alert_popup(f: &mut Frame, app: &App, size: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_all_notifications_panel_enhanced` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1307:4 [INFO] [stdout] | [INFO] [stdout] 1307 | fn render_all_notifications_panel_enhanced( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_validated_trades_panel` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1638:4 [INFO] [stdout] | [INFO] [stdout] 1638 | fn render_validated_trades_panel(f: &mut Frame, app: &App, header_area: Rect, content_area: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_notification_help_enhanced` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1733:4 [INFO] [stdout] | [INFO] [stdout] 1733 | fn render_notification_help_enhanced(f: &mut Frame, area: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_notification_timeframe_status` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1748:4 [INFO] [stdout] | [INFO] [stdout] 1748 | fn render_notification_timeframe_status(f: &mut Frame, app: &App, area: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_notification_timeframe_controls` is never used [INFO] [stdout] --> src/bin/dashboard/ui.rs:1775:4 [INFO] [stdout] | [INFO] [stdout] 1775 | fn render_notification_timeframe_controls(f: &mut Frame, app: &App, area: Rect) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `createdAt` should have a snake case name [INFO] [stdout] --> src/bin/dashboard/app.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | pub createdAt: String, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `created_at` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `updatedAt` should have a snake case name [INFO] [stdout] --> src/bin/dashboard/app.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | pub updatedAt: String, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `updated_at` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `caller_task_id` [INFO] [stdout] --> src/api/detect.rs:618:21 [INFO] [stdout] | [INFO] [stdout] 618 | let caller_task_id = format!("bulk_task_{}/{}", current_symbol, current_timeframe); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_caller_task_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function depends on never type fallback being `()` [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:205:5 [INFO] [stdout] | [INFO] [stdout] 205 | / async fn store_active_trade_redis( [INFO] [stdout] 206 | | &self, [INFO] [stdout] 207 | | trade: &EnrichedActiveTrade, [INFO] [stdout] 208 | | ) -> Result<(), Box> { [INFO] [stdout] | |_____________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = help: specify the types explicitly [INFO] [stdout] note: in edition 2024, the requirement `!: FromRedisValue` will fail [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:214:18 [INFO] [stdout] | [INFO] [stdout] 214 | conn.set(&key, &trade_json)?; [INFO] [stdout] | ^^^ [INFO] [stdout] = note: `#[warn(dependency_on_unit_never_type_fallback)]` on by default [INFO] [stdout] help: use `()` annotations to avoid fallback changes [INFO] [stdout] | [INFO] [stdout] 214 ~ conn.set::<_, _, ()>(&key, &trade_json)?; [INFO] [stdout] 215 | [INFO] [stdout] 216 | // Set 7-day expiration for automatic cleanup [INFO] [stdout] 217 ~ conn.expire::<_, ()>(&key, 7 * 24 * 3600)?; // 7 days in seconds [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function depends on never type fallback being `()` [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:205:5 [INFO] [stdout] | [INFO] [stdout] 205 | / async fn store_active_trade_redis( [INFO] [stdout] 206 | | &self, [INFO] [stdout] 207 | | trade: &EnrichedActiveTrade, [INFO] [stdout] 208 | | ) -> Result<(), Box> { [INFO] [stdout] | |_____________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = help: specify the types explicitly [INFO] [stdout] note: in edition 2024, the requirement `!: FromRedisValue` will fail [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:214:18 [INFO] [stdout] | [INFO] [stdout] 214 | conn.set(&key, &trade_json)?; [INFO] [stdout] | ^^^ [INFO] [stdout] = note: `#[warn(dependency_on_unit_never_type_fallback)]` on by default [INFO] [stdout] help: use `()` annotations to avoid fallback changes [INFO] [stdout] | [INFO] [stdout] 214 ~ conn.set::<_, _, ()>(&key, &trade_json)?; [INFO] [stdout] 215 | [INFO] [stdout] 216 | // Set 7-day expiration for automatic cleanup [INFO] [stdout] 217 ~ conn.expire::<_, ()>(&key, 7 * 24 * 3600)?; // 7 days in seconds [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:791:180 [INFO] [stdout] | [INFO] [stdout] 791 | ...en(|v| v.as_i64()).and_then(|ts| chrono::NaiveDateTime::from_timestamp_millis(ts)).map(|dt| chrono::DateTime::::from_utc(... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:791:249 [INFO] [stdout] | [INFO] [stdout] 791 | ...imestamp_millis(ts)).map(|dt| chrono::DateTime::::from_utc(dt, chrono::Utc)); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:794:182 [INFO] [stdout] | [INFO] [stdout] 794 | ...en(|v| v.as_i64()).and_then(|ts| chrono::NaiveDateTime::from_timestamp_millis(ts)).map(|dt| chrono::DateTime::::from_utc(... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:794:251 [INFO] [stdout] | [INFO] [stdout] 794 | ...imestamp_millis(ts)).map(|dt| chrono::DateTime::::from_utc(dt, chrono::Utc)); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `close_time` [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:708:57 [INFO] [stdout] | [INFO] [stdout] 708 | ... let close_time = deal.get("executionTimestamp").and_then(|v| v.as_i64()); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_close_time` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:535:13 [INFO] [stdout] | [INFO] [stdout] 535 | let mut blocked_set = BLOCKED_ZONES.lock().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:791:180 [INFO] [stdout] | [INFO] [stdout] 791 | ...en(|v| v.as_i64()).and_then(|ts| chrono::NaiveDateTime::from_timestamp_millis(ts)).map(|dt| chrono::DateTime::::from_utc(... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:791:249 [INFO] [stdout] | [INFO] [stdout] 791 | ...imestamp_millis(ts)).map(|dt| chrono::DateTime::::from_utc(dt, chrono::Utc)); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:794:182 [INFO] [stdout] | [INFO] [stdout] 794 | ...en(|v| v.as_i64()).and_then(|ts| chrono::NaiveDateTime::from_timestamp_millis(ts)).map(|dt| chrono::DateTime::::from_utc(... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:794:251 [INFO] [stdout] | [INFO] [stdout] 794 | ...imestamp_millis(ts)).map(|dt| chrono::DateTime::::from_utc(dt, chrono::Utc)); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol` [INFO] [stdout] --> src/trading/trade_event_logger.rs:267:17 [INFO] [stdout] | [INFO] [stdout] 267 | let symbol = parts[0]; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `close_time` [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:708:57 [INFO] [stdout] | [INFO] [stdout] 708 | ... let close_time = deal.get("executionTimestamp").and_then(|v| v.as_i64()); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_close_time` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:535:13 [INFO] [stdout] | [INFO] [stdout] 535 | let mut blocked_set = BLOCKED_ZONES.lock().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol` [INFO] [stdout] --> src/trading/trade_event_logger.rs:267:17 [INFO] [stdout] | [INFO] [stdout] 267 | let symbol = parts[0]; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `flux_query` [INFO] [stdout] --> src/bin/zone_monitor/db/order_db.rs:581:13 [INFO] [stdout] | [INFO] [stdout] 581 | let flux_query = format!( [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flux_query` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `flux_query` [INFO] [stdout] --> src/bin/zone_monitor/db/order_db.rs:601:13 [INFO] [stdout] | [INFO] [stdout] 601 | let flux_query = format!( [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flux_query` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `distal_line` [INFO] [stdout] --> src/bin/zone_monitor/html.rs:33:21 [INFO] [stdout] | [INFO] [stdout] 33 | let distal_line = if zone.zone_type == "supply" { zone.low } else { zone.high }; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distal_line` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function depends on never type fallback being `()` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:250:5 [INFO] [stdout] | [INFO] [stdout] 250 | / pub async fn test_redis_storage( [INFO] [stdout] 251 | | &self, [INFO] [stdout] 252 | | order_json: &serde_json::Value, [INFO] [stdout] 253 | | ) -> Result> { [INFO] [stdout] | |____________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = help: specify the types explicitly [INFO] [stdout] note: in edition 2024, the requirement `!: FromRedisValue` will fail [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:269:18 [INFO] [stdout] | [INFO] [stdout] 269 | conn.set(&pending_key, &order_data)?; [INFO] [stdout] | ^^^ [INFO] [stdout] help: use `()` annotations to avoid fallback changes [INFO] [stdout] | [INFO] [stdout] 269 ~ conn.set::<_, _, ()>(&pending_key, &order_data)?; [INFO] [stdout] 270 ~ conn.expire::<_, ()>(&pending_key, 5 * 24 * 3600)?; [INFO] [stdout] 271 | [INFO] [stdout] 272 | // Store the lookup key [INFO] [stdout] 273 | let lookup_key = format!("order_lookup:{}", ctrader_id); [INFO] [stdout] 274 ~ conn.set::<_, _, ()>(&lookup_key, zone_id)?; [INFO] [stdout] 275 ~ conn.expire::<_, ()>(&lookup_key, 5 * 24 * 3600)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function depends on never type fallback being `()` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:296:5 [INFO] [stdout] | [INFO] [stdout] 296 | / pub async fn create_missing_lookup_keys( [INFO] [stdout] 297 | | &self, [INFO] [stdout] 298 | | ) -> Result> { [INFO] [stdout] | |________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = help: specify the types explicitly [INFO] [stdout] note: in edition 2024, the requirement `!: FromRedisValue` will fail [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:317:30 [INFO] [stdout] | [INFO] [stdout] 317 | conn.set(&lookup_key, zone_id)?; [INFO] [stdout] | ^^^ [INFO] [stdout] help: use `()` annotations to avoid fallback changes [INFO] [stdout] | [INFO] [stdout] 317 ~ conn.set::<_, _, ()>(&lookup_key, zone_id)?; [INFO] [stdout] 318 ~ conn.expire::<_, ()>(&lookup_key, 5 * 24 * 3600)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `flux_query` [INFO] [stdout] --> src/bin/zone_monitor/db/order_db.rs:581:13 [INFO] [stdout] | [INFO] [stdout] 581 | let flux_query = format!( [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flux_query` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `flux_query` [INFO] [stdout] --> src/bin/zone_monitor/db/order_db.rs:601:13 [INFO] [stdout] | [INFO] [stdout] 601 | let flux_query = format!( [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flux_query` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `distal_line` [INFO] [stdout] --> src/bin/zone_monitor/html.rs:33:21 [INFO] [stdout] | [INFO] [stdout] 33 | let distal_line = if zone.zone_type == "supply" { zone.low } else { zone.high }; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distal_line` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function depends on never type fallback being `()` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:250:5 [INFO] [stdout] | [INFO] [stdout] 250 | / pub async fn test_redis_storage( [INFO] [stdout] 251 | | &self, [INFO] [stdout] 252 | | order_json: &serde_json::Value, [INFO] [stdout] 253 | | ) -> Result> { [INFO] [stdout] | |____________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = help: specify the types explicitly [INFO] [stdout] note: in edition 2024, the requirement `!: FromRedisValue` will fail [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:269:18 [INFO] [stdout] | [INFO] [stdout] 269 | conn.set(&pending_key, &order_data)?; [INFO] [stdout] | ^^^ [INFO] [stdout] help: use `()` annotations to avoid fallback changes [INFO] [stdout] | [INFO] [stdout] 269 ~ conn.set::<_, _, ()>(&pending_key, &order_data)?; [INFO] [stdout] 270 ~ conn.expire::<_, ()>(&pending_key, 5 * 24 * 3600)?; [INFO] [stdout] 271 | [INFO] [stdout] 272 | // Store the lookup key [INFO] [stdout] 273 | let lookup_key = format!("order_lookup:{}", ctrader_id); [INFO] [stdout] 274 ~ conn.set::<_, _, ()>(&lookup_key, zone_id)?; [INFO] [stdout] 275 ~ conn.expire::<_, ()>(&lookup_key, 5 * 24 * 3600)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function depends on never type fallback being `()` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:296:5 [INFO] [stdout] | [INFO] [stdout] 296 | / pub async fn create_missing_lookup_keys( [INFO] [stdout] 297 | | &self, [INFO] [stdout] 298 | | ) -> Result> { [INFO] [stdout] | |________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = help: specify the types explicitly [INFO] [stdout] note: in edition 2024, the requirement `!: FromRedisValue` will fail [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:317:30 [INFO] [stdout] | [INFO] [stdout] 317 | conn.set(&lookup_key, zone_id)?; [INFO] [stdout] | ^^^ [INFO] [stdout] help: use `()` annotations to avoid fallback changes [INFO] [stdout] | [INFO] [stdout] 317 ~ conn.set::<_, _, ()>(&lookup_key, zone_id)?; [INFO] [stdout] 318 ~ conn.expire::<_, ()>(&lookup_key, 5 * 24 * 3600)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1085:62 [INFO] [stdout] | [INFO] [stdout] 1085 | let open_time = open_ts.and_then(|ts| NaiveDateTime::from_timestamp_millis(ts)).map(|dt| DateTime::::from_utc(dt, Utc)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1085:115 [INFO] [stdout] | [INFO] [stdout] 1085 | let open_time = open_ts.and_then(|ts| NaiveDateTime::from_timestamp_millis(ts)).map(|dt| DateTime::::from_utc(dt, Utc)); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1086:64 [INFO] [stdout] | [INFO] [stdout] 1086 | let close_time = close_ts.and_then(|ts| NaiveDateTime::from_timestamp_millis(ts)).map(|dt| DateTime::::from_utc(dt, Utc)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1086:117 [INFO] [stdout] | [INFO] [stdout] 1086 | let close_time = close_ts.and_then(|ts| NaiveDateTime::from_timestamp_millis(ts)).map(|dt| DateTime::::from_utc(dt, Utc)); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1085:62 [INFO] [stdout] | [INFO] [stdout] 1085 | let open_time = open_ts.and_then(|ts| NaiveDateTime::from_timestamp_millis(ts)).map(|dt| DateTime::::from_utc(dt, Utc)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1085:115 [INFO] [stdout] | [INFO] [stdout] 1085 | let open_time = open_ts.and_then(|ts| NaiveDateTime::from_timestamp_millis(ts)).map(|dt| DateTime::::from_utc(dt, Utc)); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1086:64 [INFO] [stdout] | [INFO] [stdout] 1086 | let close_time = close_ts.and_then(|ts| NaiveDateTime::from_timestamp_millis(ts)).map(|dt| DateTime::::from_utc(dt, Utc)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1086:117 [INFO] [stdout] | [INFO] [stdout] 1086 | let close_time = close_ts.and_then(|ts| NaiveDateTime::from_timestamp_millis(ts)).map(|dt| DateTime::::from_utc(dt, Utc)); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1356:98 [INFO] [stdout] | [INFO] [stdout] 1356 | ... let open_time = chrono::DateTime::::from_utc(chrono::NaiveDateTime::from_timestamp_millis(open_timestamp).unwrap_or_el... [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1356:130 [INFO] [stdout] | [INFO] [stdout] 1356 | ... let open_time = chrono::DateTime::::from_utc(chrono::NaiveDateTime::from_timestamp_millis(open_timestamp).unwrap_or_el... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1356:209 [INFO] [stdout] | [INFO] [stdout] 1356 | ...is(open_timestamp).unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp(0, 0)), chrono::Utc); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1356:98 [INFO] [stdout] | [INFO] [stdout] 1356 | ... let open_time = chrono::DateTime::::from_utc(chrono::NaiveDateTime::from_timestamp_millis(open_timestamp).unwrap_or_el... [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1356:130 [INFO] [stdout] | [INFO] [stdout] 1356 | ... let open_time = chrono::DateTime::::from_utc(chrono::NaiveDateTime::from_timestamp_millis(open_timestamp).unwrap_or_el... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1356:209 [INFO] [stdout] | [INFO] [stdout] 1356 | ...is(open_timestamp).unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp(0, 0)), chrono::Utc); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1303:35 [INFO] [stdout] | [INFO] [stdout] 1303 | if let Ok(mut order) = serde_json::from_str::(&order_json) { [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1303:35 [INFO] [stdout] | [INFO] [stdout] 1303 | if let Ok(mut order) = serde_json::from_str::(&order_json) { [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_still_valid` is never read [INFO] [stdout] --> src/api/detect.rs:1393:17 [INFO] [stdout] | [INFO] [stdout] 1393 | is_still_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_still_valid` is never read [INFO] [stdout] --> src/api/detect.rs:1400:17 [INFO] [stdout] | [INFO] [stdout] 1400 | is_still_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_first_time_entry` [INFO] [stdout] --> src/bin/zone_monitor/zone_state_manager.rs:249:21 [INFO] [stdout] | [INFO] [stdout] 249 | let is_first_time_entry = !has_ever_entered && zone_entries == 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_first_time_entry` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_still_valid` is never read [INFO] [stdout] --> src/api/detect.rs:1393:17 [INFO] [stdout] | [INFO] [stdout] 1393 | is_still_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_still_valid` is never read [INFO] [stdout] --> src/api/detect.rs:1400:17 [INFO] [stdout] | [INFO] [stdout] 1400 | is_still_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_first_time_entry` [INFO] [stdout] --> src/bin/zone_monitor/zone_state_manager.rs:249:21 [INFO] [stdout] | [INFO] [stdout] 249 | let is_first_time_entry = !has_ever_entered && zone_entries == 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_first_time_entry` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bot_token` [INFO] [stdout] --> src/bin/zone_monitor/telegram_notifier.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | let bot_token = self.bot_token.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bot_token` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `chat_id` [INFO] [stdout] --> src/bin/zone_monitor/telegram_notifier.rs:82:13 [INFO] [stdout] | [INFO] [stdout] 82 | let chat_id = self.chat_id.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chat_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bot_token` [INFO] [stdout] --> src/bin/zone_monitor/telegram_notifier.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | let bot_token = self.bot_token.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bot_token` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `chat_id` [INFO] [stdout] --> src/bin/zone_monitor/telegram_notifier.rs:82:13 [INFO] [stdout] | [INFO] [stdout] 82 | let chat_id = self.chat_id.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chat_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol_id` [INFO] [stdout] --> src/bin/zone_monitor/trading_engine.rs:472:13 [INFO] [stdout] | [INFO] [stdout] 472 | let symbol_id = *self [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `symbol_id` [INFO] [stdout] --> src/bin/zone_monitor/trading_engine.rs:472:13 [INFO] [stdout] | [INFO] [stdout] 472 | let symbol_id = *self [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_symbol_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `entry_price` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:304:9 [INFO] [stdout] | [INFO] [stdout] 304 | entry_price: f64, entry_time: Option<&str>, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entry_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `zone_high` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:305:9 [INFO] [stdout] | [INFO] [stdout] 305 | zone_high: f64, zone_low: f64, zone_time: Option<&str> [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_zone_high` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `zone_low` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:305:25 [INFO] [stdout] | [INFO] [stdout] 305 | zone_high: f64, zone_low: f64, zone_time: Option<&str> [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_zone_low` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end_idx` [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:435:89 [INFO] [stdout] | [INFO] [stdout] 435 | fn detect_zone_before_multi_candle(&self, candles: &[CandleData], start_idx: usize, end_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_end_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `current_score` [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:312:25 [INFO] [stdout] | [INFO] [stdout] 312 | let current_score = m["strength_score"].as_f64().unwrap_or(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_score` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `existing_score` [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:313:25 [INFO] [stdout] | [INFO] [stdout] 313 | let existing_score = existing["strength_score"].as_f64().unwrap_or(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_existing_score` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pending_order_manager` [INFO] [stdout] --> src/bin/zone_monitor/state.rs:429:13 [INFO] [stdout] | [INFO] [stdout] 429 | let pending_order_manager = Arc::clone(&self.pending_order_manager); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pending_order_manager` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SingleZoneQueryParams` is never constructed [INFO] [stdout] --> src/api/detect.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | pub struct SingleZoneQueryParams { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `debug_bulk_zones_handler` is never used [INFO] [stdout] --> src/api/detect.rs:749:14 [INFO] [stdout] | [INFO] [stdout] 749 | pub async fn debug_bulk_zones_handler(query: web::Query) -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_touches_within_range` is never used [INFO] [stdout] --> src/api/detect.rs:1329:8 [INFO] [stdout] | [INFO] [stdout] 1329 | pub fn calculate_touches_within_range( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fetch_candles_direct` is never used [INFO] [stdout] --> src/api/detect.rs:1728:14 [INFO] [stdout] | [INFO] [stdout] 1728 | pub async fn fetch_candles_direct( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `enrich_zones_with_activity` is never used [INFO] [stdout] --> src/api/detect.rs:1813:8 [INFO] [stdout] | [INFO] [stdout] 1813 | pub fn enrich_zones_with_activity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `debug_zone_enrichment_step_by_step` is never used [INFO] [stdout] --> src/api/detect.rs:2043:8 [INFO] [stdout] | [INFO] [stdout] 2043 | pub fn debug_zone_enrichment_step_by_step( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_minimal_cache_zones_debug` is never used [INFO] [stdout] --> src/api/cache_endpoints.rs:83:14 [INFO] [stdout] | [INFO] [stdout] 83 | pub async fn get_minimal_cache_zones_debug() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timestamp` is never read [INFO] [stdout] --> src/api/mobile_dashboard.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct PriceUpdate { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | pub timestamp: DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PriceUpdate` 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 `overall_summary` is never read [INFO] [stdout] --> src/api/optimize_handler.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 131 | pub struct MultiBacktestResult { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 132 | pub overall_summary: OverallSummary, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MultiBacktestResult` 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 `losing_trades`, `win_rate`, and `profit_factor` are never read [INFO] [stdout] --> src/api/optimize_handler.rs:168:5 [INFO] [stdout] | [INFO] [stdout] 165 | struct TradeTaskSummary { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 168 | losing_trades: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 169 | total_pnl_pips: f64, [INFO] [stdout] 170 | win_rate: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 171 | profit_factor: f64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeTaskSummary` 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 `zone_id`, `zone_low`, `zone_high`, `strength`, and `timeframe` are never read [INFO] [stdout] --> src/api/test_trade_handler.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct TestTradeRequest { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub zone_id: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 19 | pub zone_low: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 20 | pub zone_high: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 21 | pub strength: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 22 | pub timeframe: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TestTradeRequest` 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 `trade_notifications`, `previous_zone_triggers`, and `current_prices` are never read [INFO] [stdout] --> src/cache/minimal_zone_cache.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct MinimalZoneCache { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 34 | trade_notifications: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 35 | previous_zone_triggers: HashMap, // zone_id -> was_triggered [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | current_prices: HashMap, // symbol -> price [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_price_and_check_triggers`, `check_zone_trigger`, `get_trade_notifications`, `clear_trade_notifications`, and `get_current_prices` are never used [INFO] [stdout] --> src/cache/minimal_zone_cache.rs:346:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl MinimalZoneCache { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 346 | pub fn update_price_and_check_triggers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 411 | fn check_zone_trigger(&self, zone: &EnrichedZone, current_price: f64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 432 | pub fn get_trade_notifications(&self) -> &Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 436 | pub fn clear_trade_notifications(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn get_current_prices(&self) -> &HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_zone_monitor`, `stop`, `is_running`, and `update_now` are never used [INFO] [stdout] --> src/cache/realtime_cache_updater.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl RealtimeCacheUpdater { [INFO] [stdout] | ------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn with_zone_monitor(mut self, zone_monitor: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub async fn stop(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub async fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub async fn update_now(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `query_influxdb_hardcoded` is never used [INFO] [stdout] --> src/data/influx_fetcher.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | pub async fn query_influxdb_hardcoded() -> Result, Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_hardcoded_query_results` is never used [INFO] [stdout] --> src/data/influx_fetcher.rs:84:14 [INFO] [stdout] | [INFO] [stdout] 84 | pub async fn log_hardcoded_query_results() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_data_request_handler` is never used [INFO] [stdout] --> src/data/influx_fetcher.rs:102:14 [INFO] [stdout] | [INFO] [stdout] 102 | pub async fn test_data_request_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ParseError` and `InternalError` are never constructed [INFO] [stdout] --> src/errors.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum ServiceError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | ParseError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | InternalError, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ServiceError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProximityCheckQuery` is never constructed [INFO] [stdout] --> src/handlers.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct ProximityCheckQuery { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_trade_notifications_handler` is never used [INFO] [stdout] --> src/handlers.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | pub async fn get_trade_notifications_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_trade_notifications_handler` is never used [INFO] [stdout] --> src/handlers.rs:46:14 [INFO] [stdout] | [INFO] [stdout] 46 | pub async fn clear_trade_notifications_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_validated_signals_handler` is never used [INFO] [stdout] --> src/handlers.rs:54:14 [INFO] [stdout] | [INFO] [stdout] 54 | pub async fn get_validated_signals_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_validated_signals_handler` is never used [INFO] [stdout] --> src/handlers.rs:63:14 [INFO] [stdout] | [INFO] [stdout] 63 | pub async fn clear_validated_signals_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_trading_status` is never used [INFO] [stdout] --> src/handlers.rs:71:14 [INFO] [stdout] | [INFO] [stdout] 71 | pub async fn get_trading_status() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_validated_signals_from_engine` is never used [INFO] [stdout] --> src/handlers.rs:79:14 [INFO] [stdout] | [INFO] [stdout] 79 | pub async fn get_validated_signals_from_engine() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_validated_signals_from_engine` is never used [INFO] [stdout] --> src/handlers.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | pub async fn clear_validated_signals_from_engine() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reload_trading_rules` is never used [INFO] [stdout] --> src/handlers.rs:94:14 [INFO] [stdout] | [INFO] [stdout] 94 | pub async fn reload_trading_rules() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `manual_trade_test` is never used [INFO] [stdout] --> src/handlers.rs:101:14 [INFO] [stdout] | [INFO] [stdout] 101 | pub async fn manual_trade_test( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_notifications_handler` is never used [INFO] [stdout] --> src/handlers.rs:118:14 [INFO] [stdout] | [INFO] [stdout] 118 | pub async fn test_notifications_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `send_daily_summary_handler` is never used [INFO] [stdout] --> src/handlers.rs:126:14 [INFO] [stdout] | [INFO] [stdout] 126 | pub async fn send_daily_summary_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_proximity_alert_handler` is never used [INFO] [stdout] --> src/handlers.rs:134:14 [INFO] [stdout] | [INFO] [stdout] 134 | pub async fn test_proximity_alert_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_proximity_status_handler` is never used [INFO] [stdout] --> src/handlers.rs:142:14 [INFO] [stdout] | [INFO] [stdout] 142 | pub async fn get_proximity_status_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_proximity_distances_handler` is never used [INFO] [stdout] --> src/handlers.rs:171:14 [INFO] [stdout] | [INFO] [stdout] 171 | pub async fn get_proximity_distances_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_zones_within_proximity_handler` is never used [INFO] [stdout] --> src/handlers.rs:179:14 [INFO] [stdout] | [INFO] [stdout] 179 | pub async fn get_zones_within_proximity_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_proximity_distance_handler` is never used [INFO] [stdout] --> src/handlers.rs:186:14 [INFO] [stdout] | [INFO] [stdout] 186 | pub async fn check_proximity_distance_handler( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `trigger_proximity_check_handler` is never used [INFO] [stdout] --> src/handlers.rs:208:14 [INFO] [stdout] | [INFO] [stdout] 208 | pub async fn trigger_proximity_check_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NotificationManager` is never constructed [INFO] [stdout] --> src/notifications/notification_manager.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct NotificationManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/notifications/notification_manager.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl NotificationManager { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub async fn notify_proximity_alert(&self, symbol: &str, current_price: f64, zone_type: &str, zone_high: f64, zone_low: f64, zone_id:... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub async fn notify_inside_zone_alert( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub async fn notify_trade_signal(&self, signal: &ValidatedTradeSignal) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub async fn notify_blocked_trade_signal( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub async fn test_notifications(&self) -> (bool, bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub async fn send_daily_summary(&self, signals_today: u32, max_signals: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub async fn notify_startup(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub async fn send_custom_telegram_message(&self, message: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `GLOBAL_NOTIFICATION_MANAGER` is never used [INFO] [stdout] --> src/notifications/notification_manager.rs:203:8 [INFO] [stdout] | [INFO] [stdout] 203 | static GLOBAL_NOTIFICATION_MANAGER: LazyLock< [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_global_notification_manager` is never used [INFO] [stdout] --> src/notifications/notification_manager.rs:207:8 [INFO] [stdout] | [INFO] [stdout] 207 | pub fn get_global_notification_manager() -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_global_notification_manager` is never used [INFO] [stdout] --> src/notifications/notification_manager.rs:211:8 [INFO] [stdout] | [INFO] [stdout] 211 | pub fn set_global_notification_manager(manager: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TelegramNotifier` is never constructed [INFO] [stdout] --> src/notifications/telegram_notifier.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct TelegramNotifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/notifications/telegram_notifier.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl TelegramNotifier { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 16 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub async fn send_trade_signal(&self, signal: &ValidatedTradeSignal) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | fn categorize_blocking_rule(&self, rejection_reason: &str) -> (&'static str, &'static str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub async fn send_test_message(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub async fn send_proximity_alert(&self, symbol: &str, current_price: f64, zone_type: &str, zone_high: f64, zone_low: f64, zone_id: &... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | pub async fn send_inside_zone_alert( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 337 | pub async fn send_daily_summary(&self, signals_today: u32, max_signals: u32) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 390 | pub async fn send_blocked_trade_signal( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | pub async fn send_custom_message(&self, message: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SoundNotifier` is never constructed [INFO] [stdout] --> src/notifications/sound_notifier.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct SoundNotifier { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/notifications/sound_notifier.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl SoundNotifier { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub async fn play_proximity_alert(&self, symbol: &str, zone_type: &str, distance_pips: f64) -> Result<(), Box Result<(), Box Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 188 | pub async fn play_trade_signal(&self, signal: &ValidatedTradeSignal) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub async fn play_sound(&self, sound_file: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub async fn play_test_sound(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 284 | pub async fn play_startup_sound(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub async fn play_blocked_trade_alert( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `which_command_exists` is never used [INFO] [stdout] --> src/notifications/sound_notifier.rs:329:4 [INFO] [stdout] | [INFO] [stdout] 329 | fn which_command_exists(command: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `last_price_time` is never read [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 39 | pub struct LiveZoneStatus { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 42 | pub last_price_time: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LiveZoneStatus` 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 `latest_prices`, `trade_engine`, and `proximity_alert_cache` are never read [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct NewRealTimeZoneMonitor { [INFO] [stdout] | ---------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 57 | latest_prices: Arc)>>>, // symbol -> (price, time) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | trade_engine: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 63 | [INFO] [stdout] 64 | proximity_alert_cache: Arc>>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 67 | impl NewRealTimeZoneMonitor { [INFO] [stdout] | --------------------------- associated items in this implementation [INFO] [stdout] 68 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub async fn update_price( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | pub async fn get_all_zones_for_ws(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn subscribe_to_events(&self) -> tokio::sync::broadcast::Receiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 444 | pub async fn get_current_price(&self, symbol: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub async fn get_current_price_for_timeframe( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 476 | pub async fn get_all_current_prices(&self) -> HashMap)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 482 | pub async fn get_current_prices_by_symbol(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | pub async fn update_price_with_cache_notifications( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 835 | pub async fn get_trade_notifications_from_cache(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 841 | pub async fn clear_cache_notifications(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 846 | pub async fn get_validated_signals(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 851 | pub async fn get_daily_signal_count(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 856 | pub async fn reload_trading_rules(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 861 | pub async fn clear_validated_signals(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 866 | pub async fn get_proximity_distances_debug(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 947 | pub async fn get_zones_within_proximity(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 955 | async fn check_proximity_for_price_update(&self, symbol: &str, price: f64, timeframe: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProximityDebugInfo` is never constructed [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:1129:12 [INFO] [stdout] | [INFO] [stdout] 1129 | pub struct ProximityDebugInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_pips_distance_simple` is never used [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:1145:4 [INFO] [stdout] | [INFO] [stdout] 1145 | fn calculate_pips_distance_simple(symbol: &str, price1: f64, price2: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProximityState` is never constructed [INFO] [stdout] --> src/realtime/proximity_detector.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct ProximityState { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProximityDetector` is never constructed [INFO] [stdout] --> src/realtime/proximity_detector.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct ProximityDetector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `check_proximity`, `cleanup_old_states`, `get_proximity_threshold`, and `is_enabled` are never used [INFO] [stdout] --> src/realtime/proximity_detector.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl ProximityDetector { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 25 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub async fn check_proximity(&mut self, symbol: &str, current_price: f64, zone: &StoredZone, timeframe: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn cleanup_old_states(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn get_proximity_threshold(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 204 | pub fn is_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_pips_distance` is never used [INFO] [stdout] --> src/realtime/proximity_detector.rs:210:4 [INFO] [stdout] | [INFO] [stdout] 210 | fn calculate_pips_distance(symbol: &str, price1: f64, price2: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_pip_value_for_symbol` is never used [INFO] [stdout] --> src/realtime/proximity_detector.rs:216:4 [INFO] [stdout] | [INFO] [stdout] 216 | fn get_pip_value_for_symbol(symbol: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/trading/trade_decision_engine.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct TradingRules { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 27 | // Symbol filtering [INFO] [stdout] 28 | pub allowed_symbols: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub allowed_timeframes: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub allowed_weekdays: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub min_touch_count: i32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 38 | pub max_touch_count: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 39 | pub min_zone_strength: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub trading_start_hour_utc: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 43 | pub trading_end_hour_utc: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub zone_cooldown_minutes: u64, // Prevent re-triggering same zone [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub trading_enabled: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 50 | pub max_daily_signals: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradingRules` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_env` and `log_current_settings` are never used [INFO] [stdout] --> src/trading/trade_decision_engine.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl TradingRules { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 54 | pub fn from_env() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn log_current_settings(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rules`, `triggered_zones`, `daily_signal_count`, `last_reset_date`, `validated_signals`, and `zone_cache` are never read [INFO] [stdout] --> src/trading/trade_decision_engine.rs:172:5 [INFO] [stdout] | [INFO] [stdout] 171 | pub struct TradeDecisionEngine { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 172 | rules: TradingRules, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 173 | triggered_zones: HashMap>, // zone_id -> last_trigger_time [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 174 | daily_signal_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 175 | last_reset_date: DateTime, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 176 | validated_signals: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 177 | zone_cache: Option>>, // ← Fixed with proper imports [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/trading/trade_decision_engine.rs:181:12 [INFO] [stdout] | [INFO] [stdout] 180 | impl TradeDecisionEngine { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 181 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn new_with_cache(zone_cache: Arc>) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub fn reload_rules(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | pub async fn process_notification( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | async fn validate_notification(&self, notification: &TradeNotification) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 376 | async fn get_zone_touch_count(&self, zone_id: &str) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | fn create_validated_signal( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn reset_daily_counter_if_needed(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | pub fn get_validated_signals(&self) -> &Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 427 | pub fn get_daily_signal_count(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 431 | pub fn get_rules(&self) -> &TradingRules { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | pub fn clear_signals(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn cleanup_old_triggers(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | pub async fn process_notification_with_reason( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 480 | pub async fn debug_validate_notification(&self, notification: &TradeNotification) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 587 | pub async fn process_notification_enhanced( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TradeEventType` is never used [INFO] [stdout] --> src/trading/trade_event_logger.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum TradeEventType { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TradeLogEntry` is never constructed [INFO] [stdout] --> src/trading/trade_event_logger.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct TradeLogEntry { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HistoricalTradeAnalysis` is never constructed [INFO] [stdout] --> src/trading/trade_event_logger.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 38 | pub struct HistoricalTradeAnalysis { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SimulatedPricePoint` is never constructed [INFO] [stdout] --> src/trading/trade_event_logger.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct SimulatedPricePoint { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TradeEventLogger` is never constructed [INFO] [stdout] --> src/trading/trade_event_logger.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct TradeEventLogger { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/trading/trade_event_logger.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 68 | impl TradeEventLogger { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 69 | pub fn new() -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn get_log_file_path(&self) -> &PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | async fn check_and_rollover(&mut self) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 210 | pub async fn analyze_historical_trades( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | fn generate_today_triggers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 394 | fn get_zone_strength_by_id(&self, zones: &[EnrichedZone], zone_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 400 | async fn log( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 434 | pub async fn log_notification_received(&self, notification: &TradeNotification) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 444 | pub async fn log_signal_validated(&self, signal: &ValidatedTradeSignal) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub async fn log_signal_rejected( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub async fn force_rollover_check(&mut self) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | async fn log_historical_notification(&self, notification: &TradeNotification) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 488 | async fn log_historical_validated(&self, signal: &ValidatedTradeSignal) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 502 | async fn log_historical_rejected( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 517 | async fn write_to_csv(&self, signal: &ValidatedTradeSignal, event_type: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | async fn log_analysis_summary(&self, analysis: &HistoricalTradeAnalysis) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 554 | pub fn has_completed_historical_analysis(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `clear_rejected_trades` is never used [INFO] [stdout] --> src/trading/trading.rs:76:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl TradeExecutor { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn clear_rejected_trades(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `strength`, `touch_count`, `created_at`, and `bars_active` are never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct CachedZone { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 14 | pub strength: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 15 | pub timeframe: String, [INFO] [stdout] 16 | pub touch_count: i32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 17 | pub created_at: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 18 | pub start_time: String, [INFO] [stdout] 19 | pub bars_active: i32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CachedZone` 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 `placed_at` is never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct PendingOrder { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 30 | pub placed_at: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PendingOrder` 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 `last_updated` is never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct SharedZones { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 35 | pub last_updated: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SharedZones` 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 `last_updated` is never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct SharedPendingOrders { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 41 | pub last_updated: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SharedPendingOrders` 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 `match_details` is never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct ZoneMatchResult { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 50 | pub match_details: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ZoneMatchResult` 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 `match_zone` and `calculate_zone_similarity` are never used [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:218:12 [INFO] [stdout] | [INFO] [stdout] 58 | impl ZoneMatcher { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn match_zone( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 334 | fn calculate_zone_similarity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `start_time_rfc3339` and `table` are never read [INFO] [stdout] --> src/types.rs:311:9 [INFO] [stdout] | [INFO] [stdout] 293 | pub struct ZoneCsvRecord { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 311 | pub start_time_rfc3339: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 328 | pub table: Option, // Table ID is usually numeric [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ZoneCsvRecord` 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 `total_zones_detected` and `candles_analyzed` are never read [INFO] [stdout] --> src/zones/zone_detection.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct ZoneDetectionResult { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 28 | pub total_zones_detected: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 29 | pub candles_analyzed: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ZoneDetectionResult` 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 `detect_zones_batch` is never used [INFO] [stdout] --> src/zones/zone_detection.rs:416:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl ZoneDetectionEngine { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 416 | pub fn detect_zones_batch( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `trade_with_executor` is never used [INFO] [stdout] --> src/zones/patterns/mod.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub trait PatternRecognizer { [INFO] [stdout] | ----------------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 27 | fn trade_with_executor( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FiftyPercentBodyCandleRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/FiftyPercentBodyCandle.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct FiftyPercentBodyCandleRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BigBarRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/big_bar.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BigBarRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BullishEngulfingRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/bullish_engulfing.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct BullishEngulfingRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CombinedDemandRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct CombinedDemandRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:116:8 [INFO] [stdout] | [INFO] [stdout] 114 | impl CombinedDemandRecognizer { [INFO] [stdout] | ----------------------------- methods in this implementation [INFO] [stdout] 115 | /// Combine demand moves and zones into a single list for display [INFO] [stdout] 116 | fn combine_moves_and_zones(&self, moves: Vec, zones: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | fn calculate_atr(&self, candles: &[CandleData], period: usize) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | fn detect_significant_moves(&self, candles: &[CandleData], atr: f64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 359 | fn find_demand_zones(&self, candles: &[CandleData], demand_moves: &[Value]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | fn detect_zone_before_single_candle(&self, candles: &[CandleData], move_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | fn detect_zone_before_multi_candle(&self, candles: &[CandleData], start_idx: usize, end_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 479 | fn detect_swing_low_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn detect_base_consolidation_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Optio... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 626 | fn detect_dbr_pattern_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 702 | fn filter_overlapping_zones(&self, zones: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConsolidationRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/consolidation.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct ConsolidationRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_consolidation_zones` and `find_consolidation_starting_at` are never used [INFO] [stdout] --> src/zones/patterns/consolidation.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl ConsolidationRecognizer { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] 108 | pub fn find_consolidation_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn find_consolidation_starting_at(&self, candles: &[CandleData], start_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DemandMoveAwayRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct DemandMoveAwayRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `calculate_atr` and `detect_significant_moves` are never used [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:101:8 [INFO] [stdout] | [INFO] [stdout] 99 | impl DemandMoveAwayRecognizer { [INFO] [stdout] | ----------------------------- methods in this implementation [INFO] [stdout] 100 | /// Calculate Average True Range (ATR) for volatility reference [INFO] [stdout] 101 | fn calculate_atr(&self, candles: &[CandleData], period: usize) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn detect_significant_moves(&self, candles: &[CandleData], atr: f64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FlexibleDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/demand_zone.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct FlexibleDemandZoneRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `detect_swing_low_zones`, `detect_rejection_candle_zones`, `detect_consolidation_breakout_zones`, `detect_range_test_zones`, and `count_zone_retests` are never used [INFO] [stdout] --> src/zones/patterns/demand_zone.rs:187:8 [INFO] [stdout] | [INFO] [stdout] 185 | impl FlexibleDemandZoneRecognizer { [INFO] [stdout] | --------------------------------- methods in this implementation [INFO] [stdout] 186 | /// Detect swing low reversals that form demand zones [INFO] [stdout] 187 | fn detect_swing_low_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | fn detect_rejection_candle_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 407 | fn detect_consolidation_breakout_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 527 | fn detect_range_test_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 639 | fn count_zone_retests(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, zone_high: f64, zone_low: f64) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DropBaseRallyRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/drop_base_rally.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct DropBaseRallyRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/drop_base_rally.rs:161:8 [INFO] [stdout] | [INFO] [stdout] 159 | impl DropBaseRallyRecognizer { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] 160 | /// Calculate the body to wick ratio of a candle [INFO] [stdout] 161 | fn calculate_body_to_wick_ratio(&self, candle: &CandleData) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | fn is_bearish_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | fn is_bullish_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn is_drop_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | fn is_rally_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | fn is_base_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 200 | fn find_dbr_pattern_starting_at(&self, candles: &[CandleData], start_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | fn calculate_pattern_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PinBarRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/pin_bar.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct PinBarRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EnhancedSupplyDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_demand.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct EnhancedSupplyDemandZoneRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/supply_demand.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 122 | impl EnhancedSupplyDemandZoneRecognizer { [INFO] [stdout] | --------------------------------------- methods in this implementation [INFO] [stdout] 123 | /// Detect the original pattern (bearish/bullish sequence) [INFO] [stdout] 124 | fn detect_original_pattern( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | fn detect_swing_pattern( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 401 | fn is_swing_low(&self, candles: &[CandleData], idx: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 415 | fn is_swing_high(&self, candles: &[CandleData], idx: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | fn calculate_swing_depth(&self, candles: &[CandleData], idx: usize, swing_type: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | fn calculate_demand_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 503 | fn calculate_supply_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | fn detect_rbr_pattern(&self, candles: &[CandleData], demand_zones: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 790 | fn detect_momentum_shift_zones(&self, candles: &[CandleData], demand_zones: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1079 | fn apply_quality_filters(&self, zones: Vec, _zone_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1120 | fn filter_overlapping_zones(&self, zones: Vec, zone_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1175 | fn zone_strength_label(&self, quality_score: f64) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SimpleSupplyDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_demand_zone_simple.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SimpleSupplyDemandZoneRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SupplyZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_zone.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SupplyZoneRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/zones/patterns/ma_crossover.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl PriceSmaCrossRecognizer { [INFO] [stdout] | ---------------------------- associated function in this implementation [INFO] [stdout] 44 | pub fn new(period: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `FiftyPercentBeforeBigBar` should have a snake case name [INFO] [stdout] --> src/zones/patterns/mod.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | mod FiftyPercentBeforeBigBar; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_percent_before_big_bar` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `FiftyPercentBodyCandle` should have a snake case name [INFO] [stdout] --> src/zones/patterns/mod.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | mod FiftyPercentBodyCandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_percent_body_candle` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `entry_price` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:304:9 [INFO] [stdout] | [INFO] [stdout] 304 | entry_price: f64, entry_time: Option<&str>, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entry_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `zone_high` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:305:9 [INFO] [stdout] | [INFO] [stdout] 305 | zone_high: f64, zone_low: f64, zone_time: Option<&str> [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_zone_high` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `zone_low` [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:305:25 [INFO] [stdout] | [INFO] [stdout] 305 | zone_high: f64, zone_low: f64, zone_time: Option<&str> [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_zone_low` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pending_order_manager` [INFO] [stdout] --> src/bin/zone_monitor/state.rs:429:13 [INFO] [stdout] | [INFO] [stdout] 429 | let pending_order_manager = Arc::clone(&self.pending_order_manager); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pending_order_manager` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end_idx` [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:435:89 [INFO] [stdout] | [INFO] [stdout] 435 | fn detect_zone_before_multi_candle(&self, candles: &[CandleData], start_idx: usize, end_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_end_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/zone_monitor/main.rs:306:29 [INFO] [stdout] | [INFO] [stdout] 306 | let mut pending_order_manager = state.pending_order_manager.write().await; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `current_score` [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:312:25 [INFO] [stdout] | [INFO] [stdout] 312 | let current_score = m["strength_score"].as_f64().unwrap_or(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_score` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `existing_score` [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:313:25 [INFO] [stdout] | [INFO] [stdout] 313 | let existing_score = existing["strength_score"].as_f64().unwrap_or(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_existing_score` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> src/bin/zone_monitor/main.rs:513:11 [INFO] [stdout] | [INFO] [stdout] 513 | State(state): State, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SingleZoneQueryParams` is never constructed [INFO] [stdout] --> src/api/detect.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | pub struct SingleZoneQueryParams { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `debug_bulk_zones_handler` is never used [INFO] [stdout] --> src/api/detect.rs:749:14 [INFO] [stdout] | [INFO] [stdout] 749 | pub async fn debug_bulk_zones_handler(query: web::Query) -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_touches_within_range` is never used [INFO] [stdout] --> src/api/detect.rs:1329:8 [INFO] [stdout] | [INFO] [stdout] 1329 | pub fn calculate_touches_within_range( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fetch_candles_direct` is never used [INFO] [stdout] --> src/api/detect.rs:1728:14 [INFO] [stdout] | [INFO] [stdout] 1728 | pub async fn fetch_candles_direct( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `enrich_zones_with_activity` is never used [INFO] [stdout] --> src/api/detect.rs:1813:8 [INFO] [stdout] | [INFO] [stdout] 1813 | pub fn enrich_zones_with_activity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `debug_zone_enrichment_step_by_step` is never used [INFO] [stdout] --> src/api/detect.rs:2043:8 [INFO] [stdout] | [INFO] [stdout] 2043 | pub fn debug_zone_enrichment_step_by_step( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_minimal_cache_zones_debug` is never used [INFO] [stdout] --> src/api/cache_endpoints.rs:83:14 [INFO] [stdout] | [INFO] [stdout] 83 | pub async fn get_minimal_cache_zones_debug() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timestamp` is never read [INFO] [stdout] --> src/api/mobile_dashboard.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct PriceUpdate { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | pub timestamp: DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PriceUpdate` 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 `overall_summary` is never read [INFO] [stdout] --> src/api/optimize_handler.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 131 | pub struct MultiBacktestResult { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 132 | pub overall_summary: OverallSummary, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MultiBacktestResult` 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 `losing_trades`, `win_rate`, and `profit_factor` are never read [INFO] [stdout] --> src/api/optimize_handler.rs:168:5 [INFO] [stdout] | [INFO] [stdout] 165 | struct TradeTaskSummary { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 168 | losing_trades: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 169 | total_pnl_pips: f64, [INFO] [stdout] 170 | win_rate: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 171 | profit_factor: f64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeTaskSummary` 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 `zone_id`, `zone_low`, `zone_high`, `strength`, and `timeframe` are never read [INFO] [stdout] --> src/api/test_trade_handler.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct TestTradeRequest { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub zone_id: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 19 | pub zone_low: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 20 | pub zone_high: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 21 | pub strength: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 22 | pub timeframe: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TestTradeRequest` 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 `trade_notifications`, `previous_zone_triggers`, and `current_prices` are never read [INFO] [stdout] --> src/cache/minimal_zone_cache.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct MinimalZoneCache { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 34 | trade_notifications: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 35 | previous_zone_triggers: HashMap, // zone_id -> was_triggered [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | current_prices: HashMap, // symbol -> price [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_price_and_check_triggers`, `check_zone_trigger`, `get_trade_notifications`, `clear_trade_notifications`, and `get_current_prices` are never used [INFO] [stdout] --> src/cache/minimal_zone_cache.rs:346:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl MinimalZoneCache { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 346 | pub fn update_price_and_check_triggers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 411 | fn check_zone_trigger(&self, zone: &EnrichedZone, current_price: f64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 432 | pub fn get_trade_notifications(&self) -> &Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 436 | pub fn clear_trade_notifications(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn get_current_prices(&self) -> &HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_zone_monitor`, `stop`, `is_running`, and `update_now` are never used [INFO] [stdout] --> src/cache/realtime_cache_updater.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl RealtimeCacheUpdater { [INFO] [stdout] | ------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn with_zone_monitor(mut self, zone_monitor: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub async fn stop(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub async fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub async fn update_now(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `query_influxdb_hardcoded` is never used [INFO] [stdout] --> src/data/influx_fetcher.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | pub async fn query_influxdb_hardcoded() -> Result, Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_hardcoded_query_results` is never used [INFO] [stdout] --> src/data/influx_fetcher.rs:84:14 [INFO] [stdout] | [INFO] [stdout] 84 | pub async fn log_hardcoded_query_results() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_data_request_handler` is never used [INFO] [stdout] --> src/data/influx_fetcher.rs:102:14 [INFO] [stdout] | [INFO] [stdout] 102 | pub async fn test_data_request_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ParseError` and `InternalError` are never constructed [INFO] [stdout] --> src/errors.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum ServiceError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | ParseError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | InternalError, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ServiceError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProximityCheckQuery` is never constructed [INFO] [stdout] --> src/handlers.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct ProximityCheckQuery { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_trade_notifications_handler` is never used [INFO] [stdout] --> src/handlers.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | pub async fn get_trade_notifications_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_trade_notifications_handler` is never used [INFO] [stdout] --> src/handlers.rs:46:14 [INFO] [stdout] | [INFO] [stdout] 46 | pub async fn clear_trade_notifications_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_validated_signals_handler` is never used [INFO] [stdout] --> src/handlers.rs:54:14 [INFO] [stdout] | [INFO] [stdout] 54 | pub async fn get_validated_signals_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_validated_signals_handler` is never used [INFO] [stdout] --> src/handlers.rs:63:14 [INFO] [stdout] | [INFO] [stdout] 63 | pub async fn clear_validated_signals_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_trading_status` is never used [INFO] [stdout] --> src/handlers.rs:71:14 [INFO] [stdout] | [INFO] [stdout] 71 | pub async fn get_trading_status() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_validated_signals_from_engine` is never used [INFO] [stdout] --> src/handlers.rs:79:14 [INFO] [stdout] | [INFO] [stdout] 79 | pub async fn get_validated_signals_from_engine() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_validated_signals_from_engine` is never used [INFO] [stdout] --> src/handlers.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | pub async fn clear_validated_signals_from_engine() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reload_trading_rules` is never used [INFO] [stdout] --> src/handlers.rs:94:14 [INFO] [stdout] | [INFO] [stdout] 94 | pub async fn reload_trading_rules() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `manual_trade_test` is never used [INFO] [stdout] --> src/handlers.rs:101:14 [INFO] [stdout] | [INFO] [stdout] 101 | pub async fn manual_trade_test( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_notifications_handler` is never used [INFO] [stdout] --> src/handlers.rs:118:14 [INFO] [stdout] | [INFO] [stdout] 118 | pub async fn test_notifications_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `send_daily_summary_handler` is never used [INFO] [stdout] --> src/handlers.rs:126:14 [INFO] [stdout] | [INFO] [stdout] 126 | pub async fn send_daily_summary_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_proximity_alert_handler` is never used [INFO] [stdout] --> src/handlers.rs:134:14 [INFO] [stdout] | [INFO] [stdout] 134 | pub async fn test_proximity_alert_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_proximity_status_handler` is never used [INFO] [stdout] --> src/handlers.rs:142:14 [INFO] [stdout] | [INFO] [stdout] 142 | pub async fn get_proximity_status_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_proximity_distances_handler` is never used [INFO] [stdout] --> src/handlers.rs:171:14 [INFO] [stdout] | [INFO] [stdout] 171 | pub async fn get_proximity_distances_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_zones_within_proximity_handler` is never used [INFO] [stdout] --> src/handlers.rs:179:14 [INFO] [stdout] | [INFO] [stdout] 179 | pub async fn get_zones_within_proximity_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_proximity_distance_handler` is never used [INFO] [stdout] --> src/handlers.rs:186:14 [INFO] [stdout] | [INFO] [stdout] 186 | pub async fn check_proximity_distance_handler( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `trigger_proximity_check_handler` is never used [INFO] [stdout] --> src/handlers.rs:208:14 [INFO] [stdout] | [INFO] [stdout] 208 | pub async fn trigger_proximity_check_handler() -> impl Responder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NotificationManager` is never constructed [INFO] [stdout] --> src/notifications/notification_manager.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct NotificationManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/notifications/notification_manager.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl NotificationManager { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub async fn notify_proximity_alert(&self, symbol: &str, current_price: f64, zone_type: &str, zone_high: f64, zone_low: f64, zone_id:... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub async fn notify_inside_zone_alert( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub async fn notify_trade_signal(&self, signal: &ValidatedTradeSignal) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub async fn notify_blocked_trade_signal( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub async fn test_notifications(&self) -> (bool, bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub async fn send_daily_summary(&self, signals_today: u32, max_signals: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub async fn notify_startup(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub async fn send_custom_telegram_message(&self, message: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `GLOBAL_NOTIFICATION_MANAGER` is never used [INFO] [stdout] --> src/notifications/notification_manager.rs:203:8 [INFO] [stdout] | [INFO] [stdout] 203 | static GLOBAL_NOTIFICATION_MANAGER: LazyLock< [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_global_notification_manager` is never used [INFO] [stdout] --> src/notifications/notification_manager.rs:207:8 [INFO] [stdout] | [INFO] [stdout] 207 | pub fn get_global_notification_manager() -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_global_notification_manager` is never used [INFO] [stdout] --> src/notifications/notification_manager.rs:211:8 [INFO] [stdout] | [INFO] [stdout] 211 | pub fn set_global_notification_manager(manager: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TelegramNotifier` is never constructed [INFO] [stdout] --> src/notifications/telegram_notifier.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct TelegramNotifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/notifications/telegram_notifier.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl TelegramNotifier { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 16 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub async fn send_trade_signal(&self, signal: &ValidatedTradeSignal) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | fn categorize_blocking_rule(&self, rejection_reason: &str) -> (&'static str, &'static str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub async fn send_test_message(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub async fn send_proximity_alert(&self, symbol: &str, current_price: f64, zone_type: &str, zone_high: f64, zone_low: f64, zone_id: &... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | pub async fn send_inside_zone_alert( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 337 | pub async fn send_daily_summary(&self, signals_today: u32, max_signals: u32) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 390 | pub async fn send_blocked_trade_signal( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | pub async fn send_custom_message(&self, message: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SoundNotifier` is never constructed [INFO] [stdout] --> src/notifications/sound_notifier.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct SoundNotifier { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/notifications/sound_notifier.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl SoundNotifier { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub async fn play_proximity_alert(&self, symbol: &str, zone_type: &str, distance_pips: f64) -> Result<(), Box Result<(), Box Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 188 | pub async fn play_trade_signal(&self, signal: &ValidatedTradeSignal) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub async fn play_sound(&self, sound_file: &str) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub async fn play_test_sound(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 284 | pub async fn play_startup_sound(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub async fn play_blocked_trade_alert( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `which_command_exists` is never used [INFO] [stdout] --> src/notifications/sound_notifier.rs:329:4 [INFO] [stdout] | [INFO] [stdout] 329 | fn which_command_exists(command: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `last_price_time` is never read [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 39 | pub struct LiveZoneStatus { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 42 | pub last_price_time: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LiveZoneStatus` 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 `latest_prices`, `trade_engine`, and `proximity_alert_cache` are never read [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct NewRealTimeZoneMonitor { [INFO] [stdout] | ---------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 57 | latest_prices: Arc)>>>, // symbol -> (price, time) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | trade_engine: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 63 | [INFO] [stdout] 64 | proximity_alert_cache: Arc>>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 67 | impl NewRealTimeZoneMonitor { [INFO] [stdout] | --------------------------- associated items in this implementation [INFO] [stdout] 68 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub async fn update_price( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | pub async fn get_all_zones_for_ws(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn subscribe_to_events(&self) -> tokio::sync::broadcast::Receiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 444 | pub async fn get_current_price(&self, symbol: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub async fn get_current_price_for_timeframe( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 476 | pub async fn get_all_current_prices(&self) -> HashMap)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 482 | pub async fn get_current_prices_by_symbol(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | pub async fn update_price_with_cache_notifications( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 835 | pub async fn get_trade_notifications_from_cache(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 841 | pub async fn clear_cache_notifications(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 846 | pub async fn get_validated_signals(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 851 | pub async fn get_daily_signal_count(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 856 | pub async fn reload_trading_rules(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 861 | pub async fn clear_validated_signals(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 866 | pub async fn get_proximity_distances_debug(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 947 | pub async fn get_zones_within_proximity(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 955 | async fn check_proximity_for_price_update(&self, symbol: &str, price: f64, timeframe: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProximityDebugInfo` is never constructed [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:1129:12 [INFO] [stdout] | [INFO] [stdout] 1129 | pub struct ProximityDebugInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_pips_distance_simple` is never used [INFO] [stdout] --> src/realtime/realtime_zone_monitor.rs:1145:4 [INFO] [stdout] | [INFO] [stdout] 1145 | fn calculate_pips_distance_simple(symbol: &str, price1: f64, price2: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProximityState` is never constructed [INFO] [stdout] --> src/realtime/proximity_detector.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct ProximityState { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProximityDetector` is never constructed [INFO] [stdout] --> src/realtime/proximity_detector.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct ProximityDetector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `check_proximity`, `cleanup_old_states`, `get_proximity_threshold`, and `is_enabled` are never used [INFO] [stdout] --> src/realtime/proximity_detector.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl ProximityDetector { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 25 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub async fn check_proximity(&mut self, symbol: &str, current_price: f64, zone: &StoredZone, timeframe: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn cleanup_old_states(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn get_proximity_threshold(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 204 | pub fn is_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_pips_distance` is never used [INFO] [stdout] --> src/realtime/proximity_detector.rs:210:4 [INFO] [stdout] | [INFO] [stdout] 210 | fn calculate_pips_distance(symbol: &str, price1: f64, price2: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_pip_value_for_symbol` is never used [INFO] [stdout] --> src/realtime/proximity_detector.rs:216:4 [INFO] [stdout] | [INFO] [stdout] 216 | fn get_pip_value_for_symbol(symbol: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/trading/trade_decision_engine.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct TradingRules { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 27 | // Symbol filtering [INFO] [stdout] 28 | pub allowed_symbols: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub allowed_timeframes: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub allowed_weekdays: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub min_touch_count: i32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 38 | pub max_touch_count: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 39 | pub min_zone_strength: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub trading_start_hour_utc: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 43 | pub trading_end_hour_utc: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub zone_cooldown_minutes: u64, // Prevent re-triggering same zone [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub trading_enabled: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 50 | pub max_daily_signals: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradingRules` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_env` and `log_current_settings` are never used [INFO] [stdout] --> src/trading/trade_decision_engine.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl TradingRules { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 54 | pub fn from_env() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn log_current_settings(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rules`, `triggered_zones`, `daily_signal_count`, `last_reset_date`, `validated_signals`, and `zone_cache` are never read [INFO] [stdout] --> src/trading/trade_decision_engine.rs:172:5 [INFO] [stdout] | [INFO] [stdout] 171 | pub struct TradeDecisionEngine { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 172 | rules: TradingRules, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 173 | triggered_zones: HashMap>, // zone_id -> last_trigger_time [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 174 | daily_signal_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 175 | last_reset_date: DateTime, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 176 | validated_signals: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 177 | zone_cache: Option>>, // ← Fixed with proper imports [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/trading/trade_decision_engine.rs:181:12 [INFO] [stdout] | [INFO] [stdout] 180 | impl TradeDecisionEngine { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 181 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn new_with_cache(zone_cache: Arc>) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub fn reload_rules(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | pub async fn process_notification( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | async fn validate_notification(&self, notification: &TradeNotification) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 376 | async fn get_zone_touch_count(&self, zone_id: &str) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | fn create_validated_signal( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn reset_daily_counter_if_needed(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | pub fn get_validated_signals(&self) -> &Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 427 | pub fn get_daily_signal_count(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 431 | pub fn get_rules(&self) -> &TradingRules { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | pub fn clear_signals(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn cleanup_old_triggers(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | pub async fn process_notification_with_reason( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 480 | pub async fn debug_validate_notification(&self, notification: &TradeNotification) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 587 | pub async fn process_notification_enhanced( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TradeEventType` is never used [INFO] [stdout] --> src/trading/trade_event_logger.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum TradeEventType { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TradeLogEntry` is never constructed [INFO] [stdout] --> src/trading/trade_event_logger.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct TradeLogEntry { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HistoricalTradeAnalysis` is never constructed [INFO] [stdout] --> src/trading/trade_event_logger.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 38 | pub struct HistoricalTradeAnalysis { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SimulatedPricePoint` is never constructed [INFO] [stdout] --> src/trading/trade_event_logger.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct SimulatedPricePoint { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TradeEventLogger` is never constructed [INFO] [stdout] --> src/trading/trade_event_logger.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct TradeEventLogger { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/trading/trade_event_logger.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 68 | impl TradeEventLogger { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 69 | pub fn new() -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn get_log_file_path(&self) -> &PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | async fn check_and_rollover(&mut self) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 210 | pub async fn analyze_historical_trades( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | fn generate_today_triggers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 394 | fn get_zone_strength_by_id(&self, zones: &[EnrichedZone], zone_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 400 | async fn log( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 434 | pub async fn log_notification_received(&self, notification: &TradeNotification) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 444 | pub async fn log_signal_validated(&self, signal: &ValidatedTradeSignal) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub async fn log_signal_rejected( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub async fn force_rollover_check(&mut self) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | async fn log_historical_notification(&self, notification: &TradeNotification) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 488 | async fn log_historical_validated(&self, signal: &ValidatedTradeSignal) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 502 | async fn log_historical_rejected( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 517 | async fn write_to_csv(&self, signal: &ValidatedTradeSignal, event_type: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | async fn log_analysis_summary(&self, analysis: &HistoricalTradeAnalysis) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 554 | pub fn has_completed_historical_analysis(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `clear_rejected_trades` is never used [INFO] [stdout] --> src/trading/trading.rs:76:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl TradeExecutor { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn clear_rejected_trades(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `strength`, `touch_count`, `created_at`, and `bars_active` are never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct CachedZone { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 14 | pub strength: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 15 | pub timeframe: String, [INFO] [stdout] 16 | pub touch_count: i32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 17 | pub created_at: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 18 | pub start_time: String, [INFO] [stdout] 19 | pub bars_active: i32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CachedZone` 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 `placed_at` is never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct PendingOrder { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 30 | pub placed_at: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PendingOrder` 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 `last_updated` is never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct SharedZones { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 35 | pub last_updated: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SharedZones` 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 `last_updated` is never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct SharedPendingOrders { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 41 | pub last_updated: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SharedPendingOrders` 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 `match_details` is never read [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct ZoneMatchResult { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 50 | pub match_details: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ZoneMatchResult` 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 `match_zone` and `calculate_zone_similarity` are never used [INFO] [stdout] --> src/trading/backtest/zone_matcher.rs:218:12 [INFO] [stdout] | [INFO] [stdout] 58 | impl ZoneMatcher { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn match_zone( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 334 | fn calculate_zone_similarity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `start_time_rfc3339` and `table` are never read [INFO] [stdout] --> src/types.rs:311:9 [INFO] [stdout] | [INFO] [stdout] 293 | pub struct ZoneCsvRecord { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 311 | pub start_time_rfc3339: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 328 | pub table: Option, // Table ID is usually numeric [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ZoneCsvRecord` 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 `total_zones_detected` and `candles_analyzed` are never read [INFO] [stdout] --> src/zones/zone_detection.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct ZoneDetectionResult { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 28 | pub total_zones_detected: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 29 | pub candles_analyzed: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ZoneDetectionResult` 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 `detect_zones_batch` is never used [INFO] [stdout] --> src/zones/zone_detection.rs:416:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl ZoneDetectionEngine { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 416 | pub fn detect_zones_batch( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `trade_with_executor` is never used [INFO] [stdout] --> src/zones/patterns/mod.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub trait PatternRecognizer { [INFO] [stdout] | ----------------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 27 | fn trade_with_executor( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FiftyPercentBodyCandleRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/FiftyPercentBodyCandle.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct FiftyPercentBodyCandleRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BigBarRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/big_bar.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BigBarRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BullishEngulfingRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/bullish_engulfing.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct BullishEngulfingRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CombinedDemandRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct CombinedDemandRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/combined_demand.rs:116:8 [INFO] [stdout] | [INFO] [stdout] 114 | impl CombinedDemandRecognizer { [INFO] [stdout] | ----------------------------- methods in this implementation [INFO] [stdout] 115 | /// Combine demand moves and zones into a single list for display [INFO] [stdout] 116 | fn combine_moves_and_zones(&self, moves: Vec, zones: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | fn calculate_atr(&self, candles: &[CandleData], period: usize) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | fn detect_significant_moves(&self, candles: &[CandleData], atr: f64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 359 | fn find_demand_zones(&self, candles: &[CandleData], demand_moves: &[Value]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | fn detect_zone_before_single_candle(&self, candles: &[CandleData], move_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | fn detect_zone_before_multi_candle(&self, candles: &[CandleData], start_idx: usize, end_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 479 | fn detect_swing_low_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn detect_base_consolidation_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Optio... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 626 | fn detect_dbr_pattern_zone(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, move_candle: &CandleData) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 702 | fn filter_overlapping_zones(&self, zones: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConsolidationRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/consolidation.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct ConsolidationRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_consolidation_zones` and `find_consolidation_starting_at` are never used [INFO] [stdout] --> src/zones/patterns/consolidation.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl ConsolidationRecognizer { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] 108 | pub fn find_consolidation_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn find_consolidation_starting_at(&self, candles: &[CandleData], start_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DemandMoveAwayRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct DemandMoveAwayRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `calculate_atr` and `detect_significant_moves` are never used [INFO] [stdout] --> src/zones/patterns/demand_move_away.rs:101:8 [INFO] [stdout] | [INFO] [stdout] 99 | impl DemandMoveAwayRecognizer { [INFO] [stdout] | ----------------------------- methods in this implementation [INFO] [stdout] 100 | /// Calculate Average True Range (ATR) for volatility reference [INFO] [stdout] 101 | fn calculate_atr(&self, candles: &[CandleData], period: usize) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn detect_significant_moves(&self, candles: &[CandleData], atr: f64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FlexibleDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/demand_zone.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct FlexibleDemandZoneRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `detect_swing_low_zones`, `detect_rejection_candle_zones`, `detect_consolidation_breakout_zones`, `detect_range_test_zones`, and `count_zone_retests` are never used [INFO] [stdout] --> src/zones/patterns/demand_zone.rs:187:8 [INFO] [stdout] | [INFO] [stdout] 185 | impl FlexibleDemandZoneRecognizer { [INFO] [stdout] | --------------------------------- methods in this implementation [INFO] [stdout] 186 | /// Detect swing low reversals that form demand zones [INFO] [stdout] 187 | fn detect_swing_low_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | fn detect_rejection_candle_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 407 | fn detect_consolidation_breakout_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 527 | fn detect_range_test_zones(&self, candles: &[CandleData]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 639 | fn count_zone_retests(&self, candles: &[CandleData], start_idx: usize, end_idx: usize, zone_high: f64, zone_low: f64) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DropBaseRallyRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/drop_base_rally.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct DropBaseRallyRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/drop_base_rally.rs:161:8 [INFO] [stdout] | [INFO] [stdout] 159 | impl DropBaseRallyRecognizer { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] 160 | /// Calculate the body to wick ratio of a candle [INFO] [stdout] 161 | fn calculate_body_to_wick_ratio(&self, candle: &CandleData) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | fn is_bearish_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | fn is_bullish_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn is_drop_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | fn is_rally_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | fn is_base_candle(&self, candle: &CandleData) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 200 | fn find_dbr_pattern_starting_at(&self, candles: &[CandleData], start_idx: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | fn calculate_pattern_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PinBarRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/pin_bar.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct PinBarRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RallyRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/rally.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct RallyRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EnhancedSupplyDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_demand.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct EnhancedSupplyDemandZoneRecognizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/zones/patterns/supply_demand.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 122 | impl EnhancedSupplyDemandZoneRecognizer { [INFO] [stdout] | --------------------------------------- methods in this implementation [INFO] [stdout] 123 | /// Detect the original pattern (bearish/bullish sequence) [INFO] [stdout] 124 | fn detect_original_pattern( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | fn detect_swing_pattern( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 401 | fn is_swing_low(&self, candles: &[CandleData], idx: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 415 | fn is_swing_high(&self, candles: &[CandleData], idx: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | fn calculate_swing_depth(&self, candles: &[CandleData], idx: usize, swing_type: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | fn calculate_demand_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 503 | fn calculate_supply_quality( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | fn detect_rbr_pattern(&self, candles: &[CandleData], demand_zones: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 790 | fn detect_momentum_shift_zones(&self, candles: &[CandleData], demand_zones: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1079 | fn apply_quality_filters(&self, zones: Vec, _zone_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1120 | fn filter_overlapping_zones(&self, zones: Vec, zone_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1175 | fn zone_strength_label(&self, quality_score: f64) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SimpleSupplyDemandZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_demand_zone_simple.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SimpleSupplyDemandZoneRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SupplyZoneRecognizer` is never constructed [INFO] [stdout] --> src/zones/patterns/supply_zone.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct SupplyZoneRecognizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/zones/patterns/ma_crossover.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl PriceSmaCrossRecognizer { [INFO] [stdout] | ---------------------------- associated function in this implementation [INFO] [stdout] 44 | pub fn new(period: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `FiftyPercentBeforeBigBar` should have a snake case name [INFO] [stdout] --> src/zones/patterns/mod.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | mod FiftyPercentBeforeBigBar; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_percent_before_big_bar` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `FiftyPercentBodyCandle` should have a snake case name [INFO] [stdout] --> src/zones/patterns/mod.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | mod FiftyPercentBodyCandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_percent_body_candle` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/zone_monitor/main.rs:306:29 [INFO] [stdout] | [INFO] [stdout] 306 | let mut pending_order_manager = state.pending_order_manager.write().await; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> src/bin/zone_monitor/main.rs:513:11 [INFO] [stdout] | [INFO] [stdout] 513 | State(state): State, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/zone_monitor/db/order_db.rs:416:13 [INFO] [stdout] | [INFO] [stdout] 416 | let mut fields = vec![ [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/zone_monitor/db/order_db.rs:416:13 [INFO] [stdout] | [INFO] [stdout] 416 | let mut fields = vec![ [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `redis_client` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:194:13 [INFO] [stdout] | [INFO] [stdout] 194 | let redis_client = match Client::open("redis://127.0.0.1:6379/") { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_redis_client` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `strategies` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:110:16 [INFO] [stdout] | [INFO] [stdout] 110 | pub fn new(strategies: Option<&StrategyManager>) -> Self { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategies` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `redis_client` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:194:13 [INFO] [stdout] | [INFO] [stdout] 194 | let redis_client = match Client::open("redis://127.0.0.1:6379/") { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_redis_client` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `strategies` [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:110:16 [INFO] [stdout] | [INFO] [stdout] 110 | pub fn new(strategies: Option<&StrategyManager>) -> Self { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategies` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `PositionsResponse` is more private than the item `ActiveOrderManager::fetch_open_positions` [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:162:5 [INFO] [stdout] | [INFO] [stdout] 162 | pub async fn fetch_open_positions(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ActiveOrderManager::fetch_open_positions` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `PositionsResponse` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:79:1 [INFO] [stdout] | [INFO] [stdout] 79 | struct PositionsResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_pip_value` is never used [INFO] [stdout] --> src/bin/zone_monitor/booked_trades.rs:221:4 [INFO] [stdout] | [INFO] [stdout] 221 | fn get_pip_value(symbol: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/bin/zone_monitor/db/order_db.rs:103:18 [INFO] [stdout] | [INFO] [stdout] 91 | impl OrderDatabase { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub async fn write_order_event(&self, event: &OrderEvent) -> Result<(), OrderDbError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 368 | async fn deal_already_exists(&self, deal_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 467 | pub async fn get_enriched_deals_stats( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 540 | pub async fn get_order_lifecycle( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 557 | pub async fn get_orders_by_date( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 576 | pub async fn get_enriched_deals_by_date( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 597 | pub async fn get_enriched_deals_by_zone( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | pub async fn get_order_by_ctrader_id( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 633 | pub async fn get_order_by_position_id( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 650 | fn event_to_line_protocol(&self, event: &OrderEvent) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 729 | async fn execute_flux_query(&self, query: &str) -> Result, OrderDbError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 768 | async fn execute_flux_query_simple(&self, query: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 812 | fn parse_flux_response(&self, _csv_data: &str) -> Result, OrderDbError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `OrderStatus` is never used [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:8:10 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum OrderStatus { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderEvent` is never constructed [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct OrderEvent { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new_pending`, `to_filled`, `to_closed`, and `to_cancelled` are never used [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl OrderEvent { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 65 | /// Create a new PENDING order event [INFO] [stdout] 66 | pub fn new_pending( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn to_filled(&self, ctrader_position_id: String, fill_price: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn to_closed( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn to_cancelled(&self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderEventBuilder` is never constructed [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:142:12 [INFO] [stdout] | [INFO] [stdout] 142 | pub struct OrderEventBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `with_zone_metadata`, `with_ctrader_order_id`, and `build` are never used [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:147:12 [INFO] [stdout] | [INFO] [stdout] 146 | impl OrderEventBuilder { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 147 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | pub fn with_zone_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn with_ctrader_order_id(mut self, ctrader_order_id: String) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | pub fn build(self) -> OrderEvent { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `error` is never read [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 99 | struct PlacePendingOrderResponse { [INFO] [stdout] | ------------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 106 | error: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PlacePendingOrderResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fetch_broker_deals_for_date` is never used [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1004:18 [INFO] [stdout] | [INFO] [stdout] 109 | impl PendingOrderManager { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 1004 | pub async fn fetch_broker_deals_for_date( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `alert_threshold_pips` is never read [INFO] [stdout] --> src/bin/zone_monitor/proximity.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct ProximityDetector { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 9 | pub alert_threshold_pips: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProximityDetector` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `check_zone_proximity` is never used [INFO] [stdout] --> src/bin/zone_monitor/proximity.rs:22:18 [INFO] [stdout] | [INFO] [stdout] 12 | impl ProximityDetector { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 22 | pub async fn check_zone_proximity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_proximity_zones_count`, `cleanup_old_triggered_zones`, and `is_enabled` are never used [INFO] [stdout] --> src/bin/zone_monitor/proximity_logger.rs:286:12 [INFO] [stdout] | [INFO] [stdout] 58 | impl ProximityLogger { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn get_proximity_zones_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 291 | pub fn cleanup_old_triggered_zones(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 306 | pub fn is_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `proximity_detector` is never read [INFO] [stdout] --> src/bin/zone_monitor/state.rs:96:9 [INFO] [stdout] | [INFO] [stdout] 91 | pub struct MonitorState { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 96 | pub proximity_detector: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonitorState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/bin/zone_monitor/state.rs:384:14 [INFO] [stdout] | [INFO] [stdout] 114 | impl MonitorState { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 384 | async fn start_zone_interaction_midnight_cleanup(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 897 | pub async fn get_zone_cooldown_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 906 | pub async fn get_zone_state_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 917 | pub async fn reset_zone_state(&self, zone_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 947 | pub async fn close_trade( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 975 | pub async fn has_active_trades(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 980 | pub async fn get_active_trades_summary(&self) -> serde_json::Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1147 | pub async fn update_notification_trading_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_strategy_for_symbol` and `get_all_strategies` are never used [INFO] [stdout] --> src/bin/zone_monitor/strategy_manager.rs:201:18 [INFO] [stdout] | [INFO] [stdout] 48 | impl StrategyManager { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 201 | pub async fn has_strategy_for_symbol(&self, symbol: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub async fn get_all_strategies(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `min_risk_reward` is never read [INFO] [stdout] --> src/bin/zone_monitor/trade_rules.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct TradeRulesConfig { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | pub min_risk_reward: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeRulesConfig` 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 `distance_pips` is never read [INFO] [stdout] --> src/bin/zone_monitor/trade_rules.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 81 | pub struct TradeEvaluation { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 84 | pub distance_pips: f64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeEvaluation` 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 `get_config` and `reload_config` are never used [INFO] [stdout] --> src/bin/zone_monitor/trade_rules.rs:237:12 [INFO] [stdout] | [INFO] [stdout] 94 | impl TradeRulesEngine { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn get_config(&self) -> &TradeRulesConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn reload_config(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `close_trade` is never used [INFO] [stdout] --> src/bin/zone_monitor/trading_engine.rs:692:18 [INFO] [stdout] | [INFO] [stdout] 191 | impl TradingEngine { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 692 | pub async fn close_trade( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_zone_state_info`, `get_all_zone_states`, `reset_zone_state`, and `revert_zone_to_proximity_alerted` are never used [INFO] [stdout] --> src/bin/zone_monitor/zone_state_manager.rs:480:18 [INFO] [stdout] | [INFO] [stdout] 69 | impl ZoneStateManager { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 480 | pub async fn get_zone_state_info(&self, zone_id: &str) -> ZoneStateInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 484 | pub async fn get_all_zone_states(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | pub async fn reset_zone_state(&self, zone_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 578 | pub async fn revert_zone_to_proximity_alerted(&self, zone_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `symbolId` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:90:5 [INFO] [stdout] | [INFO] [stdout] 90 | symbolId: i32, // Symbol ID (number) [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `symbol_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `tradeSide` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 91 | tradeSide: i32, // 1 = BUY, 2 = SELL [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `trade_side` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `entryPrice` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:93:5 [INFO] [stdout] | [INFO] [stdout] 93 | entryPrice: f64, // The limit price [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `entry_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `stopLoss` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | stopLoss: Option, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `stop_loss` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `takeProfit` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:95:5 [INFO] [stdout] | [INFO] [stdout] 95 | takeProfit: Option, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `take_profit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `PositionsResponse` is more private than the item `ActiveOrderManager::fetch_open_positions` [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:162:5 [INFO] [stdout] | [INFO] [stdout] 162 | pub async fn fetch_open_positions(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ActiveOrderManager::fetch_open_positions` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `PositionsResponse` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/bin/zone_monitor/active_order_manager.rs:79:1 [INFO] [stdout] | [INFO] [stdout] 79 | struct PositionsResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_pip_value` is never used [INFO] [stdout] --> src/bin/zone_monitor/booked_trades.rs:221:4 [INFO] [stdout] | [INFO] [stdout] 221 | fn get_pip_value(symbol: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/bin/zone_monitor/db/order_db.rs:103:18 [INFO] [stdout] | [INFO] [stdout] 91 | impl OrderDatabase { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub async fn write_order_event(&self, event: &OrderEvent) -> Result<(), OrderDbError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 368 | async fn deal_already_exists(&self, deal_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 467 | pub async fn get_enriched_deals_stats( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 540 | pub async fn get_order_lifecycle( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 557 | pub async fn get_orders_by_date( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 576 | pub async fn get_enriched_deals_by_date( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 597 | pub async fn get_enriched_deals_by_zone( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | pub async fn get_order_by_ctrader_id( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 633 | pub async fn get_order_by_position_id( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 650 | fn event_to_line_protocol(&self, event: &OrderEvent) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 729 | async fn execute_flux_query(&self, query: &str) -> Result, OrderDbError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 768 | async fn execute_flux_query_simple(&self, query: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 812 | fn parse_flux_response(&self, _csv_data: &str) -> Result, OrderDbError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `OrderStatus` is never used [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:8:10 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum OrderStatus { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderEvent` is never constructed [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct OrderEvent { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new_pending`, `to_filled`, `to_closed`, and `to_cancelled` are never used [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl OrderEvent { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 65 | /// Create a new PENDING order event [INFO] [stdout] 66 | pub fn new_pending( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn to_filled(&self, ctrader_position_id: String, fill_price: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn to_closed( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn to_cancelled(&self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OrderEventBuilder` is never constructed [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:142:12 [INFO] [stdout] | [INFO] [stdout] 142 | pub struct OrderEventBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `with_zone_metadata`, `with_ctrader_order_id`, and `build` are never used [INFO] [stdout] --> src/bin/zone_monitor/db/schema.rs:147:12 [INFO] [stdout] | [INFO] [stdout] 146 | impl OrderEventBuilder { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 147 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | pub fn with_zone_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn with_ctrader_order_id(mut self, ctrader_order_id: String) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | pub fn build(self) -> OrderEvent { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `error` is never read [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 99 | struct PlacePendingOrderResponse { [INFO] [stdout] | ------------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 106 | error: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PlacePendingOrderResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fetch_broker_deals_for_date` is never used [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:1004:18 [INFO] [stdout] | [INFO] [stdout] 109 | impl PendingOrderManager { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 1004 | pub async fn fetch_broker_deals_for_date( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `alert_threshold_pips` is never read [INFO] [stdout] --> src/bin/zone_monitor/proximity.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct ProximityDetector { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 9 | pub alert_threshold_pips: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProximityDetector` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `check_zone_proximity` is never used [INFO] [stdout] --> src/bin/zone_monitor/proximity.rs:22:18 [INFO] [stdout] | [INFO] [stdout] 12 | impl ProximityDetector { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 22 | pub async fn check_zone_proximity( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_proximity_zones_count`, `cleanup_old_triggered_zones`, and `is_enabled` are never used [INFO] [stdout] --> src/bin/zone_monitor/proximity_logger.rs:286:12 [INFO] [stdout] | [INFO] [stdout] 58 | impl ProximityLogger { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn get_proximity_zones_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 291 | pub fn cleanup_old_triggered_zones(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 306 | pub fn is_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `proximity_detector` is never read [INFO] [stdout] --> src/bin/zone_monitor/state.rs:96:9 [INFO] [stdout] | [INFO] [stdout] 91 | pub struct MonitorState { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 96 | pub proximity_detector: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonitorState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/bin/zone_monitor/state.rs:384:14 [INFO] [stdout] | [INFO] [stdout] 114 | impl MonitorState { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 384 | async fn start_zone_interaction_midnight_cleanup(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 897 | pub async fn get_zone_cooldown_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 906 | pub async fn get_zone_state_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 917 | pub async fn reset_zone_state(&self, zone_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 947 | pub async fn close_trade( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 975 | pub async fn has_active_trades(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 980 | pub async fn get_active_trades_summary(&self) -> serde_json::Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1147 | pub async fn update_notification_trading_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_strategy_for_symbol` and `get_all_strategies` are never used [INFO] [stdout] --> src/bin/zone_monitor/strategy_manager.rs:201:18 [INFO] [stdout] | [INFO] [stdout] 48 | impl StrategyManager { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 201 | pub async fn has_strategy_for_symbol(&self, symbol: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub async fn get_all_strategies(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `min_risk_reward` is never read [INFO] [stdout] --> src/bin/zone_monitor/trade_rules.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct TradeRulesConfig { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | pub min_risk_reward: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeRulesConfig` 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 `distance_pips` is never read [INFO] [stdout] --> src/bin/zone_monitor/trade_rules.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 81 | pub struct TradeEvaluation { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 84 | pub distance_pips: f64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradeEvaluation` 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 `get_config` and `reload_config` are never used [INFO] [stdout] --> src/bin/zone_monitor/trade_rules.rs:237:12 [INFO] [stdout] | [INFO] [stdout] 94 | impl TradeRulesEngine { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn get_config(&self) -> &TradeRulesConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn reload_config(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `close_trade` is never used [INFO] [stdout] --> src/bin/zone_monitor/trading_engine.rs:692:18 [INFO] [stdout] | [INFO] [stdout] 191 | impl TradingEngine { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 692 | pub async fn close_trade( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_zone_state_info`, `get_all_zone_states`, `reset_zone_state`, and `revert_zone_to_proximity_alerted` are never used [INFO] [stdout] --> src/bin/zone_monitor/zone_state_manager.rs:480:18 [INFO] [stdout] | [INFO] [stdout] 69 | impl ZoneStateManager { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 480 | pub async fn get_zone_state_info(&self, zone_id: &str) -> ZoneStateInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 484 | pub async fn get_all_zone_states(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | pub async fn reset_zone_state(&self, zone_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 578 | pub async fn revert_zone_to_proximity_alerted(&self, zone_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `symbolId` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:90:5 [INFO] [stdout] | [INFO] [stdout] 90 | symbolId: i32, // Symbol ID (number) [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `symbol_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `tradeSide` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 91 | tradeSide: i32, // 1 = BUY, 2 = SELL [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `trade_side` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `entryPrice` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:93:5 [INFO] [stdout] | [INFO] [stdout] 93 | entryPrice: f64, // The limit price [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `entry_price` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `stopLoss` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | stopLoss: Option, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `stop_loss` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `takeProfit` should have a snake case name [INFO] [stdout] --> src/bin/zone_monitor/pending_order_manager.rs:95:5 [INFO] [stdout] | [INFO] [stdout] 95 | takeProfit: Option, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `take_profit` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 12s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: pattern_detector v0.1.0 (/opt/rustwide/workdir), redis v0.24.0 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "eba12e91aa805e4be5ffbbb6e261d32a6886b6594d1403beed22e5b28278f106", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eba12e91aa805e4be5ffbbb6e261d32a6886b6594d1403beed22e5b28278f106", kill_on_drop: false }` [INFO] [stdout] eba12e91aa805e4be5ffbbb6e261d32a6886b6594d1403beed22e5b28278f106