pub trait Render : ' static + Sized { type Rendered : RenderOnce + ' static ; // We can delete this type in Rust 1.75 fn render (& mut self , cx : & mut ViewContext < Self >) -> Self :: Rendered ; } use gpui ::{ prelude ::*, Div , div}; struct TaskList { title : SharedString , tasks : Vec < Task > } struct Task { title : SharedString , completed : SharedString , } impl Render for TaskList { type Rendered = Div ; fn render (& mut self , cx : & mut ViewContext < Self >) -> Self :: Rendered { // In reality this would need more styling. #[derive( IntoElement )] struct Button { title : SharedString , icon_path : Option < SharedString >, on_click : ClickListener , } impl RenderOnce for Button { type Rendered = Div ; fn render ( self , cx : & mut WindowContext ) -> Self :: Rendered { div () .