pub trait HandlerPlugin {
// Required methods
fn push_scope(&mut self);
fn pop_scope(&mut self);
fn on_binding_start(
&mut self,
name: &str,
writer: &mut dyn ResponseWriter,
) -> Result<()>;
fn on_binding_end(
&mut self,
name: &str,
writer: &mut dyn ResponseWriter,
) -> Result<()>;
fn on_repeat_item_start(
&mut self,
index: usize,
writer: &mut dyn ResponseWriter,
) -> Result<()>;
fn on_repeat_item_end(
&mut self,
index: usize,
writer: &mut dyn ResponseWriter,
) -> Result<()>;
fn on_plugin_data(
&mut self,
data: &[u8],
writer: &mut dyn ResponseWriter,
) -> Result<()>;
// Provided method
fn on_render_complete(
&mut self,
_protocol: &WebUIProtocol,
_rendered_components: &HashSet<String>,
_writer: &mut dyn ResponseWriter,
) -> Result<()> { ... }
}Expand description
A handler plugin that can inject additional content during rendering.
Plugins receive callbacks at key points in the rendering lifecycle:
- Scope management:
push_scope/pop_scopefor component and loop boundaries - Binding lifecycle:
on_binding_start/on_binding_endaround signals, for-loops, if-conditions - Repeat items:
on_repeat_item_start/on_repeat_item_endper for-loop item - Plugin data:
on_plugin_datafor opaque data from parser plugins
WebUI does not interpret what plugins write — it just calls the hooks. Each framework defines its own marker format.
Required Methods§
Sourcefn push_scope(&mut self)
fn push_scope(&mut self)
Enter a new scope (component or for-loop item boundary). Typically resets per-scope counters.
Sourcefn on_binding_start(
&mut self,
name: &str,
writer: &mut dyn ResponseWriter,
) -> Result<()>
fn on_binding_start( &mut self, name: &str, writer: &mut dyn ResponseWriter, ) -> Result<()>
Called before rendering a binding (signal, for-loop, or if-condition).
Sourcefn on_binding_end(
&mut self,
name: &str,
writer: &mut dyn ResponseWriter,
) -> Result<()>
fn on_binding_end( &mut self, name: &str, writer: &mut dyn ResponseWriter, ) -> Result<()>
Called after rendering a binding.
Sourcefn on_repeat_item_start(
&mut self,
index: usize,
writer: &mut dyn ResponseWriter,
) -> Result<()>
fn on_repeat_item_start( &mut self, index: usize, writer: &mut dyn ResponseWriter, ) -> Result<()>
Called before rendering a repeat item in a for loop.
Sourcefn on_repeat_item_end(
&mut self,
index: usize,
writer: &mut dyn ResponseWriter,
) -> Result<()>
fn on_repeat_item_end( &mut self, index: usize, writer: &mut dyn ResponseWriter, ) -> Result<()>
Called after rendering a repeat item.
Sourcefn on_plugin_data(
&mut self,
data: &[u8],
writer: &mut dyn ResponseWriter,
) -> Result<()>
fn on_plugin_data( &mut self, data: &[u8], writer: &mut dyn ResponseWriter, ) -> Result<()>
Called when a plugin-specific protocol fragment is encountered. The data is opaque bytes from the parser plugin — interpretation is plugin-defined.
Provided Methods§
Sourcefn on_render_complete(
&mut self,
_protocol: &WebUIProtocol,
_rendered_components: &HashSet<String>,
_writer: &mut dyn ResponseWriter,
) -> Result<()>
fn on_render_complete( &mut self, _protocol: &WebUIProtocol, _rendered_components: &HashSet<String>, _writer: &mut dyn ResponseWriter, ) -> Result<()>
Called after all fragments have been rendered.