pub trait Component: Sized {
type Init<'a>;
type Message;
type Event;
// Required methods
fn init(init: Self::Init<'_>, sender: &ComponentSender<Self>) -> Self;
async fn start(&mut self, sender: &ComponentSender<Self>) -> !;
async fn update(
&mut self,
message: Self::Message,
sender: &ComponentSender<Self>,
) -> bool;
fn render(&mut self, sender: &ComponentSender<Self>);
}Available on crate feature
winio only.Expand description
Foundamental GUI component.
Required Associated Types§
Required Methods§
Sourcefn init(init: Self::Init<'_>, sender: &ComponentSender<Self>) -> Self
fn init(init: Self::Init<'_>, sender: &ComponentSender<Self>) -> Self
Create the initial component.
Sourceasync fn start(&mut self, sender: &ComponentSender<Self>) -> !
async fn start(&mut self, sender: &ComponentSender<Self>) -> !
Start the event listening.
Sourceasync fn update(
&mut self,
message: Self::Message,
sender: &ComponentSender<Self>,
) -> bool
async fn update( &mut self, message: Self::Message, sender: &ComponentSender<Self>, ) -> bool
Respond to the message.
Sourcefn render(&mut self, sender: &ComponentSender<Self>)
fn render(&mut self, sender: &ComponentSender<Self>)
Render the widgets.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.