[package]
name = "elevator-core"
version = "15.2.0" # managed by release-please
edition.workspace = true
description = "Engine-agnostic elevator simulation library with pluggable dispatch strategies"
license.workspace = true
repository.workspace = true
readme = "../../README.md"
rust-version.workspace = true
categories = ["game-engines", "simulation"]
keywords = ["elevator", "dispatch", "simulation", "ecs", "building"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = ["traffic"]
traffic = ["dep:rand"]
energy = []

[lints]
workspace = true

[dependencies]
serde.workspace = true
ron.workspace = true
rand = { workspace = true, optional = true }
slotmap.workspace = true
ordered-float = { version = "5", features = ["serde"] }
smallvec = { version = "1", features = ["serde"] }
postcard.workspace = true
pathfinding = { version = "4", default-features = false }

[dev-dependencies]
criterion = { version = "0.8", features = ["html_reports"] }
proptest = "1"
serde_json = "1"

[[bench]]
name = "sim_bench"
harness = false

[[bench]]
name = "scaling_bench"
harness = false

[[bench]]
name = "dispatch_bench"
harness = false

[[bench]]
name = "multi_line_bench"
harness = false

[[bench]]
name = "query_bench"
harness = false

[[example]]
name = "dispatch_comparison"
required-features = ["traffic"]
