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;
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;
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.
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.