[package]
edition = "2024"
name = "lfest"
version = "0.138.3"
authors = ["MathisWellmann <wellmannmathis@gmail.com>"]
build = false
exclude = [
"/img",
"/data",
"/.idea",
"/vendor",
"/.direnv",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A leveraged perpetual futures exchange for simulated trading and backtesting"
readme = "README.md"
keywords = [
"exchange",
"trading",
"simulation",
"backest",
"leverage",
]
categories = [
"finance",
"simulation",
]
license-file = "LICENSE"
repository = "https://github.com/MathisWellmann/lfest-rs"
[features]
trade_aggregation = ["dep:trade_aggregation"]
[lib]
name = "lfest"
path = "src/lib.rs"
[[example]]
name = "basic"
path = "examples/basic.rs"
[[test]]
name = "inverse_futures"
path = "tests/inverse_futures.rs"
[[test]]
name = "limit_orders_only"
path = "tests/limit_orders_only.rs"
[[test]]
name = "linear_futures"
path = "tests/linear_futures.rs"
[[bench]]
name = "check_active_orders"
path = "benches/check_active_orders.rs"
harness = false
[[bench]]
name = "decimal_comparison"
path = "benches/decimal_comparison.rs"
harness = false
[[bench]]
name = "order_book"
path = "benches/order_book.rs"
[[bench]]
name = "order_margin"
path = "benches/order_margin.rs"
harness = false
[[bench]]
name = "position"
path = "benches/position.rs"
harness = false
[[bench]]
name = "smart_candle"
path = "benches/smart_candle.rs"
harness = false
[[bench]]
name = "sorted_orders"
path = "benches/sorted_orders.rs"
harness = false
[[bench]]
name = "submit_limit_order"
path = "benches/submit_limit_order.rs"
harness = false
[[bench]]
name = "submit_market_order"
path = "benches/submit_market_order.rs"
harness = false
[[bench]]
name = "trade_update"
path = "benches/trade_update.rs"
harness = false
[[bench]]
name = "update_state"
path = "benches/update_state.rs"
harness = false
[dependencies.assert2]
version = "0.4"
[dependencies.const-decimal]
version = "0.4.0"
features = ["serde"]
[dependencies.csv]
version = "1"
[dependencies.derive_more]
version = "2"
features = ["full"]
[dependencies.getset]
version = "0.1.2"
[dependencies.glidesort]
version = "0.1"
[dependencies.mutants]
version = "0.0.4"
[dependencies.num]
version = "0.4"
[dependencies.num-traits]
version = "0.2"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.thiserror]
version = "2"
[dependencies.tracing]
version = "0.1"
features = ["release_max_level_info"]
[dependencies.trade_aggregation]
version = "13"
optional = true
[dependencies.typed-builder]
version = "0.23"
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.fpdec]
version = "0.10.3"
features = [
"serde-as-str",
"num-traits",
]
[dev-dependencies.proptest]
version = "1.6"
[dev-dependencies.rand]
version = "0.10"
[dev-dependencies.test-case]
version = "3"
[dev-dependencies.tracing-test]
version = "0.2"
features = ["no-env-filter"]
[lints.clippy]
allow_attributes_without_reason = "deny"
as_underscore = "deny"
branches_sharing_code = "warn"
cast_possible_wrap = "deny"
clear_with_drain = "warn"
debug_assert_with_mut_call = "deny"
derive_partial_eq_without_eq = "warn"
disallowed_methods = "warn"
fallible_impl_from = "deny"
field_scoped_visibility_modifiers = "warn"
filter_map_next = "deny"
flat_map_option = "deny"
float_cmp_const = "warn"
fn_params_excessive_bools = "warn"
format_collect = "deny"
format_push_string = "deny"
implicit_clone = "warn"
needless_collect = "deny"
needless_continue = "warn"
needless_pass_by_ref_mut = "warn"
needless_raw_strings = "warn"
rc_mutex = "warn"
ref_option_ref = "warn"
too_many_lines = "warn"
unwrap_used = "deny"
[lints.rust]
ambiguous_negative_literals = "deny"
closure_returning_async_block = "deny"
dead_code = "warn"
deprecated = "warn"
double_negations = "deny"
dropping_copy_types = "deny"
dropping_references = "deny"
exported_private_dependencies = "deny"
for_loops_over_fallibles = "deny"
forgetting_copy_types = "deny"
impl_trait_redundant_captures = "deny"
irrefutable_let_patterns = "deny"
macro_use_extern_crate = "deny"
missing_docs = "warn"
non_ascii_idents = "deny"
noop_method_call = "deny"
overlapping_range_endpoints = "deny"
redundant_lifetimes = "warn"
redundant_semicolons = "deny"
special_module_name = "deny"
trivial_numeric_casts = "deny"
unit_bindings = "deny"
unreachable_pub = "warn"
unused_allocation = "deny"
unused_assignments = "deny"
unused_crate_dependencies = "deny"
unused_import_braces = "warn"
unused_imports = "deny"
unused_lifetimes = "deny"
unused_must_use = "deny"
unused_qualifications = "warn"
unused_variables = "warn"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(tarpaulin)"]