eryon-core 0.0.3

The core modules of the eryon framework, providing essential functionality for computational entities.
Documentation
/*
    Appellation: eryon-core <library>
    Contrib: @FL03
*/
//! # eryon-core
//!
//! This crate implements the core musical primitives and utilities for the [`eryon`](https://docs.rs/eryon)
//! framework.
#![allow(
    clippy::missing_saftey_doc,
    clippy::module_inception,
    clippy::needless_doctest_main,
    clippy::should_implement_trait,
    clippy::upper_case_acronyms
)]
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(all(feature = "nightly"), feature(allocator_api))]

#[cfg(feature = "alloc")]
extern crate alloc;

#[cfg(feature = "rand")]
pub use rand;
#[cfg(feature = "rand")]
pub use rand_distr;
/// re-import the [`rstmt`](https://docs.rs/rstmt) crate for convenience
pub use rstmt;

#[doc(inline)]
pub use self::{
    error::{Error, Result},
    ops::prelude::*,
    state::{RawState, State},
    traits::prelude::*,
    types::prelude::*,
    utils::prelude::*,
};

#[macro_use]
pub(crate) mod macros {
    #[macro_use]
    pub mod ruleset;
    #[macro_use]
    pub mod seal;
}

/// this module implements the core error type for the crate
pub mod error;
pub mod state;

pub mod ops {
    //! this module implements additional operational traits used throughout the crate
    #[doc(inline)]
    pub use self::prelude::*;

    pub mod difference;
    pub mod execute;
    pub mod increment;
    pub mod transform;

    pub(crate) mod prelude {
        #[doc(inline)]
        pub use super::difference::*;
        #[doc(inline)]
        pub use super::execute::*;
        #[doc(inline)]
        pub use super::increment::*;
        #[doc(inline)]
        pub use super::transform::*;
    }
}

pub mod traits {
    //! this module define various traits common to the crate
    #[doc(inline)]
    pub use self::prelude::*;

    pub(crate) mod scalar;
    #[cfg(feature = "rand")]
    pub(crate) mod shuffle;
    pub(crate) mod symbolic;

    #[allow(unused_imports)]
    pub(crate) mod prelude {
        #[doc(inline)]
        pub use super::scalar::*;
        #[doc(inline)]
        #[cfg(feature = "rand")]
        pub use super::shuffle::*;
        #[doc(inline)]
        pub use super::symbolic::*;
    }
}

pub mod types {
    //! this module defines the core types for the eryon framework
    #[doc(inline)]
    pub use self::prelude::*;

    mod direction;
    mod head;
    mod tail;

    mod power;
    mod rules;

    pub(crate) mod prelude {
        #[doc(inline)]
        pub use super::direction::*;
        #[doc(inline)]
        pub use super::head::*;
        #[doc(inline)]
        pub use super::power::*;
        #[doc(inline)]
        pub use super::rules::*;
        #[doc(inline)]
        pub use super::tail::*;
    }
}

pub mod utils {
    #[doc(inline)]
    pub use self::prelude::*;

    pub mod area;

    pub(crate) mod prelude {
        pub use super::area::*;
    }
}

#[allow(unused_imports)]
pub mod prelude {
    // pub use rstm::prelude::{Direction, Head, State, Tail};
    pub use crate::state::prelude::*;

    pub use crate::ops::prelude::*;
    pub use crate::traits::prelude::*;
    #[doc(no_inline)]
    pub use crate::types::prelude::*;
    pub use crate::utils::prelude::*;
}