1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use crate::{Cmd, Node}; /// The app should implement this trait for it to be handled by the Program pub trait Component<MSG> where MSG: 'static, { /// an implementing APP component can have an init function /// which executes right after the APP is instantiated by the program fn init(&self) -> Cmd<Self, MSG> where Self: Sized + 'static, { Cmd::none() } /// optionally a component can specify it's own css style fn style(&self) -> Vec<String> { vec![] } /// Called each time an action is triggered from the view fn update(&mut self, _msg: MSG) -> Cmd<Self, MSG> where Self: Sized + 'static; /// Returns a node on how the component is presented. fn view(&self) -> Node<MSG>; }