747d1a5b1b
The three Rust examples (backtest, fetch_btcusdt, live_binance) used to
live each in their own crate's examples/ dir, splitting the example set
across crates and burying it inside the source tree. Move them into a new
workspace member crate at `examples/rust/` (package `wickra-examples`,
`publish = false`) so all language examples sit under one top-level
`examples/<lang>/` tree.
* `examples/rust/Cargo.toml` declares the per-binary deps (wickra,
wickra-data with the `live-binance` feature always on, serde_json, tokio
for the macro and current-thread runtime).
* `examples/rust/src/bin/{backtest,fetch_btcusdt,live_binance}.rs` are the
three migrated binaries; their doc-comments and the fetch_btcusdt output
path are updated for the new location and run command
(`cargo run -p wickra-examples --bin <name>`).
* Workspace `Cargo.toml` lists the new member; the now-empty
`[dev-dependencies]` extras (`wickra`, `tokio` in wickra-data and
`serde_json` in wickra) that existed only for these examples are dropped.
* The `[[example]] live_binance` table is removed from wickra-data's
manifest since the file moved out.
* README "Languages" + project-layout, examples/README.md, Quickstart-Rust
and Data-Layer are pointed at the new paths and commands.
`cargo build -p wickra-examples` and `cargo run --release -p wickra-examples
--bin backtest -- examples/data/btcusdt-1d.csv` both succeed; the rest of
the workspace (core, data, wickra) builds, clippies (`--all-targets -D
warnings`) and tests (508 core + 28 data + 1 integration + 74+3+1
doctests) all stay green.
77 lines
1.7 KiB
TOML
77 lines
1.7 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/wickra-core",
|
|
"crates/wickra",
|
|
"crates/wickra-data",
|
|
"bindings/python",
|
|
"bindings/wasm",
|
|
"bindings/node",
|
|
"examples/rust",
|
|
]
|
|
exclude = ["fuzz"]
|
|
|
|
[workspace.package]
|
|
version = "0.1.4"
|
|
authors = ["kingchenc <kingchencp@gmail.com>"]
|
|
edition = "2021"
|
|
rust-version = "1.75"
|
|
license = "PolyForm-Noncommercial-1.0.0"
|
|
repository = "https://github.com/kingchenc/wickra"
|
|
homepage = "https://github.com/kingchenc/wickra"
|
|
readme = "README.md"
|
|
keywords = ["finance", "trading", "indicators", "technical-analysis", "ta"]
|
|
categories = ["finance", "mathematics", "science"]
|
|
|
|
[workspace.dependencies]
|
|
wickra-core = { path = "crates/wickra-core", version = "0.1.4" }
|
|
|
|
thiserror = "2"
|
|
rayon = "1.10"
|
|
|
|
# Testing
|
|
proptest = "1.5"
|
|
approx = "0.5"
|
|
criterion = { version = "0.5", features = ["html_reports"] }
|
|
|
|
# Python binding
|
|
pyo3 = { version = "0.22", features = ["extension-module", "abi3-py39"] }
|
|
numpy = "0.22"
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
missing_debug_implementations = "warn"
|
|
unreachable_pub = "warn"
|
|
unused_must_use = "deny"
|
|
|
|
[workspace.lints.clippy]
|
|
all = { level = "warn", priority = -1 }
|
|
pedantic = { level = "warn", priority = -1 }
|
|
# Pedantic exceptions for an indicator library that uses floats and small functions everywhere.
|
|
module_name_repetitions = "allow"
|
|
must_use_candidate = "allow"
|
|
missing_errors_doc = "allow"
|
|
missing_panics_doc = "allow"
|
|
cast_precision_loss = "allow"
|
|
cast_possible_truncation = "allow"
|
|
cast_sign_loss = "allow"
|
|
similar_names = "allow"
|
|
float_cmp = "allow"
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
strip = true
|
|
|
|
[profile.bench]
|
|
opt-level = 3
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
debug = false
|
|
|
|
[profile.dev]
|
|
opt-level = 0
|
|
debug = true
|