extern crate iron; extern crate persistent; use iron::prelude::*; use persistent::Write; use iron::typemap::Key; use iron::{status}; #[derive(Copy, Clone)] pub struct HitCounter; impl Key for HitCounter { type Value = usize; } fn serve_hits(req: &mut Request) -> IronResult { let mutex = req.get::>().unwrap(); let mut count = mutex.lock().unwrap(); *count += 1; Ok(Response::with((status::Ok, format!("Hits: {}", *count)))) } fn main() { let mut chain = Chain::new(serve_hits); chain.link(Write::::both(0)); Iron::new(chain).http("localhost:3000").unwrap(); }