1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//! # rstmt
//!
//! [](https://crates.io/crates/rstmt)
//! [](https://docs.rs/rstmt)
//! [](https://github.com/FL03/rstmt/blob/main/LICENSE)
//!
//! ***
//!
//! Welcome to the [`rstmt`](https://docs.rs/rstmt) crate! This crate is designed to be a
//! complete computational framework for computational music theory.
//!
//! ## Goals
//!
//! The primary goal for this framework is to establish concrete computational representations
//! of various musical concepts. This is of particular importance for the [`scsys.io`](https://scsys.io)
//! ecosystem, which is drive by [`eryon`](https://docs.rs/eryon), a topological computational
//! framework inspired by the neo-Riemannian theory (NRT).
//!
//! ## Features
//!
//! The crate is heavily feature-gated to allow for a modular approach to the various
//! components of the framework. The following features are available:
//!
//! - `nrt`: Enables the neo-Riemannian theory (NRT) module, which provides a computational
//! representation of the NRT and its associated concepts.
//!
//! ### _Features: Dependencies_
//!
//! - `alloc`: enables the `alloc` crate, enabling the use of heap-allocated types such as
//! `Vec`, `Box`, and `String`.
//! - `json`: enables the JSON serialization and deserialization of the framework's types
//! using the [`serde_json`](https://docs.rs/serde_json) crate.
//! - `rayon`: enables parallelism using the [`rayon`](https://docs.rs/rayon) crate.
//! - `serde`: enables serialization and deserialization of implemented types using the
//! [`serde`](https://docs.rs/serde) crate.
//!
//! ### _Features: Environment
//!
//! - `std`: Enables the standard library, which provides additional functionality and
//! convenience methods for the framework.
//! - `nightly`: Enables the nightly features, which provide additional functionality and
//! performance improvements. This feature is not recommended for production use, as it may
//! introduce breaking changes or instability.
//!
//!
// compile time checks
compile_error!
// external crates
extern crate alloc;
// external modules
pub use rstmt_nrt as nrt;
// re-exports
pub use *;
// prelude