Return impl IntoElement from RenderOnce::render

This makes it a bit more approachable to implement.

This required converting the state of Component to AnyElement, which
costs an allocation. I'm hoping this will be ok performance-wise now
that AnyElements use bump allocation, but I need to benchmark still.
This commit is contained in:
Nathan Sobo 2024-01-02 10:27:09 -07:00
parent 1b5c8b2b4a
commit 68e7d99219
35 changed files with 74 additions and 183 deletions

View file

@ -1,5 +1,5 @@
use gpui::{relative, DefiniteLength, MouseButton};
use gpui::{rems, transparent_black, AnyElement, AnyView, ClickEvent, Div, Hsla, Rems, Stateful};
use gpui::{rems, transparent_black, AnyElement, AnyView, ClickEvent, Hsla, Rems};
use smallvec::SmallVec;
use crate::prelude::*;
@ -363,9 +363,7 @@ impl ParentElement for ButtonLike {
}
impl RenderOnce for ButtonLike {
type Output = Stateful<Div>;
fn render(self, cx: &mut WindowContext) -> Self::Output {
fn render(self, cx: &mut WindowContext) -> impl IntoElement {
self.base
.h_flex()
.id(self.id.clone())