handlebars-iron 0.29.0

Handlebars templating middleware for Iron.
Documentation
extern crate handlebars_iron as hbs;
extern crate iron;

use hbs::{DirectorySource, HandlebarsEngine, Template};
use iron::prelude::*;
use iron::{status, AfterMiddleware};

/// the handler
fn hello_world(_: &mut Request) -> IronResult<Response> {
    let mut resp = Response::new();

    let data = "".to_owned();
    resp.set_mut(Template::new("not-exist", data))
        .set_mut(status::Ok);
    Ok(resp)
}

struct ErrorReporter;

impl AfterMiddleware for ErrorReporter {
    fn catch(&self, _: &mut Request, err: IronError) -> IronResult<Response> {
        println!("{}", err);
        Err(err)
    }
}

fn main() {
    let mut chain = Chain::new(hello_world);
    let mut hbse = HandlebarsEngine::new();
    hbse.add(Box::new(DirectorySource::new(
        "./examples/templates/",
        ".hbs",
    )));
    // success of panic
    if let Err(r) = hbse.reload() {
        panic!("{}", r);
    }

    chain.link_after(hbse);
    chain.link_after(ErrorReporter);
    println!("Server running at http://localhost:3000/");
    Iron::new(chain).http("localhost:3000").unwrap();
}