diff --git a/src/error/error.rs b/src/error/error.rs index 5daa7d6..245fe5a 100644 --- a/src/error/error.rs +++ b/src/error/error.rs @@ -12,6 +12,7 @@ pub(crate) enum CustomError { Serde(serde_json::Error), Utf8(Utf8Error), FromUtf8(FromUtf8Error), + DusterCompile(duster::renderer::CompileError), } impl From for CustomError { @@ -67,3 +68,9 @@ impl From for CustomError { CustomError::FromUtf8(value) } } + +impl From for CustomError { + fn from(value: duster::renderer::CompileError) -> Self { + CustomError::DusterCompile(value) + } +} diff --git a/src/render/duster_renderer.rs b/src/render/duster_renderer.rs index ec19b6a..492d84a 100644 --- a/src/render/duster_renderer.rs +++ b/src/render/duster_renderer.rs @@ -1,3 +1,5 @@ +use crate::error::CustomError; + use super::renderer_integration::RendererIntegration; use duster::renderer::DustRenderer; use serde::Serialize; @@ -11,15 +13,16 @@ impl DusterRenderer { } impl RendererIntegration for DusterRenderer { - fn load_template(&mut self, name: N, contents: C) -> Result<(), crate::error::CustomError> + fn load_template(&mut self, name: N, contents: C) -> Result<(), CustomError> where N: Into, - C: Into, + C: AsRef, { + let compiled_template = duster::renderer::compile_template(contents.as_ref())?; Ok(()) } - fn render(&self, context: C) -> Result + fn render(&self, context: C) -> Result where C: Serialize, { diff --git a/src/render/renderer_integration.rs b/src/render/renderer_integration.rs index 3087739..7d6591d 100644 --- a/src/render/renderer_integration.rs +++ b/src/render/renderer_integration.rs @@ -6,9 +6,9 @@ pub(crate) trait RendererIntegration { fn load_template(&mut self, name: N, contents: C) -> Result<(), CustomError> where N: Into, - C: Into; + C: AsRef; - fn render(&self, context: C) -> Result + fn render(&self, context: C) -> Result where C: Serialize; }