# 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.91.0"
name = "rstmt"
version = "0.1.0"
authors = ["FL03 <joe@pzzld.org> (https://github.com/FL03)"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A complete framework for computational music theory and composition based on topological and categorical methods."
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 = ["default"]
rustc-args = [
    "--cfg",
    "docsrs",
]

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

[features]
alloc = [
    "rstmt-core/alloc",
    "rstmt-nrt?/alloc",
]
complex = ["rstmt-core/complex"]
default = [
    "macros",
    "motion",
    "nrt",
    "std",
    "tonnetz",
]
full = [
    "default",
    "complex",
    "json",
    "rand",
    "serde",
]
hashbrown = [
    "rstmt-core/hashbrown",
    "rstmt-nrt?/hashbrown",
]
json = [
    "alloc",
    "serde",
    "serde_json",
    "rstmt-core/json",
    "rstmt-nrt?/json",
]
macros = [
    "dep:rstmt-macros",
    "rstmt-core/macros",
]
motion = ["rstmt-nrt?/motion"]
nightly = [
    "rstmt-core/nightly",
    "rstmt-macros/nightly",
    "rstmt-nrt?/nightly",
]
nrt = ["dep:rstmt-nrt"]
rand = [
    "rstmt-core/rand",
    "rstmt-nrt?/rand",
]
rayon = [
    "rstmt-core/rayon",
    "rstmt-nrt?/rayon",
]
rng = [
    "rstmt-core/rng",
    "rstmt-nrt?/rng",
]
serde = [
    "rstmt-core/serde",
    "rstmt-nrt?/serde",
]
serde_json = [
    "rstmt-core/serde_json",
    "rstmt-nrt?/serde_json",
]
std = [
    "rstmt-core/std",
    "rstmt-nrt?/std",
]
tonnetz = [
    "std",
    "hashbrown",
    "motion",
    "nrt",
    "rstmt-nrt?/tonnetz",
]
wasi = [
    "rstmt-core/wasi",
    "rstmt-nrt?/wasi",
]
wasm = [
    "rstmt-core/wasm",
    "rstmt-nrt?/wasm",
]
wasm_bindgen = [
    "rstmt-core/wasm_bindgen",
    "rstmt-nrt?/wasm_bindgen",
]

[lib]
name = "rstmt"
crate-type = ["lib"]
path = "lib.rs"
test = true
doctest = true
bench = true
doc = true

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

[[example]]
name = "motion"
path = "examples/motion.rs"
required-features = [
    "motion",
    "std",
    "tonnetz",
]

[[example]]
name = "triads"
path = "examples/triads.rs"
required-features = [
    "nrt",
    "std",
]

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

[[bench]]
name = "triad"
path = "benches/triad.rs"
harness = false
required-features = [
    "nrt",
    "std",
]

[dependencies.rstmt-core]
version = "0.1.0"
default-features = false

[dependencies.rstmt-macros]
version = "0.1.0"
optional = true

[dependencies.rstmt-nrt]
version = "0.1.0"
optional = true
default-features = false

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

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

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

[dev-dependencies.tracing]
version = "0.1"
features = [
    "attributes",
    "attributes",
    "std",
]
default-features = false

[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
    "env-filter",
    "fmt",
    "ansi",
    "serde",
    "std",
]
