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§
Sourcetype InitialState: Serialize + DeserializeOwned + Send
type InitialState: Serialize + DeserializeOwned + Send
Initial State of background thread Note: This is runtime-dependent, because it typically is deserialized
Sourcetype State: StateTrait<Event = Self::Event>
type State: StateTrait<Event = Self::Event>
Current State of function
Sourcetype Trigger: Serialize + DeserializeOwned + Send
type Trigger: Serialize + DeserializeOwned + Send
An outer event which is forwarded to the background task
Sourcetype Event: Serialize + DeserializeOwned + Send
type Event: Serialize + DeserializeOwned + Send
An event produced by the background task
Required Methods§
Sourcefn initial_state<EventSender: Fn(Self::Event)>(
self,
initial_state: Self::InitialState,
event_sender: EventSender,
) -> Self::State
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
Sourcefn trigger<EventSender: Fn(Self::Event)>(
state: &mut Self::State,
trigger: Self::Trigger,
event_sender: EventSender,
)
fn trigger<EventSender: Fn(Self::Event)>( state: &mut Self::State, trigger: Self::Trigger, event_sender: EventSender, )
Function to trigger state
Sourcefn event_merge(event: &mut Self::Event, other: Self::Event)
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.