eryon_core/
lib.rs

1/*
2    Appellation: eryon-core <library>
3    Contrib: @FL03
4*/
5//! # eryon-core
6//!
7//! This crate implements the core musical primitives and utilities for the [`eryon`](https://docs.rs/eryon)
8//! framework.
9#![allow(
10    clippy::missing_saftey_doc,
11    clippy::module_inception,
12    clippy::needless_doctest_main,
13    clippy::should_implement_trait,
14    clippy::upper_case_acronyms
15)]
16#![cfg_attr(not(feature = "std"), no_std)]
17#![cfg_attr(all(feature = "nightly"), feature(allocator_api))]
18
19#[cfg(feature = "alloc")]
20extern crate alloc;
21
22#[cfg(feature = "rand")]
23pub use rand;
24#[cfg(feature = "rand")]
25pub use rand_distr;
26/// re-import the [`rstmt`](https://docs.rs/rstmt) crate for convenience
27pub use rstmt;
28
29#[doc(inline)]
30pub use self::{
31    error::{Error, Result},
32    ops::prelude::*,
33    state::{RawState, State},
34    traits::prelude::*,
35    types::prelude::*,
36    utils::prelude::*,
37};
38
39#[macro_use]
40pub(crate) mod macros {
41    #[macro_use]
42    pub mod ruleset;
43    #[macro_use]
44    pub mod seal;
45}
46
47/// this module implements the core error type for the crate
48pub mod error;
49pub mod state;
50
51pub mod ops {
52    //! this module implements additional operational traits used throughout the crate
53    #[doc(inline)]
54    pub use self::prelude::*;
55
56    pub mod difference;
57    pub mod execute;
58    pub mod increment;
59    pub mod transform;
60
61    pub(crate) mod prelude {
62        #[doc(inline)]
63        pub use super::difference::*;
64        #[doc(inline)]
65        pub use super::execute::*;
66        #[doc(inline)]
67        pub use super::increment::*;
68        #[doc(inline)]
69        pub use super::transform::*;
70    }
71}
72
73pub mod traits {
74    //! this module define various traits common to the crate
75    #[doc(inline)]
76    pub use self::prelude::*;
77
78    pub(crate) mod scalar;
79    #[cfg(feature = "rand")]
80    pub(crate) mod shuffle;
81    pub(crate) mod symbolic;
82
83    #[allow(unused_imports)]
84    pub(crate) mod prelude {
85        #[doc(inline)]
86        pub use super::scalar::*;
87        #[doc(inline)]
88        #[cfg(feature = "rand")]
89        pub use super::shuffle::*;
90        #[doc(inline)]
91        pub use super::symbolic::*;
92    }
93}
94
95pub mod types {
96    //! this module defines the core types for the eryon framework
97    #[doc(inline)]
98    pub use self::prelude::*;
99
100    mod direction;
101    mod head;
102    mod tail;
103
104    mod power;
105    mod rules;
106
107    pub(crate) mod prelude {
108        #[doc(inline)]
109        pub use super::direction::*;
110        #[doc(inline)]
111        pub use super::head::*;
112        #[doc(inline)]
113        pub use super::power::*;
114        #[doc(inline)]
115        pub use super::rules::*;
116        #[doc(inline)]
117        pub use super::tail::*;
118    }
119}
120
121pub mod utils {
122    #[doc(inline)]
123    pub use self::prelude::*;
124
125    pub mod area;
126
127    pub(crate) mod prelude {
128        pub use super::area::*;
129    }
130}
131
132#[allow(unused_imports)]
133pub mod prelude {
134    // pub use rstm::prelude::{Direction, Head, State, Tail};
135    pub use crate::state::prelude::*;
136
137    pub use crate::ops::prelude::*;
138    pub use crate::traits::prelude::*;
139    #[doc(no_inline)]
140    pub use crate::types::prelude::*;
141    pub use crate::utils::prelude::*;
142}