Trait BackgroundFunction

Source
pub trait BackgroundFunction:
    'static
    + Default
    + Sized {
    type InitialState: Serialize + DeserializeOwned + Send;
    type State: StateTrait<Event = Self::Event>;
    type Trigger: Serialize + DeserializeOwned + Send;
    type Event: Serialize + DeserializeOwned + Send;

    // Required methods
    fn initial_state<EventSender: Fn(Self::Event)>(
        self,
        initial_state: Self::InitialState,
        event_sender: EventSender,
    ) -> Self::State;
    fn trigger<EventSender: Fn(Self::Event)>(
        state: &mut Self::State,
        trigger: Self::Trigger,
        event_sender: EventSender,
    );
    fn event_merge(event: &mut Self::Event, other: Self::Event);
}
Expand description

This trait abstracts a function, which can be run independently

Required Associated Types§

Source

type InitialState: Serialize + DeserializeOwned + Send

Initial State of background thread Note: This is runtime-dependent, because it typically is deserialized

Source

type State: StateTrait<Event = Self::Event>

Current State of function

Source

type Trigger: Serialize + DeserializeOwned + Send

An outer event which is forwarded to the background task

Source

type Event: Serialize + DeserializeOwned + Send

An event produced by the background task

Required Methods§

Source

fn initial_state<EventSender: Fn(Self::Event)>( self, initial_state: Self::InitialState, event_sender: EventSender, ) -> Self::State

Function to initialize state Event sender sends ‘None’ once this is finished

Source

fn trigger<EventSender: Fn(Self::Event)>( state: &mut Self::State, trigger: Self::Trigger, event_sender: EventSender, )

Function to trigger state

Source

fn event_merge(event: &mut Self::Event, other: Self::Event)

Merge two events

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§