diff --git a/pulse-ui/src/lib.rs b/pulse-ui/src/lib.rs index 3318231..2bb5508 100644 --- a/pulse-ui/src/lib.rs +++ b/pulse-ui/src/lib.rs @@ -2,3 +2,24 @@ pub mod layout; pub mod render; pub mod unit; pub mod widget; + +pub trait App { + // Rendering + fn layout(&self) -> layout::Allocation; + fn render(&mut self, layout: layout::Allocation); + + // State + fn init(&mut self); + + fn update(&mut self); + + fn refresh(&mut self) { + self.render(self.layout()); + } + + // Run + fn run(&mut self) { + self.init(); + self.refresh(); + } +}