#![no_std]
#![allow(clippy::needless_doctest_main)]
#![cfg_attr(test, allow(non_camel_case_types, non_snake_case))]
#![doc = include_str!("../README.md")]
pub mod core {
pub use state_machines_core::*;
}
pub use state_machines_core::{
AroundOutcome, AroundStage, CallbackError, DynamicError, EventDefinition, EventError, Machine,
MachineDefinition, MachineState, SubstateOf, SuperstateDefinition, TransitionContext,
TransitionDefinition, TransitionError, TransitionErrorKind, TransitionResult,
};
pub use state_machines_macro::state_machine;
#[cfg(feature = "inspect")]
pub use state_machines_core::{
EventSchema, Inspectable, MachineSchema, SuperstateSchema, TransitionSchema,
};
#[macro_export]
macro_rules! abort_guard {
($ctx:expr, $guard:ident) => {
$crate::core::AroundOutcome::Abort($crate::core::TransitionError::guard_failed(
$ctx.from,
$ctx.event,
stringify!($guard),
))
};
($ctx:expr, $guard:expr) => {
$crate::core::AroundOutcome::Abort($crate::core::TransitionError::guard_failed(
$ctx.from, $ctx.event, $guard,
))
};
}
#[macro_export]
macro_rules! abort_with {
($ctx:expr, $kind:expr) => {
$crate::core::AroundOutcome::Abort($crate::core::TransitionError {
from: $ctx.from,
event: $ctx.event,
kind: $kind,
})
};
}