Trait relm4::factory::AsyncFactoryComponent
source · pub trait AsyncFactoryComponent: AsyncPosition<<Self::ParentWidget as FactoryView>::Position> + Sized + 'static {
type ParentWidget: FactoryView + '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(
init: Self::Init,
index: &DynamicIndex,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = Self>;
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: Self::Root) -> Option<LoadingWidgets> { ... }
fn update(
&mut self,
message: Self::Input,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = ()> { ... }
fn update_cmd(
&mut self,
message: Self::CommandOutput,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = ()> { ... }
fn update_cmd_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::CommandOutput,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = ()> { ... }
fn update_view(
&self,
widgets: &mut Self::Widgets,
sender: AsyncFactorySender<Self>
) { ... }
fn update_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::Input,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = ()> { ... }
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 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 top-level widget of the factory component.
Required Methods§
sourcefn init_model(
init: Self::Init,
index: &DynamicIndex,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = Self>
fn init_model( init: Self::Init, index: &DynamicIndex, sender: AsyncFactorySender<Self> ) -> impl Future<Output = Self>
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: Self::Root) -> Option<LoadingWidgets>
fn init_loading_widgets(_root: 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 update(
&mut self,
message: Self::Input,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = ()>
fn update( &mut self, message: Self::Input, sender: AsyncFactorySender<Self> ) -> impl Future<Output = ()>
Processes inputs received by the component.
sourcefn update_cmd(
&mut self,
message: Self::CommandOutput,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = ()>
fn update_cmd( &mut self, message: Self::CommandOutput, sender: AsyncFactorySender<Self> ) -> impl Future<Output = ()>
Defines how the component should respond to command updates.
sourcefn update_cmd_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::CommandOutput,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = ()>
fn update_cmd_with_view( &mut self, widgets: &mut Self::Widgets, message: Self::CommandOutput, sender: AsyncFactorySender<Self> ) -> impl Future<Output = ()>
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(
&mut self,
widgets: &mut Self::Widgets,
message: Self::Input,
sender: AsyncFactorySender<Self>
) -> impl Future<Output = ()>
fn update_with_view( &mut self, widgets: &mut Self::Widgets, message: Self::Input, sender: AsyncFactorySender<Self> ) -> impl Future<Output = ()>
Updates the model and view. Optionally returns a command to run.
Object Safety§
This trait is not object safe.