use async_std::task;
use tide::Request;
fn fib(n: usize) -> usize {
if n == 0 || n == 1 {
n
} else {
fib(n - 1) + fib(n - 2)
}
}
async fn fibsum(req: Request<()>) -> tide::Result<String> {
use std::time::Instant;
let n: usize = req.param("n").unwrap_or(0);
let start = Instant::now();
let fib_n = fib(n);
let duration = start.elapsed().as_secs();
let res = format!(
"The fib of {} is {}.\nIt was computed in {} secs.\n",
n, fib_n, duration,
);
Ok(res)
}
fn main() -> Result<(), std::io::Error> {
task::block_on(async {
let mut app = tide::new();
app.at("/fib/:n").get(fibsum);
app.listen("0.0.0.0:8080").await?;
Ok(())
})
}