logo
pub trait Components<ParentModel: ?Sized + Model> {
    fn init_components(
        parent_model: &ParentModel,
        parent_sender: Sender<ParentModel::Msg>
    ) -> Self; fn connect_parent(&mut self, _parent_widgets: &ParentModel::Widgets); }
Expand description

Define how to initialize one or more components.

Typically a struct is used to store multiple components that are child components of the app or another component.

Example

struct AppComponents {
    comp1: RelmComponent<Comp1Model, AppModel>,
    comp2: RelmComponent<Comp2Model, AppModel>,
}

impl Components<AppModel> for AppComponents {
    fn init_components(parent_model: &AppModel, parent_sender: Sender<AppMsg>) -> Self {
        AppComponents {
            comp1: RelmComponent::new(parent_model, parent_sender.clone()),
            comp2: RelmComponent::new(parent_model, parent_sender),
        }
    }

    fn connect_parent(&mut self, parent_widgets: &AppWidgets) {
        self.comp1.connect_parent(parent_widgets);
        self.comp2.connect_parent(parent_widgets);
    }
}

Required methods

Initialize your components and workers inside this function.

Connect the components to their parent components widgets (to set the parent window for example).

Implementations on Foreign Types

Implementors