vizia::model

Trait Model

pub trait Model: Sized + 'static {
    // Provided methods
    fn build(self, cx: &mut Context) { ... }
    fn event(&mut self, cx: &mut EventContext<'_>, event: &mut Event) { ... }
    fn name(&self) -> Option<&'static str> { ... }
}
Expand description

A trait implemented by application data in order to respond to events and mutate state.

§Examples

pub struct AppData {
    count: i32,
}

enum AppEvent {
    Increment,
    Decrement,
}

impl Model for AppData {
    fn event(&mut self, cx: &mut EventContext, event: &mut Event) {
        event.map(|app_event, _| match app_event {
            AppEvent::Increment => {
                self.count += 1;
            }

            AppEvent::Decrement => {
                self.count -= 1;
            }
        });
    }
}

Provided Methods§

fn build(self, cx: &mut Context)

Build the model data into the application tree.

§Examples
fn main() {
    Application::new(|cx|{
        AppData::default().build(cx);
    }).run();  
}

fn event(&mut self, cx: &mut EventContext<'_>, event: &mut Event)

Respond to events in order to mutate the model data.

§Examples
impl Model for AppData {
    fn event(&mut self, cx: &mut EventContext, event: &mut Event) {
        event.map(|app_event, _| match app_event {
            AppEvent::Increment => {
                self.count += 1;
            }

            AppEvent::Decrement => {
                self.count -= 1;
            }
        });
    }
}

fn name(&self) -> Option<&'static str>

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

§

impl Model for ()

Implementors§

§

impl Model for Environment

§

impl Model for ModalModel

§

impl Model for PopupData

§

impl<T> Model for Keymap<T>
where T: 'static + Clone + PartialEq + Send + Sync,