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 { 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 { 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(); }