diff --git a/crates/gpui2/src/element.rs b/crates/gpui2/src/element.rs index 442b5b3ac5..08b6ec0408 100644 --- a/crates/gpui2/src/element.rs +++ b/crates/gpui2/src/element.rs @@ -125,12 +125,18 @@ pub trait IntoElement: Sized { } } +/// A trait that all [View] types must implement. +/// This trait tells the framework how a particular type is displayed on screen. +/// For any type `V` implementing `Render`, you can create a `View` handle, which can be used as an element in another view or as the root of a window. pub trait Render: 'static + Sized { type Output: IntoElement; + /// Describes how this type is displayed on screen. fn render(&mut self, cx: &mut ViewContext) -> Self::Output; } +/// You can derive [IntoElement] on any type that implements this trait. +/// It is used to allow views to be expressed in terms of abstract data. pub trait RenderOnce: 'static { type Output: IntoElement;