Macro delegate_handler
Source macro_rules! delegate_handler {
($struct_name:ty) => { ... };
($struct_name:ty => $target:ident) => { ... };
}
Expand description
ยงMacro for implementing Handler for simple newtypes that contain another handler.
use trillium::{delegate_handler, State, Conn, conn_unwrap};
use trillium_testing::TestServer;
#[derive(Clone, Copy)]
struct MyState(usize);
struct MyHandler { handler: State<MyState> }
delegate_handler!(MyHandler => handler);
impl MyHandler {
fn new(n: usize) -> Self {
MyHandler { handler: State::new(MyState(n)) }
}
}
let handler = (MyHandler::new(5), |conn: Conn| async move {
let MyState(n) = *conn_unwrap!(conn.state(), conn);
conn.ok(n.to_string())
});
let app = TestServer::new(handler).await;
app.get("/").await.assert_ok().assert_body("5");
use trillium::{Conn, State, conn_unwrap, delegate_handler};
use trillium_testing::TestServer;
#[derive(Clone, Copy)]
struct MyState(usize);
struct MyHandler(State<MyState>);
delegate_handler!(MyHandler);
impl MyHandler {
fn new(n: usize) -> Self {
MyHandler(State::new(MyState(n)))
}
}
let handler = (MyHandler::new(5), |conn: Conn| async move {
let MyState(n) = *conn_unwrap!(conn.state(), conn);
conn.ok(n.to_string())
});
let app = TestServer::new(handler).await;
app.get("/").await.assert_ok().assert_body("5");