pub trait Window: Debug {
// Required methods
fn new() -> Self
where Self: Sized;
fn update(&mut self, message: WindowMessage) -> Task<WindowMessage>;
fn view(&self) -> Element<'_, WindowMessage>;
fn title(&self) -> String;
fn set_window_id(&mut self, window_id: Id);
// Provided methods
fn init_task() -> Task<WindowMessage>
where Self: Sized { ... }
fn window_settings() -> Settings
where Self: Sized { ... }
}