pub trait Renderer {
type Scene: RenderScene;
type Error;
// Required methods
fn scene(&self) -> &Self::Scene;
fn scene_mut(&mut self) -> &mut Self::Scene;
fn rebuild_scene(
&mut self,
layout_tree: &LayoutTree,
viewport: Size,
) -> Result<(), Self::Error>;
fn rebuild_scene_from_applier(
&mut self,
applier: &mut MemoryApplier,
root: NodeId,
viewport: Size,
) -> Result<(), Self::Error>;
// Provided methods
fn attach_app_context_services(&mut self, _app_context: &AppContext) { ... }
fn update_scene_from_applier(
&mut self,
applier: &mut MemoryApplier,
root: NodeId,
viewport: Size,
dirty_nodes: &[NodeId],
) -> Result<(), Self::Error> { ... }
fn draw_dev_overlay(&mut self, _text: &str, _viewport: Size) { ... }
}Expand description
Abstraction implemented by concrete renderer backends.
Required Associated Types§
type Scene: RenderScene
type Error
Required Methods§
fn scene(&self) -> &Self::Scene
fn scene_mut(&mut self) -> &mut Self::Scene
fn rebuild_scene( &mut self, layout_tree: &LayoutTree, viewport: Size, ) -> Result<(), Self::Error>
Sourcefn rebuild_scene_from_applier(
&mut self,
applier: &mut MemoryApplier,
root: NodeId,
viewport: Size,
) -> Result<(), Self::Error>
fn rebuild_scene_from_applier( &mut self, applier: &mut MemoryApplier, root: NodeId, viewport: Size, ) -> Result<(), Self::Error>
Rebuilds the scene by traversing the LayoutNode tree directly via Applier.
This is the new architecture that eliminates per-frame LayoutTree reconstruction. Implementors must read layout state from LayoutNode.layout_state() directly.
Provided Methods§
Sourcefn attach_app_context_services(&mut self, _app_context: &AppContext)
fn attach_app_context_services(&mut self, _app_context: &AppContext)
Installs renderer-provided app services into the target AppContext.
AppShell calls this before the first composition pass. Renderers that provide text measurement or other per-app services should install them here rather than as constructor side effects.
fn update_scene_from_applier( &mut self, applier: &mut MemoryApplier, root: NodeId, viewport: Size, dirty_nodes: &[NodeId], ) -> Result<(), Self::Error>
Sourcefn draw_dev_overlay(&mut self, _text: &str, _viewport: Size)
fn draw_dev_overlay(&mut self, _text: &str, _viewport: Size)
Draw a development overlay (e.g., FPS counter) on top of the scene.
This is called after rebuild_scene when dev options are enabled. The text is drawn directly by the renderer without affecting composition.
Default implementation does nothing.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".