#[non_exhaustive]pub struct StateMachine {
pub field: String,
pub states: Vec<(String, String)>,
pub start: Option<String>,
pub transitions: Vec<Transition>,
}Expand description
The states of a record, in one of its fields, and the ways between them.
use ravenrs_app::{EntityInfo, EnumOption, FieldInfo, FieldKind, StateMachine};
let options = vec![EnumOption::new("draft", "Draft"), EnumOption::new("done", "Done")];
let entity = EntityInfo::new("Task")
.field(FieldInfo::new("id", FieldKind::Integer).key())
.field(FieldInfo::new("state", FieldKind::Enum(options)))
.state_machine(
StateMachine::new("state").state("draft", "Draft").state("done", "Done").start("draft").transition(
"draft",
"done",
"Finish",
),
);
assert!(entity.check().is_ok());Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.field: StringThe field that holds the state: options, text or a reference.
states: Vec<(String, String)>The states, as stored and as people see them.
start: Option<String>Where a new record has to start; nothing means any state.
transitions: Vec<Transition>The ways between states.
Implementations§
Source§impl StateMachine
impl StateMachine
Sourcepub fn state(self, code: impl Into<String>, caption: impl Into<String>) -> Self
pub fn state(self, code: impl Into<String>, caption: impl Into<String>) -> Self
A state, as stored and as people see it.
Sourcepub fn start(self, code: impl Into<String>) -> Self
pub fn start(self, code: impl Into<String>) -> Self
Where a new record starts, which also is what it starts with.
Trait Implementations§
Source§impl Clone for StateMachine
impl Clone for StateMachine
Source§fn clone(&self) -> StateMachine
fn clone(&self) -> StateMachine
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for StateMachine
impl Debug for StateMachine
Source§impl Default for StateMachine
impl Default for StateMachine
Source§fn default() -> StateMachine
fn default() -> StateMachine
Returns the “default value” for a type. Read more
impl Eq for StateMachine
Source§impl PartialEq for StateMachine
impl PartialEq for StateMachine
impl StructuralPartialEq for StateMachine
Auto Trait Implementations§
impl Freeze for StateMachine
impl RefUnwindSafe for StateMachine
impl Send for StateMachine
impl Sync for StateMachine
impl Unpin for StateMachine
impl UnsafeUnpin for StateMachine
impl UnwindSafe for StateMachine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more