# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.88"
name = "elevator-core"
version = "15.32.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Engine-agnostic elevator simulation library with pluggable dispatch strategies"
readme = "README.md"
keywords = [
    "elevator",
    "dispatch",
    "simulation",
    "ecs",
    "building",
]
categories = [
    "game-engines",
    "simulation",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/andymai/elevator-core"
resolver = "2"

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

[features]
default = ["traffic"]
deterministic-fp = []
energy = []
traffic = ["dep:rand"]

[lib]
name = "elevator_core"
path = "src/lib.rs"

[[example]]
name = "basic"
path = "examples/basic.rs"

[[example]]
name = "config_file"
path = "examples/config_file.rs"

[[example]]
name = "custom_dispatch"
path = "examples/custom_dispatch.rs"

[[example]]
name = "dispatch_comparison"
path = "examples/dispatch_comparison.rs"
required-features = ["traffic"]

[[example]]
name = "door_commands"
path = "examples/door_commands.rs"

[[example]]
name = "extensions"
path = "examples/extensions.rs"

[[example]]
name = "fp_player_rider"
path = "examples/fp_player_rider.rs"

[[example]]
name = "headless_trace"
path = "examples/headless_trace.rs"

[[example]]
name = "manual_driver"
path = "examples/manual_driver.rs"

[[example]]
name = "playground_audit"
path = "examples/playground_audit.rs"

[[example]]
name = "runtime_upgrades"
path = "examples/runtime_upgrades.rs"

[[example]]
name = "scenario"
path = "examples/scenario.rs"

[[example]]
name = "showcase"
path = "examples/showcase.rs"

[[example]]
name = "space_elevator"
path = "examples/space_elevator.rs"

[[test]]
name = "scenarios_adaptive_reposition"
path = "tests/scenarios/adaptive_reposition.rs"

[[test]]
name = "scenarios_basic"
path = "tests/scenarios/basic.rs"

[[test]]
name = "scenarios_deterministic_replay"
path = "tests/scenarios/deterministic_replay.rs"

[[test]]
name = "scenarios_dispatch_matrix"
path = "tests/scenarios/dispatch_matrix.rs"

[[test]]
name = "scenarios_edge_cases"
path = "tests/scenarios/edge_cases.rs"

[[test]]
name = "scenarios_multi_line"
path = "tests/scenarios/multi_line.rs"

[[test]]
name = "scenarios_negative"
path = "tests/scenarios/negative.rs"

[[test]]
name = "scenarios_penthouse_pickup"
path = "tests/scenarios/penthouse_pickup.rs"

[[test]]
name = "scenarios_service_modes"
path = "tests/scenarios/service_modes.rs"

[[test]]
name = "scenarios_single_call_single_car"
path = "tests/scenarios/single_call_single_car.rs"

[[test]]
name = "scenarios_snapshot_roundtrip"
path = "tests/scenarios/snapshot_roundtrip.rs"

[[bench]]
name = "dispatch_bench"
path = "benches/dispatch_bench.rs"
harness = false

[[bench]]
name = "multi_line_bench"
path = "benches/multi_line_bench.rs"
harness = false

[[bench]]
name = "query_bench"
path = "benches/query_bench.rs"
harness = false

[[bench]]
name = "scaling_bench"
path = "benches/scaling_bench.rs"
harness = false

[[bench]]
name = "sim_bench"
path = "benches/sim_bench.rs"
harness = false

[dependencies.ordered-float]
version = "5"
features = ["serde"]

[dependencies.pathfinding]
version = "4"
default-features = false

[dependencies.postcard]
version = "1"
features = ["alloc"]

[dependencies.rand]
version = "0.10"
optional = true

[dependencies.ron]
version = "0.12"

[dependencies.serde]
version = "1"
features = ["derive"]

[dependencies.slotmap]
version = "1"
features = ["serde"]

[dependencies.smallvec]
version = "1"
features = ["serde"]

[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]

[dev-dependencies.proptest]
version = "1"

[dev-dependencies.rand]
version = "0.10"

[dev-dependencies.serde_json]
version = "1"

[lints.clippy]
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
expect_used = "warn"
missing_docs_in_private_items = "warn"
missing_errors_doc = "warn"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "deny"
panic = "warn"
unwrap_used = "warn"

[lints.clippy.nursery]
level = "warn"
priority = -1

[lints.clippy.pedantic]
level = "warn"
priority = -1

[lints.rust]
missing_docs = "warn"
unsafe_code = "deny"
