Trait StateMachineImpl

Source
pub trait StateMachineImpl {
    type Input;
    type State;
    type Output;

    const INITIAL_STATE: Self::State;

    // Required methods
    fn transition(
        state: &Self::State,
        input: &Self::Input,
    ) -> Option<Self::State>;
    fn output(state: &Self::State, input: &Self::Input) -> Option<Self::Output>;
}
Expand description

This trait is designed to describe any possible deterministic finite state machine/transducer. This is just a formal definition that may be inconvenient to be used in practical programming, but it is used throughout this library for more practical things.

Required Associated Constants§

Source

const INITIAL_STATE: Self::State

The initial state of the machine.

Required Associated Types§

Source

type Input

The input alphabet.

Source

type State

The set of possible states.

Source

type Output

The output alphabet.

Required Methods§

Source

fn transition(state: &Self::State, input: &Self::Input) -> Option<Self::State>

The transition fuction that outputs a new state based on the current state and the provided input. Outputs None when there is no transition for a given combination of the input and the state.

Source

fn output(state: &Self::State, input: &Self::Input) -> Option<Self::Output>

The output function that outputs some value from the output alphabet based on the current state and the given input. Outputs None when there is no output for a given combination of the input and the state.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§