# 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.85.0"
name = "rstmt-core"
version = "0.0.6"
authors = [
    "FL03 <jo3mccain@icloud.com> (https://github.com/FL03)",
    "Scattered-Systems <support@scsys.io> (https://github.com/scattered-systems)",
]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "the core modules for the rstmt framework"
homepage = "https://github.com/FL03/rstmt/wiki"
readme = "README.md"
keywords = [
    "analysis",
    "composition",
    "music-theory",
    "research",
    "topology",
]
categories = ["mathematics"]
license = "Apache-2.0"
repository = "https://github.com/FL03/rstmt.git"

[package.metadata.docs.rs]
all-features = false
features = [
    "alloc",
    "complex",
    "hashbrown",
    "serde",
    "std",
]
rustc-args = [
    "--cfg",
    "docsrs",
]
version = "v{{version}}"

[package.metadata.release]
no-dev-version = true
tag-name = "v{{version}}"

[features]
alloc = [
    "rstmt-traits/alloc",
    "contained/alloc",
    "hashbrown?/alloc",
    "rand?/alloc",
    "rand_distr?/alloc",
    "serde?/alloc",
    "serde_json?/alloc",
    "variants/alloc",
]
complex = ["dep:num-complex"]
default = ["std"]
full = [
    "default",
    "complex",
    "hashbrown",
    "json",
    "rand",
    "serde",
]
hashbrown = [
    "dep:hashbrown",
    "rstmt-traits/hashbrown",
]
json = [
    "alloc",
    "serde_json",
]
nightly = [
    "hashbrown?/nightly",
    "rstmt-traits/nightly",
]
rand = [
    "rng",
    "dep:rand",
    "dep:rand_core",
    "dep:rand_distr",
    "rstmt-traits/rand",
    "num-complex?/rand",
]
rayon = [
    "dep:rayon-core",
    "hashbrown?/rayon",
    "rstmt-traits/rayon",
]
rng = [
    "dep:getrandom",
    "rand?/small_rng",
    "rand?/thread_rng",
]
serde = [
    "dep:serde",
    "dep:serde_derive",
    "hashbrown?/serde",
    "rstmt-traits/serde",
    "serde?/derive",
    "num-complex/serde",
]
serde_json = ["dep:serde_json"]
std = [
    "alloc",
    "anyhow/std",
    "contained/std",
    "hashbrown?/default",
    "num-complex?/std",
    "num-integer/std",
    "num-traits/std",
    "rand?/std",
    "rand_distr?/std",
    "rstmt-traits/std",
    "serde?/std",
    "strum/std",
    "variants/std",
]
wasi = ["rstmt-traits/wasi"]
wasm = [
    "rstmt-traits/wasm",
    "getrandom?/wasm_js",
    "rayon-core?/web_spin_lock",
]

[lib]
name = "rstmt_core"
crate-type = [
    "cdylib",
    "rlib",
    "staticlib",
]
path = "src/lib.rs"
test = true
doctest = true
bench = false
doc = true

[[test]]
name = "default"
path = "tests/default.rs"

[dependencies.anyhow]
version = "1"
default-features = false

[dependencies.contained]
version = "0.2.2"
features = ["macros"]
default-features = false

[dependencies.getrandom]
version = "0.3"
optional = true
default-features = false

[dependencies.hashbrown]
version = "0.16"
optional = true
default-features = false

[dependencies.num-complex]
version = "0.4"
optional = true
default-features = false

[dependencies.num-integer]
version = "0.1"
default-features = false

[dependencies.num-traits]
version = "0.2"
default-features = false

[dependencies.paste]
version = "1"

[dependencies.rand]
version = "0.9"
optional = true
default-features = false

[dependencies.rand_core]
version = "0.6"
optional = true
default-features = false

[dependencies.rand_distr]
version = "0.5"
optional = true
default-features = false

[dependencies.rayon-core]
version = "1"
optional = true
default-features = false

[dependencies.rstmt-traits]
version = "0.0.6"
default-features = false

[dependencies.serde]
version = "1"
features = [
    "derive",
    "derive",
]
optional = true
default-features = false

[dependencies.serde_derive]
version = "1"
optional = true

[dependencies.serde_json]
version = "1"
optional = true

[dependencies.smart-default]
version = "0.7"

[dependencies.strum]
version = "0.27"
features = [
    "derive",
    "derive",
]
default-features = false

[dependencies.thiserror]
version = "2"
default-features = false

[dependencies.variants]
version = "0.0.1"
features = ["derive"]
default-features = false
