use std::io::Write;
use crate::error::Result;
use super::Renderable;
use super::Runtime;
#[derive(Debug)]
pub struct Template {
elements: Vec<Box<dyn Renderable>>,
}
impl Template {
pub fn new(elements: Vec<Box<dyn Renderable>>) -> Template {
Template { elements }
}
}
impl Renderable for Template {
fn render_to(&self, writer: &mut dyn Write, runtime: &dyn Runtime) -> Result<()> {
for el in &self.elements {
el.render_to(writer, runtime)?;
if runtime
.registers()
.get_mut::<super::InterruptRegister>()
.interrupted()
{
break;
}
}
Ok(())
}
}