pub struct Engine { /* private fields */ }Expand description
A template engine that compiles templates into an AST and renders them.
Templates are added by name and can reference each other via {% include %}
and {% extends %} / {% block %}.
Implementations§
Source§impl Engine
impl Engine
Sourcepub fn new(mode: EscapeMode) -> Self
pub fn new(mode: EscapeMode) -> Self
Create a new engine with the given escaping mode.
Sourcepub fn add_template(&mut self, name: &str, source: &str) -> Result<(), Error>
pub fn add_template(&mut self, name: &str, source: &str) -> Result<(), Error>
Compile and register a template by name.
Returns an error if the template source contains invalid syntax
(e.g. unclosed {{ }}, mismatched {% if %} / {% endif %})
or if a template with the same name already exists.
Sourcepub fn render(
&self,
name: &str,
context: impl IntoContext,
) -> Result<String, Error>
pub fn render( &self, name: &str, context: impl IntoContext, ) -> Result<String, Error>
Render a named template with the given context variables.
Pass a Context built with the [context!] macro, or a reference to
any type that implements Serialize (requires the
std feature). Non-map values such as plain strings or numbers produce
a render error.
use template::{Engine, EscapeMode, context};
let mut engine = Engine::new(EscapeMode::Text);
engine.add_template("t", "Hello, {{ name }}!").unwrap();
let result = engine.render("t", context! { name: "World" }).unwrap();
assert_eq!(result, "Hello, World!");Returns an error if the template name is not registered or if an expression fails during rendering.