Moving towards a generic trait wrapper to call between dynamic and static dispatch functions.
This commit is contained in:
@@ -19,6 +19,24 @@ pub struct DustRenderer<'a> {
|
||||
templates: HashMap<String, &'a Template<'a>>,
|
||||
}
|
||||
|
||||
pub trait RenderWrapper {
|
||||
fn render_body<'a>(
|
||||
&'a self,
|
||||
renderer: &'a DustRenderer,
|
||||
body: &Body,
|
||||
) -> Result<String, RenderError>;
|
||||
}
|
||||
|
||||
impl<C: ContextElement> RenderWrapper for C {
|
||||
fn render_body<'a>(
|
||||
&'a self,
|
||||
renderer: &'a DustRenderer,
|
||||
body: &Body,
|
||||
) -> Result<String, RenderError<'a>> {
|
||||
renderer.render_body(body, self)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn compile_template<'a>(
|
||||
source: &'a str,
|
||||
name: String,
|
||||
@@ -117,7 +135,7 @@ impl<'a> DustRenderer<'a> {
|
||||
let rendered_results: Result<Vec<String>, RenderError> =
|
||||
loop_elements
|
||||
.into_iter()
|
||||
.map(|array_elem| self.render_body(&body, array_elem))
|
||||
.map(|array_elem| array_elem.render_body(self, &body))
|
||||
.collect();
|
||||
let rendered_slice: &[String] = &rendered_results?;
|
||||
return Ok(rendered_slice.join(""));
|
||||
|
||||
Reference in New Issue
Block a user