[INFO] cloning repository https://github.com/a1mart/yeast
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/a1mart/yeast" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fa1mart%2Fyeast", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fa1mart%2Fyeast'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7db3d274c6b41d81281241a9b05becf04c9f5043
[INFO] checking a1mart/yeast against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fa1mart%2Fyeast" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/a1mart/yeast
[INFO] finished tweaking git repo https://github.com/a1mart/yeast
[INFO] tweaked toml for git repo https://github.com/a1mart/yeast written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/a1mart/yeast on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/a1mart/yeast 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" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2024 which implies `resolver = "3"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2024 resolver, specify `workspace.resolver = "3"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded publicsuffix v2.3.0
[INFO] [stderr]   Downloaded tempfile v3.21.0
[INFO] [stderr]   Downloaded deranged v0.5.3
[INFO] [stderr]   Downloaded bitflags v2.9.2
[INFO] [stderr]   Downloaded url v2.5.6
[INFO] [stderr]   Downloaded cc v1.2.33
[INFO] [stderr]   Downloaded time v0.3.43
[INFO] [stderr]   Downloaded webpki-roots v1.0.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b9996f171bdbe5a81ccb30554242109c996bd4f65b017842f57698c5b7c9691d
[INFO] running `Command { std: "docker" "start" "-a" "b9996f171bdbe5a81ccb30554242109c996bd4f65b017842f57698c5b7c9691d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b9996f171bdbe5a81ccb30554242109c996bd4f65b017842f57698c5b7c9691d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b9996f171bdbe5a81ccb30554242109c996bd4f65b017842f57698c5b7c9691d", kill_on_drop: false }`
[INFO] [stdout] b9996f171bdbe5a81ccb30554242109c996bd4f65b017842f57698c5b7c9691d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2d2ca16cbbc0ffb2125ea32131491547f11cf0ffc869e6e6d25896bb5537eec3
[INFO] running `Command { std: "docker" "start" "-a" "2d2ca16cbbc0ffb2125ea32131491547f11cf0ffc869e6e6d25896bb5537eec3", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2024 which implies `resolver = "3"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2024 resolver, specify `workspace.resolver = "3"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]     Checking cfg-if v1.0.3
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling serde_json v1.0.143
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]     Checking bitflags v2.9.2
[INFO] [stderr]     Checking deranged v0.5.3
[INFO] [stderr]    Compiling cookie v0.17.0
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.100
[INFO] [stderr]    Compiling time-macros v0.2.24
[INFO] [stderr]     Checking unicode-normalization v0.1.24
[INFO] [stderr]     Checking psl-types v2.0.11
[INFO] [stderr]     Checking rustls-pemfile v1.0.4
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking idna v0.3.0
[INFO] [stderr]    Compiling rustls v0.23.31
[INFO] [stderr]     Checking webpki-roots v1.0.2
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking webpki-roots v0.25.4
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking rustls-native-certs v0.6.3
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]    Compiling wasm-bindgen v0.2.100
[INFO] [stderr]     Checking time v0.3.43
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling jobserver v0.1.33
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling cc v1.2.33
[INFO] [stderr]    Compiling cmake v0.1.54
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]    Compiling aws-lc-sys v0.30.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling wasm-bindgen-backend v0.2.100
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.100
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.100
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking publicsuffix v2.3.0
[INFO] [stderr]     Checking url v2.5.6
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking cookie_store v0.20.0
[INFO] [stderr]     Checking stox-wasm v0.1.0 (/opt/rustwide/workdir/cr8s/stox-wasm)
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> cr8s/stox-wasm/src/lib.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Serialize, Deserialize};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/vwap.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/obv.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/ichimoku.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/frama.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/chandelier_exit.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/trix.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/mfi.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/force_index.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/ease_of_movement.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/accum_dist_line.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/price_volume_trend.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/volume_oscillator.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/ultimate_oscillator.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/detrended_price_oscillator.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/roc.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/z_score.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/gmma.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/schaff_trend_cycle.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/fibonacci_retracement.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/kalman_filter_smoother.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/heikin_ashi_slope.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/percent_b.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ADX`, `ATR`, `BollingerBands`, `CCI`, `CMF`, `MACD`, `OBV`, `ParabolicSAR`, `Stochastic`, and `VWAP`
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:12:20
[INFO] [stdout]    |
[INFO] [stdout] 12 |     SMA, EMA, RSI, MACD, BollingerBands, VWAP, ATR, Stochastic, CCI, ADX, ParabolicSAR, OBV,
[INFO] [stdout]    |                    ^^^^  ^^^^^^^^^^^^^^  ^^^^  ^^^  ^^^^^^^^^^  ^^^  ^^^  ^^^^^^^^^^^^  ^^^
[INFO] [stdout] 13 |     CMF, WilliamsR, Ichimoku, Momentum, Tema, Dema, Kama, WMA, Hma, Frama, ChandelierExit,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> cr8s/stox-wasm/src/lib.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Serialize, Deserialize};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/vwap.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/obv.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/ichimoku.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/frama.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/chandelier_exit.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/trix.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/mfi.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/force_index.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/ease_of_movement.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/accum_dist_line.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/price_volume_trend.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/volume_oscillator.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/ultimate_oscillator.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/detrended_price_oscillator.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/roc.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/z_score.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/gmma.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/schaff_trend_cycle.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/fibonacci_retracement.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/kalman_filter_smoother.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/heikin_ashi_slope.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/percent_b.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ADX`, `ATR`, `BollingerBands`, `CCI`, `CMF`, `MACD`, `OBV`, `ParabolicSAR`, `Stochastic`, and `VWAP`
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:12:20
[INFO] [stdout]    |
[INFO] [stdout] 12 |     SMA, EMA, RSI, MACD, BollingerBands, VWAP, ATR, Stochastic, CCI, ADX, ParabolicSAR, OBV,
[INFO] [stdout]    |                    ^^^^  ^^^^^^^^^^^^^^  ^^^^  ^^^  ^^^^^^^^^^  ^^^  ^^^  ^^^^^^^^^^^^  ^^^
[INFO] [stdout] 13 |     CMF, WilliamsR, Ichimoku, Momentum, Tema, Dema, Kama, WMA, Hma, Frama, ChandelierExit,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `wasm_bindgen::JsValue::from_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:79:14
[INFO] [stdout]    |
[INFO] [stdout] 79 |     JsValue::from_serde(&indicators).unwrap()
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `wasm_bindgen::JsValue::into_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:84:40
[INFO] [stdout]    |
[INFO] [stdout] 84 |     let candles: Vec<Candle> = candles.into_serde().unwrap();
[INFO] [stdout]    |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `wasm_bindgen::JsValue::into_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:85:45
[INFO] [stdout]    |
[INFO] [stdout] 85 |     let options: IndicatorOptions = options.into_serde().unwrap();
[INFO] [stdout]    |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `wasm_bindgen::JsValue::from_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 89 |         JsValue::from_serde(&result).unwrap()
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `wasm_bindgen::JsValue::into_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:97:75
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let requests: Vec<(String, Vec<Candle>, IndicatorOptions)> = requests.into_serde().unwrap();
[INFO] [stdout]    |                                                                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `wasm_bindgen::JsValue::from_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]    --> cr8s/stox-wasm/src/lib.rs:104:14
[INFO] [stdout]     |
[INFO] [stdout] 104 |     JsValue::from_serde(&results).unwrap()
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sum` is never read
[INFO] [stdout]   --> cr8s/stox-wasm/src/indicators/atr.rs:22:23
[INFO] [stdout]    |
[INFO] [stdout] 22 |         let mut sum = 0.0;
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `plus_di_prev` is never read
[INFO] [stdout]   --> cr8s/stox-wasm/src/indicators/adx.rs:32:32
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let mut plus_di_prev = 0.0;
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `minus_di_prev` is never read
[INFO] [stdout]   --> cr8s/stox-wasm/src/indicators/adx.rs:33:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let mut minus_di_prev = 0.0;
[INFO] [stdout]    |                                 ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `dx_prev` is never read
[INFO] [stdout]   --> cr8s/stox-wasm/src/indicators/adx.rs:34:27
[INFO] [stdout]    |
[INFO] [stdout] 34 |         let mut dx_prev = 0.0;
[INFO] [stdout]    |                           ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stdout] warning: struct `MACD` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/macd.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MACD;
[INFO] [stdout]   |            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/macd.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl MACD {
[INFO] [stdout]   | --------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { MACD }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], short_period: usize, long_period: usize, signal_period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BollingerBands` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/bollinger_bands.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct BollingerBands;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/bollinger_bands.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl BollingerBands {
[INFO] [stdout]   | ------------------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { BollingerBands }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize, std_dev: f64) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VWAP` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/vwap.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct VWAP;
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/vwap.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl VWAP {
[INFO] [stdout]   | --------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { VWAP }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle]) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ATR` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/atr.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ATR;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/atr.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl ATR {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { ATR }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stochastic` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/stochastic.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Stochastic;
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/stochastic.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl Stochastic {
[INFO] [stdout]   | --------------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { Stochastic }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], k_period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CCI` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/cci.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct CCI;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/cci.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl CCI {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { CCI }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ADX` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/adx.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ADX;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/adx.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl ADX {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { ADX }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParabolicSAR` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/parabolic_sar.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ParabolicSAR;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/parabolic_sar.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl ParabolicSAR {
[INFO] [stdout]   | ----------------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { ParabolicSAR }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], step: f64, max_af: f64) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OBV` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/obv.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct OBV;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/obv.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl OBV {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { OBV }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle]) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CMF` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/cmf.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct CMF;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/cmf.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl CMF {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { CMF }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `wasm_bindgen::JsValue::from_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:79:14
[INFO] [stdout]    |
[INFO] [stdout] 79 |     JsValue::from_serde(&indicators).unwrap()
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `wasm_bindgen::JsValue::into_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:84:40
[INFO] [stdout]    |
[INFO] [stdout] 84 |     let candles: Vec<Candle> = candles.into_serde().unwrap();
[INFO] [stdout]    |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `wasm_bindgen::JsValue::into_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:85:45
[INFO] [stdout]    |
[INFO] [stdout] 85 |     let options: IndicatorOptions = options.into_serde().unwrap();
[INFO] [stdout]    |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `wasm_bindgen::JsValue::from_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 89 |         JsValue::from_serde(&result).unwrap()
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `wasm_bindgen::JsValue::into_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]   --> cr8s/stox-wasm/src/lib.rs:97:75
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let requests: Vec<(String, Vec<Candle>, IndicatorOptions)> = requests.into_serde().unwrap();
[INFO] [stdout]    |                                                                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `wasm_bindgen::JsValue::from_serde`: causes dependency cycles, use `serde-wasm-bindgen` or `gloo_utils::format::JsValueSerdeExt` instead
[INFO] [stdout]    --> cr8s/stox-wasm/src/lib.rs:104:14
[INFO] [stdout]     |
[INFO] [stdout] 104 |     JsValue::from_serde(&results).unwrap()
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sum` is never read
[INFO] [stdout]   --> cr8s/stox-wasm/src/indicators/atr.rs:22:23
[INFO] [stdout]    |
[INFO] [stdout] 22 |         let mut sum = 0.0;
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `plus_di_prev` is never read
[INFO] [stdout]   --> cr8s/stox-wasm/src/indicators/adx.rs:32:32
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let mut plus_di_prev = 0.0;
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `minus_di_prev` is never read
[INFO] [stdout]   --> cr8s/stox-wasm/src/indicators/adx.rs:33:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let mut minus_di_prev = 0.0;
[INFO] [stdout]    |                                 ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `dx_prev` is never read
[INFO] [stdout]   --> cr8s/stox-wasm/src/indicators/adx.rs:34:27
[INFO] [stdout]    |
[INFO] [stdout] 34 |         let mut dx_prev = 0.0;
[INFO] [stdout]    |                           ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MACD` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/macd.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MACD;
[INFO] [stdout]   |            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/macd.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl MACD {
[INFO] [stdout]   | --------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { MACD }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], short_period: usize, long_period: usize, signal_period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BollingerBands` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/bollinger_bands.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct BollingerBands;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/bollinger_bands.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl BollingerBands {
[INFO] [stdout]   | ------------------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { BollingerBands }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize, std_dev: f64) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VWAP` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/vwap.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct VWAP;
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/vwap.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl VWAP {
[INFO] [stdout]   | --------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { VWAP }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle]) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ATR` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/atr.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ATR;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/atr.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl ATR {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { ATR }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stochastic` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/stochastic.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Stochastic;
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/stochastic.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl Stochastic {
[INFO] [stdout]   | --------------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { Stochastic }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], k_period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CCI` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/cci.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct CCI;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/cci.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl CCI {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { CCI }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ADX` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/adx.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ADX;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/adx.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl ADX {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { ADX }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParabolicSAR` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/parabolic_sar.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ParabolicSAR;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/parabolic_sar.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl ParabolicSAR {
[INFO] [stdout]   | ----------------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { ParabolicSAR }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], step: f64, max_af: f64) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OBV` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/obv.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct OBV;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/obv.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl OBV {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { OBV }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle]) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CMF` is never constructed
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/cmf.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct CMF;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `calculate` are never used
[INFO] [stdout]  --> cr8s/stox-wasm/src/indicators/cmf.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl CMF {
[INFO] [stdout]   | -------- associated items in this implementation
[INFO] [stdout] 7 |     pub fn new() -> Self { CMF }
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 8 |
[INFO] [stdout] 9 |     pub(crate) fn calculate(&self, candles: &[Candle], period: usize) -> Vec<Option<f64>> {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[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]    Compiling aws-lc-rs v1.13.3
[INFO] [stderr]     Checking rustls-webpki v0.103.4
[INFO] [stderr]     Checking stox v0.1.0 (/opt/rustwide/workdir/cr8s/stox)
[INFO] [stderr]     Checking yeast v0.1.0 (/opt/rustwide/workdir/cr8s/yeast)
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> cr8s/stox/src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SystemTime`
[INFO] [stdout]  --> cr8s/stox/src/main.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{SystemTime, UNIX_EPOCH, Duration};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::consts::PI`
[INFO] [stdout]  --> cr8s/stox/src/ml_models.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::f64::consts::PI;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KMeans`
[INFO] [stdout]   --> cr8s/stox/src/main.rs:16:49
[INFO] [stdout]    |
[INFO] [stdout] 16 |     MLPipeline, LinearRegression, RandomForest, KMeans, ModelEvaluator, 
[INFO] [stdout]    |                                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Certificate`
[INFO] [stdout]   --> cr8s/stox/src/main.rs:40:50
[INFO] [stdout]    |
[INFO] [stdout] 40 |     use rustls_native_certs::{load_native_certs, Certificate};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> cr8s/stox/src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SystemTime`
[INFO] [stdout]  --> cr8s/stox/src/main.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{SystemTime, UNIX_EPOCH, Duration};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::consts::PI`
[INFO] [stdout]  --> cr8s/stox/src/ml_models.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::f64::consts::PI;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KMeans`
[INFO] [stdout]   --> cr8s/stox/src/main.rs:16:49
[INFO] [stdout]    |
[INFO] [stdout] 16 |     MLPipeline, LinearRegression, RandomForest, KMeans, ModelEvaluator, 
[INFO] [stdout]    |                                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Certificate`
[INFO] [stdout]   --> cr8s/stox/src/main.rs:40:50
[INFO] [stdout]    |
[INFO] [stdout] 40 |     use rustls_native_certs::{load_native_certs, Certificate};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::Candle`
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::types::Candle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OptionData` and `OptionGreeks`
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:17:64
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::options_math::{black_scholes_greeks, calculate_pnl, OptionData, OptionType, OptionGreeks};
[INFO] [stdout]    |                                                                ^^^^^^^^^^              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> cr8s/yeast/src/og.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SystemTime`
[INFO] [stdout]  --> cr8s/yeast/src/og.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{SystemTime, UNIX_EPOCH, Duration};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Certificate`
[INFO] [stdout]   --> cr8s/yeast/src/og.rs:40:50
[INFO] [stdout]    |
[INFO] [stdout] 40 |     use rustls_native_certs::{load_native_certs, Certificate};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::Candle`
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::types::Candle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OptionData` and `OptionGreeks`
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:17:64
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::options_math::{black_scholes_greeks, calculate_pnl, OptionData, OptionType, OptionGreeks};
[INFO] [stdout]    |                                                                ^^^^^^^^^^              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> cr8s/yeast/src/og.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SystemTime`
[INFO] [stdout]  --> cr8s/yeast/src/og.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{SystemTime, UNIX_EPOCH, Duration};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Certificate`
[INFO] [stdout]   --> cr8s/yeast/src/og.rs:40:50
[INFO] [stdout]    |
[INFO] [stdout] 40 |     use rustls_native_certs::{load_native_certs, Certificate};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]   --> cr8s/stox/src/indicators/tema.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |         let prices: Vec<f64> = candles.iter().map(|c| c.close).collect();
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fib_levels`
[INFO] [stdout]   --> cr8s/stox/src/indicators/fibonacci_retracement.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 |         let fib_levels = [0.0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0];
[INFO] [stdout]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fib_levels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]   --> cr8s/stox/src/indicators/tema.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |         let prices: Vec<f64> = candles.iter().map(|c| c.close).collect();
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fib_levels`
[INFO] [stdout]   --> cr8s/stox/src/indicators/fibonacci_retracement.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 |         let fib_levels = [0.0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0];
[INFO] [stdout]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fib_levels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header`
[INFO] [stdout]    --> cr8s/stox/src/main.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let header = lines.next(); // ignore header
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header`
[INFO] [stdout]    --> cr8s/stox/src/main.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let header = lines.next(); // ignore header
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `train_features`
[INFO] [stdout]    --> cr8s/stox/src/main.rs:634:14
[INFO] [stdout]     |
[INFO] [stdout] 634 |         let (train_features, test_features) = features.split_at(split_idx);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_train_features`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncFetcher` is never constructed
[INFO] [stdout]   --> cr8s/stox/src/main.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | struct SyncFetcher;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `fetch_yahoo_chart_for_ticker` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl SyncFetcher {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] 101 |     fn fetch_yahoo_chart_for_ticker(ticker: &str, opts: &ChartQueryOptions) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_nasdaq_symbols_csv` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:266:10
[INFO] [stdout]     |
[INFO] [stdout] 266 | async fn fetch_nasdaq_symbols_csv() -> Result<Vec<String>, Box<dyn std::error::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncOptionsFetcher` is never constructed
[INFO] [stdout]    --> cr8s/stox/src/main.rs:406:8
[INFO] [stdout]     |
[INFO] [stdout] 406 | struct SyncOptionsFetcher;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `fetch_options_for_ticker` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 408 | impl SyncOptionsFetcher {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 409 |     fn fetch_options_for_ticker(ticker: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_opc_option_chain` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:481:4
[INFO] [stdout]     |
[INFO] [stdout] 481 | fn print_opc_option_chain(data: OptionProfitCalculatorResponse) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_to_option_data` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:505:4
[INFO] [stdout]     |
[INFO] [stdout] 505 | fn convert_to_option_data(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_opc_option_chain_with_greeks` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:521:4
[INFO] [stdout]     |
[INFO] [stdout] 521 | fn print_opc_option_chain_with_greeks(data: OptionProfitCalculatorResponse, underlying_price: f64, time_to_expiry: f64, risk_free_rate: f...
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_chart_response` is never used
[INFO] [stdout]     --> cr8s/stox/src/main.rs:1291:4
[INFO] [stdout]      |
[INFO] [stdout] 1291 | fn print_chart_response(chart_response: ChartResponse, runner: &IndicatorRunner) -> Option<(String, f64)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_ml_analysis` is never used
[INFO] [stdout]    --> cr8s/stox/src/ml_models.rs:806:8
[INFO] [stdout]     |
[INFO] [stdout] 806 | pub fn run_ml_analysis(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `k` is never read
[INFO] [stdout]  --> cr8s/stox/src/indicators/bollinger_bands.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct BollingerBands {
[INFO] [stdout]   |            -------------- field in this struct
[INFO] [stdout] 5 |     pub period: usize,
[INFO] [stdout] 6 |     pub k: f64,  // number of std devs
[INFO] [stdout]   |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `d_period` is never read
[INFO] [stdout]  --> cr8s/stox/src/indicators/stochastic.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Stochastic {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 7 |     pub k_period: usize,
[INFO] [stdout] 8 |     pub d_period: usize,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_period`, `leading_span_b_period`, and `displacement` are never read
[INFO] [stdout]   --> cr8s/stox/src/indicators/ichimoku.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Ichimoku {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  7 |     pub conversion_period: usize, // usually 9
[INFO] [stdout]  8 |     pub base_period: usize,       // usually 26
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]  9 |     pub leading_span_b_period: usize, // usually 52
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub displacement: usize,      // usually 26
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OptionType` is never used
[INFO] [stdout]  --> cr8s/stox/src/options_math.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum OptionType {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionGreeks` is never constructed
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct OptionGreeks {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `norm_pdf` is never used
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn norm_pdf(x: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `norm_cdf` is never used
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn norm_cdf(x: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `black_scholes_greeks` is never used
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn black_scholes_greeks(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_greeks_parallel` is never used
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:87:4
[INFO] [stdout]    |
[INFO] [stdout] 87 | fn compute_greeks_parallel(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_pnl` is never used
[INFO] [stdout]    --> cr8s/stox/src/options_math.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub fn calculate_pnl(position_size: f64, old_price: f64, new_price: f64) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionData` is never constructed
[INFO] [stdout]    --> cr8s/stox/src/options_math.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct OptionData {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect` is never used
[INFO] [stdout]   --> cr8s/stox/src/main.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn connect(domain: &'static str, port: u16) -> Result<StreamOwned<ClientConnection, TcpStream>, String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `exchangeName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |     pub exchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: convert the identifier to snake case: `exchange_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fullExchangeName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 203 |     pub fullExchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `full_exchange_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `instrumentType` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:204:9
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub instrumentType: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `instrument_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `firstTradeDate` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |     pub firstTradeDate: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `first_trade_date`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketTime` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub regularMarketTime: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `hasPrePostMarketData` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub hasPrePostMarketData: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `has_pre_post_market_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `exchangeTimezoneName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |     pub exchangeTimezoneName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `exchange_timezone_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketPrice` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:211:9
[INFO] [stdout]     |
[INFO] [stdout] 211 |     pub regularMarketPrice: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fiftyTwoWeekHigh` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |     pub fiftyTwoWeekHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_two_week_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fiftyTwoWeekLow` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:213:9
[INFO] [stdout]     |
[INFO] [stdout] 213 |     pub fiftyTwoWeekLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_two_week_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketDayHigh` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:214:9
[INFO] [stdout]     |
[INFO] [stdout] 214 |     pub regularMarketDayHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_day_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketDayLow` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:215:9
[INFO] [stdout]     |
[INFO] [stdout] 215 |     pub regularMarketDayLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_day_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketVolume` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 216 |     pub regularMarketVolume: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_volume`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `longName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub longName: String,
[INFO] [stdout]     |         ^^^^^^^^ help: convert the identifier to snake case: `long_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `shortName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     pub shortName: String,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `short_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `chartPreviousClose` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     pub chartPreviousClose: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `chart_previous_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `priceHint` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 220 |     pub priceHint: u8,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `price_hint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `currentTradingPeriod` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:221:9
[INFO] [stdout]     |
[INFO] [stdout] 221 |     pub currentTradingPeriod: TradingPeriodWrapper,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `current_trading_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `dataGranularity` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     pub dataGranularity: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `data_granularity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `validRanges` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub validRanges: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^ help: convert the identifier to snake case: `valid_ranges`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `train_features`
[INFO] [stdout]    --> cr8s/stox/src/main.rs:634:14
[INFO] [stdout]     |
[INFO] [stdout] 634 |         let (train_features, test_features) = features.split_at(split_idx);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_train_features`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncFetcher` is never constructed
[INFO] [stdout]   --> cr8s/stox/src/main.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | struct SyncFetcher;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `fetch_yahoo_chart_for_ticker` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl SyncFetcher {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] 101 |     fn fetch_yahoo_chart_for_ticker(ticker: &str, opts: &ChartQueryOptions) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_nasdaq_symbols_csv` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:266:10
[INFO] [stdout]     |
[INFO] [stdout] 266 | async fn fetch_nasdaq_symbols_csv() -> Result<Vec<String>, Box<dyn std::error::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncOptionsFetcher` is never constructed
[INFO] [stdout]    --> cr8s/stox/src/main.rs:406:8
[INFO] [stdout]     |
[INFO] [stdout] 406 | struct SyncOptionsFetcher;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `fetch_options_for_ticker` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 408 | impl SyncOptionsFetcher {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 409 |     fn fetch_options_for_ticker(ticker: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_opc_option_chain` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:481:4
[INFO] [stdout]     |
[INFO] [stdout] 481 | fn print_opc_option_chain(data: OptionProfitCalculatorResponse) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_to_option_data` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:505:4
[INFO] [stdout]     |
[INFO] [stdout] 505 | fn convert_to_option_data(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_opc_option_chain_with_greeks` is never used
[INFO] [stdout]    --> cr8s/stox/src/main.rs:521:4
[INFO] [stdout]     |
[INFO] [stdout] 521 | fn print_opc_option_chain_with_greeks(data: OptionProfitCalculatorResponse, underlying_price: f64, time_to_expiry: f64, risk_free_rate: f...
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_chart_response` is never used
[INFO] [stdout]     --> cr8s/stox/src/main.rs:1291:4
[INFO] [stdout]      |
[INFO] [stdout] 1291 | fn print_chart_response(chart_response: ChartResponse, runner: &IndicatorRunner) -> Option<(String, f64)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_ml_analysis` is never used
[INFO] [stdout]    --> cr8s/stox/src/ml_models.rs:806:8
[INFO] [stdout]     |
[INFO] [stdout] 806 | pub fn run_ml_analysis(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `k` is never read
[INFO] [stdout]  --> cr8s/stox/src/indicators/bollinger_bands.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct BollingerBands {
[INFO] [stdout]   |            -------------- field in this struct
[INFO] [stdout] 5 |     pub period: usize,
[INFO] [stdout] 6 |     pub k: f64,  // number of std devs
[INFO] [stdout]   |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `d_period` is never read
[INFO] [stdout]  --> cr8s/stox/src/indicators/stochastic.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Stochastic {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 7 |     pub k_period: usize,
[INFO] [stdout] 8 |     pub d_period: usize,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_period`, `leading_span_b_period`, and `displacement` are never read
[INFO] [stdout]   --> cr8s/stox/src/indicators/ichimoku.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Ichimoku {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  7 |     pub conversion_period: usize, // usually 9
[INFO] [stdout]  8 |     pub base_period: usize,       // usually 26
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]  9 |     pub leading_span_b_period: usize, // usually 52
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub displacement: usize,      // usually 26
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OptionType` is never used
[INFO] [stdout]  --> cr8s/stox/src/options_math.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum OptionType {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionGreeks` is never constructed
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct OptionGreeks {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `norm_pdf` is never used
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn norm_pdf(x: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `norm_cdf` is never used
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn norm_cdf(x: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `black_scholes_greeks` is never used
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn black_scholes_greeks(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_greeks_parallel` is never used
[INFO] [stdout]   --> cr8s/stox/src/options_math.rs:87:4
[INFO] [stdout]    |
[INFO] [stdout] 87 | fn compute_greeks_parallel(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_pnl` is never used
[INFO] [stdout]    --> cr8s/stox/src/options_math.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub fn calculate_pnl(position_size: f64, old_price: f64, new_price: f64) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionData` is never constructed
[INFO] [stdout]    --> cr8s/stox/src/options_math.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct OptionData {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect` is never used
[INFO] [stdout]   --> cr8s/stox/src/main.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn connect(domain: &'static str, port: u16) -> Result<StreamOwned<ClientConnection, TcpStream>, String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `exchangeName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |     pub exchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: convert the identifier to snake case: `exchange_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fullExchangeName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 203 |     pub fullExchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `full_exchange_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `instrumentType` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:204:9
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub instrumentType: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `instrument_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `firstTradeDate` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |     pub firstTradeDate: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `first_trade_date`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketTime` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub regularMarketTime: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `hasPrePostMarketData` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub hasPrePostMarketData: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `has_pre_post_market_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `exchangeTimezoneName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |     pub exchangeTimezoneName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `exchange_timezone_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketPrice` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:211:9
[INFO] [stdout]     |
[INFO] [stdout] 211 |     pub regularMarketPrice: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fiftyTwoWeekHigh` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |     pub fiftyTwoWeekHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_two_week_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fiftyTwoWeekLow` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:213:9
[INFO] [stdout]     |
[INFO] [stdout] 213 |     pub fiftyTwoWeekLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_two_week_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketDayHigh` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:214:9
[INFO] [stdout]     |
[INFO] [stdout] 214 |     pub regularMarketDayHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_day_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketDayLow` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:215:9
[INFO] [stdout]     |
[INFO] [stdout] 215 |     pub regularMarketDayLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_day_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketVolume` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 216 |     pub regularMarketVolume: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_volume`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `longName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub longName: String,
[INFO] [stdout]     |         ^^^^^^^^ help: convert the identifier to snake case: `long_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `shortName` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     pub shortName: String,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `short_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `chartPreviousClose` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     pub chartPreviousClose: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `chart_previous_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `priceHint` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 220 |     pub priceHint: u8,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `price_hint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `currentTradingPeriod` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:221:9
[INFO] [stdout]     |
[INFO] [stdout] 221 |     pub currentTradingPeriod: TradingPeriodWrapper,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `current_trading_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `dataGranularity` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     pub dataGranularity: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `data_granularity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `validRanges` should have a snake case name
[INFO] [stdout]    --> cr8s/stox/src/main.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub validRanges: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^ help: convert the identifier to snake case: `valid_ranges`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeZone`
[INFO] [stdout]  --> cr8s/yeast/src/api.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, Utc, TimeZone};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeZone`
[INFO] [stdout]  --> cr8s/yeast/src/api.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, Utc, TimeZone};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]   --> cr8s/yeast/src/indicators/tema.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let prices: Vec<f64> = candles.iter().map(|c| c.close).collect();
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fib_levels`
[INFO] [stdout]   --> cr8s/yeast/src/indicators/fibonacci_retracement.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |         let fib_levels = [0.0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0];
[INFO] [stdout]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fib_levels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]   --> cr8s/yeast/src/indicators/tema.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let prices: Vec<f64> = candles.iter().map(|c| c.close).collect();
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fib_levels`
[INFO] [stdout]   --> cr8s/yeast/src/indicators/fibonacci_retracement.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |         let fib_levels = [0.0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0];
[INFO] [stdout]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fib_levels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sort_by`
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:1193:67
[INFO] [stdout]      |
[INFO] [stdout] 1193 | ...filters: &[ScreenerFilter], sort_by: Option<&str>, sort_order: Option<&str>) -> Result<serde_json::Value, ApiError> {
[INFO] [stdout]      |                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sort_by`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sort_order`
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:1193:90
[INFO] [stdout]      |
[INFO] [stdout] 1193 | ..., sort_by: Option<&str>, sort_order: Option<&str>) -> Result<serde_json::Value, ApiError> {
[INFO] [stdout]      |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sort_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `json`
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:1626:38
[INFO] [stdout]      |
[INFO] [stdout] 1626 |     fn parse_analysis_reports(&self, json: serde_json::Value) -> AnalysisReports {
[INFO] [stdout]      |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_json`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latest_candle`
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2025:13
[INFO] [stdout]      |
[INFO] [stdout] 2025 |         let latest_candle = candles.last()
[INFO] [stdout]      |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latest_candle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sort_by`
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:1193:67
[INFO] [stdout]      |
[INFO] [stdout] 1193 | ...filters: &[ScreenerFilter], sort_by: Option<&str>, sort_order: Option<&str>) -> Result<serde_json::Value, ApiError> {
[INFO] [stdout]      |                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sort_by`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sort_order`
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:1193:90
[INFO] [stdout]      |
[INFO] [stdout] 1193 | ..., sort_by: Option<&str>, sort_order: Option<&str>) -> Result<serde_json::Value, ApiError> {
[INFO] [stdout]      |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sort_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `json`
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:1626:38
[INFO] [stdout]      |
[INFO] [stdout] 1626 |     fn parse_analysis_reports(&self, json: serde_json::Value) -> AnalysisReports {
[INFO] [stdout]      |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_json`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `latest_candle`
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2025:13
[INFO] [stdout]      |
[INFO] [stdout] 2025 |         let latest_candle = candles.last()
[INFO] [stdout]      |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_latest_candle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header`
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let header = lines.next(); // ignore header
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header`
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let header = lines.next(); // ignore header
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> cr8s/yeast/src/indicators/mod.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub trait TechnicalIndicator: Sync {
[INFO] [stdout]    |           ------------------ method in this trait
[INFO] [stdout] 91 |     fn name(&self) -> &'static str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `k` is never read
[INFO] [stdout]  --> cr8s/yeast/src/indicators/bollinger_bands.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct BollingerBands {
[INFO] [stdout]   |            -------------- field in this struct
[INFO] [stdout] 5 |     pub period: usize,
[INFO] [stdout] 6 |     pub k: f64,  // number of std devs
[INFO] [stdout]   |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `d_period` is never read
[INFO] [stdout]  --> cr8s/yeast/src/indicators/stochastic.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Stochastic {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 7 |     pub k_period: usize,
[INFO] [stdout] 8 |     pub d_period: usize,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_period`, `leading_span_b_period`, and `displacement` are never read
[INFO] [stdout]   --> cr8s/yeast/src/indicators/ichimoku.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Ichimoku {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  7 |     pub conversion_period: usize, // usually 9
[INFO] [stdout]  8 |     pub base_period: usize,       // usually 26
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]  9 |     pub leading_span_b_period: usize, // usually 52
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub displacement: usize,      // usually 26
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Momentum` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/momentum.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Momentum {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tema` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/tema.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Tema {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dema` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/dema.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Dema {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Kama` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/kama.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Kama {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Hma` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/hma.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Hma {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Frama` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/frama.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Frama {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChandelierExit` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/chandelier_exit.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ChandelierExit {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TRIX` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/trix.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TRIX {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MFI` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/mfi.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct MFI {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ForceIndex` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/force_index.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ForceIndex {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EaseOfMovement` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/ease_of_movement.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct EaseOfMovement {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccumDistLine` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/accum_dist_line.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AccumDistLine;
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PriceVolumeTrend` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/price_volume_trend.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct PriceVolumeTrend;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VolumeOscillator` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/volume_oscillator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct VolumeOscillator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UltimateOscillator` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/ultimate_oscillator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct UltimateOscillator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DetrendedPriceOscillator` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/detrended_price_oscillator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct DetrendedPriceOscillator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateOfChange` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/roc.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct RateOfChange {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ZScore` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/z_score.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ZScore {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GMMA` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/gmma.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GMMA {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchaffTrendCycle` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/schaff_trend_cycle.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SchaffTrendCycle {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FibonacciRetracement` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/fibonacci_retracement.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct FibonacciRetracement {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KalmanFilterSmoother` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/kalman_filter_smoother.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct KalmanFilterSmoother {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeikinAshiSlope` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/heikin_ashi_slope.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct HeikinAshiSlope {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PercentB` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/percent_b.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PercentB {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionData` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/options_math.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct OptionData {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidTicker`, `InvalidDateRange`, and `CalculationError` are never constructed
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ApiError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 23 |     InvalidTicker(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 24 |     InvalidDateRange(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     CalculationError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApiError` 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 `start_date`, `end_date`, and `indicators` are never read
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct HistoricalDataRequest {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub start_date: Option<String>, // YYYY-MM-DD format
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 53 |     pub end_date: Option<String>,   // YYYY-MM-DD format
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 54 |     pub include_indicators: Option<bool>,
[INFO] [stdout] 55 |     pub indicators: Option<Vec<IndicatorConfig>>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HistoricalDataRequest` 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 `name` and `params` are never read
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct IndicatorConfig {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 60 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 61 |     pub params: Option<HashMap<String, serde_json::Value>>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IndicatorConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `expiration_dates` is never read
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct OptionsChainRequest {
[INFO] [stdout]     |            ------------------- field in this struct
[INFO] [stdout] 107 |     pub ticker: String,
[INFO] [stdout] 108 |     pub expiration_dates: Option<Vec<String>>, // YYYY-MM-DD format
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OptionsChainRequest` 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 `ScreenerRequest` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub struct ScreenerRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScreenerFilter` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub struct ScreenerFilter {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `YahooScreenerResponse` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:233:12
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub struct YahooScreenerResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `YahooScreenerFinance` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:238:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub struct YahooScreenerFinance {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `YahooScreenerResult` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:243:12
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct YahooScreenerResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `YahooScreenerQuote` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:255:12
[INFO] [stdout]     |
[INFO] [stdout] 255 | pub struct YahooScreenerQuote {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScreenerResult` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout] 323 | pub struct ScreenerResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScreenerResponse` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:337:12
[INFO] [stdout]     |
[INFO] [stdout] 337 | pub struct ScreenerResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fields` is never read
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:347:9
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub struct QuoteRequest {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] 346 |     pub tickers: Vec<String>,
[INFO] [stdout] 347 |     pub fields: Option<Vec<String>>, // Specific fields to return
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `QuoteRequest` 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 `WatchlistRequest` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:377:12
[INFO] [stdout]     |
[INFO] [stdout] 377 | pub struct WatchlistRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AlertConfig` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:384:12
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub struct AlertConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WatchlistResponse` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:392:12
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub struct WatchlistResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TriggeredAlert` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:399:12
[INFO] [stdout]     |
[INFO] [stdout] 399 | pub struct TriggeredAlert {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CrumbCache` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:687:12
[INFO] [stdout]     |
[INFO] [stdout] 687 | pub struct CrumbCache {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_expired` is never used
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:693:12
[INFO] [stdout]     |
[INFO] [stdout] 692 | impl CrumbCache {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 693 |     pub fn is_expired(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:721:18
[INFO] [stdout]      |
[INFO] [stdout]  703 | impl YahooFinanceClient {
[INFO] [stdout]      | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  721 |     pub async fn get_cached_crumb(&mut self, symbol: &str, cache: &AsyncRwLock<Option<CrumbCache>>) -> Result<String, ApiError> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  916 |     pub async fn try_crumbless_request(&self, ticker: &str) -> Result<serde_json::Value, ApiError> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1097 |     pub async fn fetch_predefined_screener(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1136 |     pub async fn fetch_custom_screener(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1193 |     fn build_screener_criteria(&self, filters: &[ScreenerFilter], sort_by: Option<&str>, sort_order: Option<&str>) -> Result<serde_json::...
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1275 |     fn map_field_to_yahoo(&self, field: &str) -> Result<String, ApiError> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1312 |     fn convert_yahoo_quote_to_screener_result(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `screen_stocks` and `sort_screener_results` are never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2120:18
[INFO] [stdout]      |
[INFO] [stdout] 1644 | impl StockDataApi {
[INFO] [stdout]      | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2120 |     pub async fn screen_stocks(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2191 |     fn sort_screener_results(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ApiServer` is never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2307:11
[INFO] [stdout]      |
[INFO] [stdout] 2307 | pub trait ApiServer {
[INFO] [stdout]      |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimpleApiServer` is never constructed
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2323:16
[INFO] [stdout]      |
[INFO] [stdout] 2323 |     pub struct SimpleApiServer {
[INFO] [stdout]      |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `start` are never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2328:16
[INFO] [stdout]      |
[INFO] [stdout] 2327 |     impl SimpleApiServer {
[INFO] [stdout]      |     -------------------- associated items in this implementation
[INFO] [stdout] 2328 |         pub fn new(api: StockDataApi) -> Self {
[INFO] [stdout]      |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 2334 |         pub fn start(&self, port: u16) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]      |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_connection` is never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2352:8
[INFO] [stdout]      |
[INFO] [stdout] 2352 |     fn handle_connection(mut stream: TcpStream, _api: Arc<StockDataApi>) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fetch_sync` is never used
[INFO] [stdout]   --> cr8s/yeast/src/og.rs:92:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub trait ChartFetcher {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] 92 |     fn fetch_sync(&self, ticker: &str, opts: &ChartQueryOptions) -> Result<ChartResponse, Box<dyn Error>>;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncFetcher` is never constructed
[INFO] [stdout]   --> cr8s/yeast/src/og.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | struct SyncFetcher;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `fetch_yahoo_chart_for_ticker` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl SyncFetcher {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] 101 |     fn fetch_yahoo_chart_for_ticker(ticker: &str, opts: &ChartQueryOptions) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `error` is never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub struct Chart {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] 187 |     pub result: Option<Vec<ResultItem>>,
[INFO] [stdout] 188 |     pub error: Option<serde_json::Value>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Chart` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub struct Meta {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fullExchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 204 |     pub instrumentType: String,
[INFO] [stdout] 205 |     pub firstTradeDate: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 206 |     pub regularMarketTime: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 207 |     pub hasPrePostMarketData: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 208 |     pub gmtoffset: i64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 209 |     pub timezone: String,
[INFO] [stdout] 210 |     pub exchangeTimezoneName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub regularMarketDayHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 215 |     pub regularMarketDayLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 216 |     pub regularMarketVolume: u64,
[INFO] [stdout] 217 |     pub longName: String,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 218 |     pub shortName: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 219 |     pub chartPreviousClose: f64,
[INFO] [stdout] 220 |     pub priceHint: u8,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 221 |     pub currentTradingPeriod: TradingPeriodWrapper,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 222 |     pub dataGranularity: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 223 |     pub range: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 224 |     pub validRanges: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Meta` 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 `pre`, `regular`, and `post` are never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:229:9
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub struct TradingPeriodWrapper {
[INFO] [stdout]     |            -------------------- fields in this struct
[INFO] [stdout] 229 |     pub pre: TradingPeriod,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 230 |     pub regular: TradingPeriod,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 231 |     pub post: TradingPeriod,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TradingPeriodWrapper` 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 `timezone`, `end`, `start`, and `gmtoffset` are never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:236:9
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub struct TradingPeriod {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 236 |     pub timezone: String,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 237 |     pub end: u64,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 238 |     pub start: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 239 |     pub gmtoffset: i64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TradingPeriod` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `adjclose` is never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:245:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct Indicators {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 244 |     pub quote: Option<Vec<Quote>>,
[INFO] [stdout] 245 |     pub adjclose: Option<Vec<AdjClose>>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Indicators` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `adjclose` is never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub struct AdjClose {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] 259 |     pub adjclose: Option<Vec<Option<f64>>>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AdjClose` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_nasdaq_symbols_csv` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:266:10
[INFO] [stdout]     |
[INFO] [stdout] 266 | async fn fetch_nasdaq_symbols_csv() -> Result<Vec<String>, Box<dyn std::error::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_indicators` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:313:8
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub fn build_indicators() -> Vec<(String, Arc<dyn TechnicalIndicator + Send + Sync>)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fetch_sync` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:401:8
[INFO] [stdout]     |
[INFO] [stdout] 400 | pub trait OptionsFetcher {
[INFO] [stdout]     |           -------------- method in this trait
[INFO] [stdout] 401 |     fn fetch_sync(&self, ticker: &str) -> Result<OptionProfitCalculatorResponse, Box<dyn Error>>;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncOptionsFetcher` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:406:8
[INFO] [stdout]     |
[INFO] [stdout] 406 | struct SyncOptionsFetcher;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `fetch_options_for_ticker` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 408 | impl SyncOptionsFetcher {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 409 |     fn fetch_options_for_ticker(ticker: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_opc_option_chain` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:481:4
[INFO] [stdout]     |
[INFO] [stdout] 481 | fn print_opc_option_chain(data: OptionProfitCalculatorResponse) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_to_option_data` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:505:4
[INFO] [stdout]     |
[INFO] [stdout] 505 | fn convert_to_option_data(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_opc_option_chain_with_greeks` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:521:4
[INFO] [stdout]     |
[INFO] [stdout] 521 | fn print_opc_option_chain_with_greeks(data: OptionProfitCalculatorResponse, underlying_price: f64, time_to_expiry: f64, risk_free_rate: f...
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MLAnalysisConfig` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:567:12
[INFO] [stdout]     |
[INFO] [stdout] 567 | pub struct MLAnalysisConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_chart_response` is never used
[INFO] [stdout]     --> cr8s/yeast/src/og.rs:1291:4
[INFO] [stdout]      |
[INFO] [stdout] 1291 | fn print_chart_response(chart_response: ChartResponse, runner: &IndicatorRunner) -> Option<(String, f64)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect` is never used
[INFO] [stdout]   --> cr8s/yeast/src/og.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn connect(domain: &'static str, port: u16) -> Result<StreamOwned<ClientConnection, TcpStream>, String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `exchangeName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |     pub exchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: convert the identifier to snake case: `exchange_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fullExchangeName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 203 |     pub fullExchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `full_exchange_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `instrumentType` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:204:9
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub instrumentType: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `instrument_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `firstTradeDate` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |     pub firstTradeDate: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `first_trade_date`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketTime` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub regularMarketTime: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `hasPrePostMarketData` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub hasPrePostMarketData: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `has_pre_post_market_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `exchangeTimezoneName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |     pub exchangeTimezoneName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `exchange_timezone_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketPrice` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:211:9
[INFO] [stdout]     |
[INFO] [stdout] 211 |     pub regularMarketPrice: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fiftyTwoWeekHigh` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |     pub fiftyTwoWeekHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_two_week_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fiftyTwoWeekLow` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:213:9
[INFO] [stdout]     |
[INFO] [stdout] 213 |     pub fiftyTwoWeekLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_two_week_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketDayHigh` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:214:9
[INFO] [stdout]     |
[INFO] [stdout] 214 |     pub regularMarketDayHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_day_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketDayLow` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:215:9
[INFO] [stdout]     |
[INFO] [stdout] 215 |     pub regularMarketDayLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_day_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketVolume` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 216 |     pub regularMarketVolume: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_volume`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `longName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub longName: String,
[INFO] [stdout]     |         ^^^^^^^^ help: convert the identifier to snake case: `long_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `shortName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     pub shortName: String,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `short_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `chartPreviousClose` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     pub chartPreviousClose: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `chart_previous_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `priceHint` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 220 |     pub priceHint: u8,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `price_hint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `currentTradingPeriod` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:221:9
[INFO] [stdout]     |
[INFO] [stdout] 221 |     pub currentTradingPeriod: TradingPeriodWrapper,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `current_trading_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `dataGranularity` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     pub dataGranularity: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `data_granularity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `validRanges` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub validRanges: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^ help: convert the identifier to snake case: `valid_ranges`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> cr8s/yeast/src/indicators/mod.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub trait TechnicalIndicator: Sync {
[INFO] [stdout]    |           ------------------ method in this trait
[INFO] [stdout] 91 |     fn name(&self) -> &'static str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `k` is never read
[INFO] [stdout]  --> cr8s/yeast/src/indicators/bollinger_bands.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct BollingerBands {
[INFO] [stdout]   |            -------------- field in this struct
[INFO] [stdout] 5 |     pub period: usize,
[INFO] [stdout] 6 |     pub k: f64,  // number of std devs
[INFO] [stdout]   |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `d_period` is never read
[INFO] [stdout]  --> cr8s/yeast/src/indicators/stochastic.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Stochastic {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 7 |     pub k_period: usize,
[INFO] [stdout] 8 |     pub d_period: usize,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_period`, `leading_span_b_period`, and `displacement` are never read
[INFO] [stdout]   --> cr8s/yeast/src/indicators/ichimoku.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Ichimoku {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  7 |     pub conversion_period: usize, // usually 9
[INFO] [stdout]  8 |     pub base_period: usize,       // usually 26
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]  9 |     pub leading_span_b_period: usize, // usually 52
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub displacement: usize,      // usually 26
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Momentum` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/momentum.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Momentum {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tema` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/tema.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Tema {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dema` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/dema.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Dema {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Kama` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/kama.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Kama {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Hma` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/hma.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Hma {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Frama` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/frama.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Frama {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChandelierExit` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/chandelier_exit.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ChandelierExit {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TRIX` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/trix.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TRIX {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MFI` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/mfi.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct MFI {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ForceIndex` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/force_index.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ForceIndex {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EaseOfMovement` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/ease_of_movement.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct EaseOfMovement {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccumDistLine` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/accum_dist_line.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AccumDistLine;
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PriceVolumeTrend` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/price_volume_trend.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct PriceVolumeTrend;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VolumeOscillator` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/volume_oscillator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct VolumeOscillator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UltimateOscillator` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/ultimate_oscillator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct UltimateOscillator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DetrendedPriceOscillator` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/detrended_price_oscillator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct DetrendedPriceOscillator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateOfChange` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/roc.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct RateOfChange {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ZScore` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/z_score.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ZScore {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GMMA` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/gmma.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct GMMA {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchaffTrendCycle` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/schaff_trend_cycle.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SchaffTrendCycle {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FibonacciRetracement` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/fibonacci_retracement.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct FibonacciRetracement {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KalmanFilterSmoother` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/kalman_filter_smoother.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct KalmanFilterSmoother {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeikinAshiSlope` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/heikin_ashi_slope.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct HeikinAshiSlope {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PercentB` is never constructed
[INFO] [stdout]  --> cr8s/yeast/src/indicators/percent_b.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PercentB {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionData` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/options_math.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct OptionData {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidTicker`, `InvalidDateRange`, and `CalculationError` are never constructed
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ApiError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 23 |     InvalidTicker(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 24 |     InvalidDateRange(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     CalculationError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApiError` 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 `start_date`, `end_date`, and `indicators` are never read
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct HistoricalDataRequest {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub start_date: Option<String>, // YYYY-MM-DD format
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 53 |     pub end_date: Option<String>,   // YYYY-MM-DD format
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 54 |     pub include_indicators: Option<bool>,
[INFO] [stdout] 55 |     pub indicators: Option<Vec<IndicatorConfig>>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HistoricalDataRequest` 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 `name` and `params` are never read
[INFO] [stdout]   --> cr8s/yeast/src/api.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct IndicatorConfig {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 60 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 61 |     pub params: Option<HashMap<String, serde_json::Value>>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IndicatorConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `expiration_dates` is never read
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct OptionsChainRequest {
[INFO] [stdout]     |            ------------------- field in this struct
[INFO] [stdout] 107 |     pub ticker: String,
[INFO] [stdout] 108 |     pub expiration_dates: Option<Vec<String>>, // YYYY-MM-DD format
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OptionsChainRequest` 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 `ScreenerRequest` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub struct ScreenerRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScreenerFilter` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub struct ScreenerFilter {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `YahooScreenerResponse` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:233:12
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub struct YahooScreenerResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `YahooScreenerFinance` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:238:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub struct YahooScreenerFinance {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `YahooScreenerResult` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:243:12
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct YahooScreenerResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `YahooScreenerQuote` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:255:12
[INFO] [stdout]     |
[INFO] [stdout] 255 | pub struct YahooScreenerQuote {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScreenerResult` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:323:12
[INFO] [stdout]     |
[INFO] [stdout] 323 | pub struct ScreenerResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScreenerResponse` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:337:12
[INFO] [stdout]     |
[INFO] [stdout] 337 | pub struct ScreenerResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fields` is never read
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:347:9
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub struct QuoteRequest {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] 346 |     pub tickers: Vec<String>,
[INFO] [stdout] 347 |     pub fields: Option<Vec<String>>, // Specific fields to return
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `QuoteRequest` 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 `WatchlistRequest` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:377:12
[INFO] [stdout]     |
[INFO] [stdout] 377 | pub struct WatchlistRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AlertConfig` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:384:12
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub struct AlertConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WatchlistResponse` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:392:12
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub struct WatchlistResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TriggeredAlert` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:399:12
[INFO] [stdout]     |
[INFO] [stdout] 399 | pub struct TriggeredAlert {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CrumbCache` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:687:12
[INFO] [stdout]     |
[INFO] [stdout] 687 | pub struct CrumbCache {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_expired` is never used
[INFO] [stdout]    --> cr8s/yeast/src/api.rs:693:12
[INFO] [stdout]     |
[INFO] [stdout] 692 | impl CrumbCache {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 693 |     pub fn is_expired(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:721:18
[INFO] [stdout]      |
[INFO] [stdout]  703 | impl YahooFinanceClient {
[INFO] [stdout]      | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  721 |     pub async fn get_cached_crumb(&mut self, symbol: &str, cache: &AsyncRwLock<Option<CrumbCache>>) -> Result<String, ApiError> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  916 |     pub async fn try_crumbless_request(&self, ticker: &str) -> Result<serde_json::Value, ApiError> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1097 |     pub async fn fetch_predefined_screener(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1136 |     pub async fn fetch_custom_screener(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1193 |     fn build_screener_criteria(&self, filters: &[ScreenerFilter], sort_by: Option<&str>, sort_order: Option<&str>) -> Result<serde_json::...
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1275 |     fn map_field_to_yahoo(&self, field: &str) -> Result<String, ApiError> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1312 |     fn convert_yahoo_quote_to_screener_result(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `screen_stocks` and `sort_screener_results` are never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2120:18
[INFO] [stdout]      |
[INFO] [stdout] 1644 | impl StockDataApi {
[INFO] [stdout]      | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2120 |     pub async fn screen_stocks(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2191 |     fn sort_screener_results(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ApiServer` is never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2307:11
[INFO] [stdout]      |
[INFO] [stdout] 2307 | pub trait ApiServer {
[INFO] [stdout]      |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimpleApiServer` is never constructed
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2323:16
[INFO] [stdout]      |
[INFO] [stdout] 2323 |     pub struct SimpleApiServer {
[INFO] [stdout]      |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `start` are never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2328:16
[INFO] [stdout]      |
[INFO] [stdout] 2327 |     impl SimpleApiServer {
[INFO] [stdout]      |     -------------------- associated items in this implementation
[INFO] [stdout] 2328 |         pub fn new(api: StockDataApi) -> Self {
[INFO] [stdout]      |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 2334 |         pub fn start(&self, port: u16) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]      |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_connection` is never used
[INFO] [stdout]     --> cr8s/yeast/src/api.rs:2352:8
[INFO] [stdout]      |
[INFO] [stdout] 2352 |     fn handle_connection(mut stream: TcpStream, _api: Arc<StockDataApi>) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fetch_sync` is never used
[INFO] [stdout]   --> cr8s/yeast/src/og.rs:92:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub trait ChartFetcher {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] 92 |     fn fetch_sync(&self, ticker: &str, opts: &ChartQueryOptions) -> Result<ChartResponse, Box<dyn Error>>;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncFetcher` is never constructed
[INFO] [stdout]   --> cr8s/yeast/src/og.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | struct SyncFetcher;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `fetch_yahoo_chart_for_ticker` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl SyncFetcher {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] 101 |     fn fetch_yahoo_chart_for_ticker(ticker: &str, opts: &ChartQueryOptions) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `error` is never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub struct Chart {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] 187 |     pub result: Option<Vec<ResultItem>>,
[INFO] [stdout] 188 |     pub error: Option<serde_json::Value>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Chart` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub struct Meta {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fullExchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 204 |     pub instrumentType: String,
[INFO] [stdout] 205 |     pub firstTradeDate: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 206 |     pub regularMarketTime: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 207 |     pub hasPrePostMarketData: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 208 |     pub gmtoffset: i64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 209 |     pub timezone: String,
[INFO] [stdout] 210 |     pub exchangeTimezoneName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub regularMarketDayHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 215 |     pub regularMarketDayLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 216 |     pub regularMarketVolume: u64,
[INFO] [stdout] 217 |     pub longName: String,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 218 |     pub shortName: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 219 |     pub chartPreviousClose: f64,
[INFO] [stdout] 220 |     pub priceHint: u8,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 221 |     pub currentTradingPeriod: TradingPeriodWrapper,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 222 |     pub dataGranularity: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 223 |     pub range: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 224 |     pub validRanges: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Meta` 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 `pre`, `regular`, and `post` are never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:229:9
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub struct TradingPeriodWrapper {
[INFO] [stdout]     |            -------------------- fields in this struct
[INFO] [stdout] 229 |     pub pre: TradingPeriod,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 230 |     pub regular: TradingPeriod,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 231 |     pub post: TradingPeriod,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TradingPeriodWrapper` 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 `timezone`, `end`, `start`, and `gmtoffset` are never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:236:9
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub struct TradingPeriod {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 236 |     pub timezone: String,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 237 |     pub end: u64,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 238 |     pub start: u64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 239 |     pub gmtoffset: i64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TradingPeriod` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `adjclose` is never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:245:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct Indicators {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 244 |     pub quote: Option<Vec<Quote>>,
[INFO] [stdout] 245 |     pub adjclose: Option<Vec<AdjClose>>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Indicators` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `adjclose` is never read
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub struct AdjClose {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] 259 |     pub adjclose: Option<Vec<Option<f64>>>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AdjClose` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_nasdaq_symbols_csv` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:266:10
[INFO] [stdout]     |
[INFO] [stdout] 266 | async fn fetch_nasdaq_symbols_csv() -> Result<Vec<String>, Box<dyn std::error::Error>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_indicators` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:313:8
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub fn build_indicators() -> Vec<(String, Arc<dyn TechnicalIndicator + Send + Sync>)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fetch_sync` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:401:8
[INFO] [stdout]     |
[INFO] [stdout] 400 | pub trait OptionsFetcher {
[INFO] [stdout]     |           -------------- method in this trait
[INFO] [stdout] 401 |     fn fetch_sync(&self, ticker: &str) -> Result<OptionProfitCalculatorResponse, Box<dyn Error>>;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyncOptionsFetcher` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:406:8
[INFO] [stdout]     |
[INFO] [stdout] 406 | struct SyncOptionsFetcher;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `fetch_options_for_ticker` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 408 | impl SyncOptionsFetcher {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 409 |     fn fetch_options_for_ticker(ticker: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_opc_option_chain` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:481:4
[INFO] [stdout]     |
[INFO] [stdout] 481 | fn print_opc_option_chain(data: OptionProfitCalculatorResponse) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_to_option_data` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:505:4
[INFO] [stdout]     |
[INFO] [stdout] 505 | fn convert_to_option_data(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_opc_option_chain_with_greeks` is never used
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:521:4
[INFO] [stdout]     |
[INFO] [stdout] 521 | fn print_opc_option_chain_with_greeks(data: OptionProfitCalculatorResponse, underlying_price: f64, time_to_expiry: f64, risk_free_rate: f...
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MLAnalysisConfig` is never constructed
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:567:12
[INFO] [stdout]     |
[INFO] [stdout] 567 | pub struct MLAnalysisConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_chart_response` is never used
[INFO] [stdout]     --> cr8s/yeast/src/og.rs:1291:4
[INFO] [stdout]      |
[INFO] [stdout] 1291 | fn print_chart_response(chart_response: ChartResponse, runner: &IndicatorRunner) -> Option<(String, f64)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect` is never used
[INFO] [stdout]   --> cr8s/yeast/src/og.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn connect(domain: &'static str, port: u16) -> Result<StreamOwned<ClientConnection, TcpStream>, String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `exchangeName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |     pub exchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: convert the identifier to snake case: `exchange_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fullExchangeName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 203 |     pub fullExchangeName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `full_exchange_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `instrumentType` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:204:9
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub instrumentType: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `instrument_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `firstTradeDate` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |     pub firstTradeDate: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `first_trade_date`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketTime` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub regularMarketTime: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `hasPrePostMarketData` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub hasPrePostMarketData: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `has_pre_post_market_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `exchangeTimezoneName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |     pub exchangeTimezoneName: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `exchange_timezone_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketPrice` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:211:9
[INFO] [stdout]     |
[INFO] [stdout] 211 |     pub regularMarketPrice: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fiftyTwoWeekHigh` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |     pub fiftyTwoWeekHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_two_week_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `fiftyTwoWeekLow` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:213:9
[INFO] [stdout]     |
[INFO] [stdout] 213 |     pub fiftyTwoWeekLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `fifty_two_week_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketDayHigh` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:214:9
[INFO] [stdout]     |
[INFO] [stdout] 214 |     pub regularMarketDayHigh: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_day_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketDayLow` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:215:9
[INFO] [stdout]     |
[INFO] [stdout] 215 |     pub regularMarketDayLow: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_day_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regularMarketVolume` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 216 |     pub regularMarketVolume: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `regular_market_volume`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `longName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub longName: String,
[INFO] [stdout]     |         ^^^^^^^^ help: convert the identifier to snake case: `long_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `shortName` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     pub shortName: String,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `short_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `chartPreviousClose` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     pub chartPreviousClose: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `chart_previous_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `priceHint` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 220 |     pub priceHint: u8,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `price_hint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `currentTradingPeriod` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:221:9
[INFO] [stdout]     |
[INFO] [stdout] 221 |     pub currentTradingPeriod: TradingPeriodWrapper,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `current_trading_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `dataGranularity` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     pub dataGranularity: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `data_granularity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `validRanges` should have a snake case name
[INFO] [stdout]    --> cr8s/yeast/src/og.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub validRanges: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^ help: convert the identifier to snake case: `valid_ranges`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 06s
[INFO] running `Command { std: "docker" "inspect" "2d2ca16cbbc0ffb2125ea32131491547f11cf0ffc869e6e6d25896bb5537eec3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2d2ca16cbbc0ffb2125ea32131491547f11cf0ffc869e6e6d25896bb5537eec3", kill_on_drop: false }`
[INFO] [stdout] 2d2ca16cbbc0ffb2125ea32131491547f11cf0ffc869e6e6d25896bb5537eec3
