From 37590ae0f61187f080fe5b09d037ad428b4b1db4 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Wed, 26 Sep 2018 23:05:50 +0200 Subject: [PATCH] feat(core): Add associated 'Error' type to FSM trait Adds an associated 'Error' type that can be returned by actions when an interpretation fails. --- finito-core/src/lib.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/finito-core/src/lib.rs b/finito-core/src/lib.rs index 2f27a2bdf..8770a239d 100644 --- a/finito-core/src/lib.rs +++ b/finito-core/src/lib.rs @@ -108,6 +108,7 @@ //! //! Please reach out! I want to know why! +use std::fmt::Debug; use std::mem; /// Primary trait that needs to be implemented for every state type @@ -129,6 +130,10 @@ pub trait FSM where Self: Sized { /// actions that can occur in the state-machine. type Action; + /// The associated error type of an FSM represents failures that + /// can occur during action processing. + type Error: Debug; + /// `handle` deals with any incoming events to cause state /// transitions and emit actions. This function is the core logic /// of any state machine. @@ -152,7 +157,7 @@ pub trait FSM where Self: Sized { /// `act` interprets and executes FSM actions. This is the only /// part of an FSM in which side-effects are allowed. - fn act(Self::Action) -> Vec; + fn act(Self::Action) -> Result, Self::Error>; } /// This function is the primary function used to advance a state