Trait relm4::prelude::FactoryComponent
source · pub trait FactoryComponent: Position<<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(
init: Self::Init,
index: &DynamicIndex,
sender: FactorySender<Self>
) -> Self;
fn init_root(&self) -> Self::Root;
fn init_widgets(
&mut self,
index: &DynamicIndex,
root: &Self::Root,
returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget,
sender: FactorySender<Self>
) -> Self::Widgets;
fn output_to_parent_input(
_output: Self::Output
) -> Option<Self::ParentInput> { ... }
fn update(&mut self, message: Self::Input, sender: FactorySender<Self>) { ... }
fn update_cmd(
&mut self,
message: Self::CommandOutput,
sender: FactorySender<Self>
) { ... }
fn update_cmd_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::CommandOutput,
sender: FactorySender<Self>
) { ... }
fn update_view(
&self,
widgets: &mut Self::Widgets,
sender: FactorySender<Self>
) { ... }
fn update_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::Input,
sender: FactorySender<Self>
) { ... }
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(
init: Self::Init,
index: &DynamicIndex,
sender: FactorySender<Self>
) -> Self
fn init_model(
init: Self::Init,
index: &DynamicIndex,
sender: FactorySender<Self>
) -> Self
Initializes the model.
sourcefn init_widgets(
&mut self,
index: &DynamicIndex,
root: &Self::Root,
returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget,
sender: FactorySender<Self>
) -> Self::Widgets
fn init_widgets(
&mut self,
index: &DynamicIndex,
root: &Self::Root,
returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget,
sender: FactorySender<Self>
) -> Self::Widgets
Initializes the widgets.
Provided Methods§
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(&mut self, message: Self::Input, sender: FactorySender<Self>)
fn update(&mut self, message: Self::Input, sender: FactorySender<Self>)
Processes inputs received by the component.
sourcefn update_cmd(
&mut self,
message: Self::CommandOutput,
sender: FactorySender<Self>
)
fn update_cmd(
&mut self,
message: Self::CommandOutput,
sender: FactorySender<Self>
)
Defines how the component should respond to command updates.
sourcefn update_cmd_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::CommandOutput,
sender: FactorySender<Self>
)
fn update_cmd_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::CommandOutput,
sender: FactorySender<Self>
)
Handles updates from a command.
sourcefn update_view(&self, widgets: &mut Self::Widgets, sender: FactorySender<Self>)
fn update_view(&self, widgets: &mut Self::Widgets, sender: FactorySender<Self>)
Updates the view after the model has been updated.
sourcefn update_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::Input,
sender: FactorySender<Self>
)
fn update_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::Input,
sender: FactorySender<Self>
)
Updates the model and view. Optionally returns a command to run.