liquid_interpreter/
renderable.rs

1use std::fmt::Debug;
2use std::io::Write;
3
4use liquid_error::Result;
5
6use super::Context;
7
8/// Any object (tag/block) that can be rendered by liquid must implement this trait.
9pub trait Renderable: Send + Sync + Debug {
10    /// Renders the Renderable instance given a Liquid context.
11    fn render(&self, context: &mut Context) -> Result<String> {
12        let mut data = Vec::new();
13        self.render_to(&mut data, context)?;
14        Ok(String::from_utf8(data).expect("render only writes UTF-8"))
15    }
16
17    /// Renders the Renderable instance given a Liquid context.
18    fn render_to(&self, writer: &mut Write, context: &mut Context) -> Result<()>;
19}