#![no_std]
#![allow(clippy::needless_doctest_main)]
#![cfg_attr(test, allow(non_camel_case_types, non_snake_case))]
#![doc = include_str!("../README.md")]
extern crate alloc;
#[doc(hidden)]
pub mod __private {
pub use alloc::vec::Vec;
}
pub mod core {
pub use state_machines_core::*;
}
pub use state_machines_core::{
AroundOutcome, AroundStage, CallbackError, DynamicError, EventError, MachineState, SubstateOf,
TransitionError, TransitionErrorKind,
};
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 {
($from:expr, $event:expr, $guard:ident) => {
$crate::core::AroundOutcome::Abort($crate::core::TransitionError::guard_failed(
$from,
$event,
stringify!($guard),
))
};
($from:expr, $event:expr, $guard:expr) => {
$crate::core::AroundOutcome::Abort($crate::core::TransitionError::guard_failed(
$from, $event, $guard,
))
};
}
#[macro_export]
macro_rules! abort_with {
($from:expr, $event:expr, $kind:expr) => {
$crate::core::AroundOutcome::Abort($crate::core::TransitionError {
from: $from,
event: $event,
kind: $kind,
})
};
}