use crate::element_configuring::{ConfigureElements, ConfiguredParentElement};
pub trait LayoutManagerCompatible<Renderer> {
fn init(&mut self, _renderer: &mut Renderer) {}
fn prepare(&mut self, render: &Renderer);
}
pub trait LayoutManager<'frame, ConfigType, RenderCommandType>
where
ConfigType: 'frame,
RenderCommandType: 'frame,
{
type ElementConfigurer<'layout>: ConfigureElements<ConfigType>
where
Self: 'layout,
ConfigType: 'frame,
RenderCommandType: 'frame;
fn begin_frame<'layout>(
&'layout mut self,
) -> impl LayoutFrameManager<'frame, ConfigType, RenderCommandType, Self::ElementConfigurer<'layout>>
where
Self: 'layout,
ConfigType: 'frame,
RenderCommandType: 'frame;
}
pub trait LayoutFrameManager<
'frame,
ConfigType: 'frame,
RenderCommandType: 'frame,
ElementConfigurer: ConfigureElements<ConfigType>,
>
{
fn begin(&'_ mut self) -> ConfiguredParentElement<'_, ElementConfigurer, ConfigType>;
fn end(self) -> impl Iterator<Item = RenderCommandType>;
}