Trait relm4::factory::AsyncFactoryComponent
source · pub trait AsyncFactoryComponent: AsyncPosition<<Self::ParentWidget as FactoryView>::Position> + Sized + 'static {
type ParentWidget: FactoryView + 'static;
type ParentInput: Debug + 'static;
type CommandOutput: Debug + Send + 'static;
type Input: Debug + 'static;
type Output: Debug + 'static;
type Init;
type Root: AsRef<<Self::ParentWidget as FactoryView>::Children> + Debug + Clone;
type Widgets: 'static;
// Required methods
fn init_model<'life0, 'async_trait>(
init: Self::Init,
index: &'life0 DynamicIndex,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = Self> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn init_root() -> Self::Root;
fn init_widgets(
&mut self,
index: &DynamicIndex,
root: &Self::Root,
returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget,
sender: AsyncFactorySender<Self>
) -> Self::Widgets;
// Provided methods
fn init_loading_widgets(_root: &mut Self::Root) -> Option<LoadingWidgets> { ... }
fn output_to_parent_input(
_output: Self::Output
) -> Option<Self::ParentInput> { ... }
fn update<'life0, 'async_trait>(
&'life0 mut self,
message: Self::Input,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn update_cmd<'life0, 'async_trait>(
&'life0 mut self,
message: Self::CommandOutput,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn update_cmd_with_view<'life0, 'life1, 'async_trait>(
&'life0 mut self,
widgets: &'life1 mut Self::Widgets,
message: Self::CommandOutput,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn update_view(
&self,
widgets: &mut Self::Widgets,
sender: AsyncFactorySender<Self>
) { ... }
fn update_with_view<'life0, 'life1, 'async_trait>(
&'life0 mut self,
widgets: &'life1 mut Self::Widgets,
message: Self::Input,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn shutdown(
&mut self,
widgets: &mut Self::Widgets,
output: Sender<Self::Output>
) { ... }
fn id(&self) -> String { ... }
}
Expand description
A component that’s stored inside a factory.
Similar to Component
but adjusted to fit the life cycle
of factories.
Required Associated Types§
sourcetype ParentWidget: FactoryView + 'static
type ParentWidget: FactoryView + 'static
Container widget to which all widgets of the factory will be added.
sourcetype ParentInput: Debug + 'static
type ParentInput: Debug + 'static
Input messages sent to the parent component.
sourcetype CommandOutput: Debug + Send + 'static
type CommandOutput: Debug + Send + 'static
Messages which are received from commands executing in the background.
sourcetype Root: AsRef<<Self::ParentWidget as FactoryView>::Children> + Debug + Clone
type Root: AsRef<<Self::ParentWidget as FactoryView>::Children> + Debug + Clone
The widget that was constructed by the factory component.
Required Methods§
sourcefn init_model<'life0, 'async_trait>(
init: Self::Init,
index: &'life0 DynamicIndex,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = Self> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn init_model<'life0, 'async_trait>( init: Self::Init, index: &'life0 DynamicIndex, sender: AsyncFactorySender<Self> ) -> Pin<Box<dyn Future<Output = Self> + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Initializes the model.
sourcefn init_widgets(
&mut self,
index: &DynamicIndex,
root: &Self::Root,
returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget,
sender: AsyncFactorySender<Self>
) -> Self::Widgets
fn init_widgets( &mut self, index: &DynamicIndex, root: &Self::Root, returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget, sender: AsyncFactorySender<Self> ) -> Self::Widgets
Initializes the widgets.
Provided Methods§
sourcefn init_loading_widgets(_root: &mut Self::Root) -> Option<LoadingWidgets>
fn init_loading_widgets(_root: &mut Self::Root) -> Option<LoadingWidgets>
Allows you to initialize the root widget with a temporary value
as a placeholder until the init_model()
future completes.
This method does nothing by default.
sourcefn output_to_parent_input(_output: Self::Output) -> Option<Self::ParentInput>
fn output_to_parent_input(_output: Self::Output) -> Option<Self::ParentInput>
Optionally convert an output message from this component to an input message for the parent component. By default this method does nothing, you must overwrite it to forward messages.
If None
is returned, nothing is forwarded.
sourcefn update<'life0, 'async_trait>(
&'life0 mut self,
message: Self::Input,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update<'life0, 'async_trait>( &'life0 mut self, message: Self::Input, sender: AsyncFactorySender<Self> ) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Processes inputs received by the component.
sourcefn update_cmd<'life0, 'async_trait>(
&'life0 mut self,
message: Self::CommandOutput,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_cmd<'life0, 'async_trait>( &'life0 mut self, message: Self::CommandOutput, sender: AsyncFactorySender<Self> ) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Defines how the component should respond to command updates.
sourcefn update_cmd_with_view<'life0, 'life1, 'async_trait>(
&'life0 mut self,
widgets: &'life1 mut Self::Widgets,
message: Self::CommandOutput,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_cmd_with_view<'life0, 'life1, 'async_trait>( &'life0 mut self, widgets: &'life1 mut Self::Widgets, message: Self::CommandOutput, sender: AsyncFactorySender<Self> ) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,
Handles updates from a command.
sourcefn update_view(
&self,
widgets: &mut Self::Widgets,
sender: AsyncFactorySender<Self>
)
fn update_view( &self, widgets: &mut Self::Widgets, sender: AsyncFactorySender<Self> )
Updates the view after the model has been updated.
sourcefn update_with_view<'life0, 'life1, 'async_trait>(
&'life0 mut self,
widgets: &'life1 mut Self::Widgets,
message: Self::Input,
sender: AsyncFactorySender<Self>
) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_with_view<'life0, 'life1, 'async_trait>( &'life0 mut self, widgets: &'life1 mut Self::Widgets, message: Self::Input, sender: AsyncFactorySender<Self> ) -> Pin<Box<dyn Future<Output = ()> + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,
Updates the model and view. Optionally returns a command to run.