#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#![cfg_attr(feature = "nightly", feature(allocator_api))]
#[cfg(not(any(feature = "alloc", feature = "std")))]
compile_error! {
"shepherd-core requires at least one of the `alloc` or `std` features; \
the engine's error and domain types are allocating."
}
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(feature = "json")]
pub mod dispatch;
pub mod error;
#[cfg(feature = "parse")]
pub mod guard;
#[cfg(all(feature = "config", feature = "std"))]
pub mod loader;
#[cfg(feature = "json")]
pub mod run;
#[cfg(feature = "std")]
pub mod settings;
pub mod types {
#[doc(inline)]
pub use self::prelude::*;
mod harness;
mod prelude {
pub use super::harness::*;
}
}
#[cfg(feature = "json")]
#[doc(inline)]
pub use self::dispatch::{DispatchRecord, DispatchState, Role};
#[cfg(feature = "parse")]
#[doc(inline)]
pub use self::guard::{Decision, GuardEngine, GuardError, GuardValue, Verdict};
#[cfg(feature = "json")]
#[doc(inline)]
pub use self::run::RunState;
#[cfg(feature = "std")]
#[doc(inline)]
pub use self::settings::ShepherdConfig;
#[doc(inline)]
pub use self::{
error::{Error, Result},
types::*,
};
#[doc(hidden)]
pub mod prelude {
#[cfg(feature = "json")]
pub use crate::dispatch::*;
#[allow(unused_imports)]
pub use crate::error::*;
#[cfg(feature = "parse")]
pub use crate::guard::*;
#[cfg(feature = "json")]
pub use crate::run::*;
#[cfg(feature = "std")]
pub use crate::settings::*;
pub use crate::types::*;
}