Widget
This crate is centered around the concept of widgets, which are different than the gtk widgets. In relm, a widget is composed of a view, a model, and a method to update the model in reaction to events. The concept of widget is implemented by a trait in relm: the Widget trait.
Model
We'll start with an empty model and we'll populate it later in this chapter:
pub struct Model {
}As you can see, a model can be a simple structure. It could also be () if your widget don't need a model. Actually, it can be any type you want.
Besides the model, a widget needs to know the initial value of its model. To specify what it is, we need to implement the model() method of the Widget trait:
#[widget]
impl Widget for App {
fn model() -> Model {
Model {
}
}
// …
}Here, we use the #[widget] attribute provided by the relm_attributes crate. Attributes are currently an unstable feature of the language, that's why we use nightly. We'll see in the section about the declarative view...