#![feature(async_await, futures_api)]
use futures::future::FutureObj;
use tide::{head::Path, middleware::RequestContext, ExtractConfiguration, Response};
#[derive(Clone, Debug, Default)]
struct IncreaseBy(i32);
async fn add(
Path(base): Path<i32>,
ExtractConfiguration(amount): ExtractConfiguration<IncreaseBy>,
) -> String {
let IncreaseBy(amount) = amount.unwrap_or_default();
format!("{} plus {} is {}", base, amount, base + amount)
}
fn debug_store(ctx: RequestContext<()>) -> FutureObj<Response> {
println!("{:#?}", ctx.store());
ctx.next()
}
fn main() {
let mut app = tide::App::new(());
app.config(IncreaseBy(1));
app.middleware(debug_store);
app.at("add_one/{}").get(add); app.at("add_two/{}").get(add).config(IncreaseBy(2));
app.serve();
}