/*
    Appellation: eryon-mem <library>
    Contrib: @FL03
*/
//! This crate focuses on implementing the topological memory mechanism for the substrate and
//! its constituents
extern crate eryon_core as eryon;

pub(crate) use eryon_core as core;
pub(crate) use eryon_core::nrt;

#[doc(inline)]
pub use self::{
    error::*,
    features::PersistentFeature,
    records::{Record, RecordKind},
    store::TopologicalMemory,
    types::prelude::*,
};

#[macro_use]
pub(crate) mod macros;
#[allow(unused)]
#[doc(hidden)]
#[macro_use]
pub(crate) mod seal;

pub mod error;
pub mod features;
pub mod records;
pub mod store;

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

    pub(crate) mod prelude {}
}

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

    pub mod properties;
    pub mod statistics;

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

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

    pub(crate) mod prelude {}
}

#[allow(unused_imports)]
pub mod prelude {
    pub use crate::error::MemoryError;
    pub use crate::features::prelude::*;
    pub use crate::records::prelude::*;
    pub use crate::store::TopologicalMemory;
    pub use crate::traits::prelude::*;
    pub use crate::types::prelude::*;
    pub use crate::utils::prelude::*;
}
