#![feature(conservative_impl_trait)]
extern crate salt;
use std::time;
use salt::{BoxHandler, Handler, Stack};
use salt::prelude::*;
fn hello(_: Context) -> Response {
Response::with("Hello World!\n")
}
fn timeit(next: BoxHandler) -> impl Handler {
move |ctx: Context| {
let time_before = time::Instant::now();
next.call(ctx).map(move |response| {
let d = time::Instant::now().duration_since(time_before);
let elapsed = (d.as_secs() * 1_000_000) + (d.subsec_nanos() as u64 / 1_000);
println!("Request took {}μs", elapsed);
response
})
}
}
fn main() {
let mut stack = Stack::new(hello);
stack.add(timeit);
Salt::new(stack).run(":7878").unwrap();
}