diff --git a/mario-macro/src/lib.rs b/mario-macro/src/lib.rs index 1e1c150..c1212c6 100644 --- a/mario-macro/src/lib.rs +++ b/mario-macro/src/lib.rs @@ -16,23 +16,33 @@ pub fn handler( } fn generate_handler(_args: TokenStream, input: TokenStream) -> syn::Result { + + let item_fn = syn::parse::(input)?; + let vis = &item_fn.vis; + let ident = &item_fn.sig.ident; + + let expanded = quote! { + #[derive(Debug)] - struct example_2; - impl example_2 { + #vis struct #ident; + + impl #ident { pub fn new() -> Self { Self } } - impl Endpoint for example_2 { + + impl Endpoint for #ident { fn handler(&self, req: &mario_core::route::request::Request) -> Result { // Your implementation here //Ok(Response::new("run example handler")) - async fn example_1() -> String { - //Ok(Response::new("run example_1")) - "run example_2".to_string() - } - let fut = example_1(); + // async fn example_2() -> String { + // //Ok(Response::new("run example_1")) + // "run example_2".to_string() + // } + #item_fn + let fut = #ident(); let response = executor::block_on(fut); Ok(Response::new(&response)) } diff --git a/mario-rs-examples/src/main.rs b/mario-rs-examples/src/main.rs index 520fdd6..f3e4d05 100644 --- a/mario-rs-examples/src/main.rs +++ b/mario-rs-examples/src/main.rs @@ -82,9 +82,9 @@ impl Endpoint for ExampleHandler { // } #[handler] -async fn example_2() -> String { +async fn example_999() -> String { //Ok(Response::new("run example_1")) - "run example_2".to_string() + "run example_99999".to_string() } #[tokio::main] @@ -98,7 +98,7 @@ pub async fn main() { //let handler = create_handler!(ExampleHandler); let route = Route::new(http::Method::GET, "/hello_world".to_string(), handler); - let handler_1 = create_handler!(example_2); + let handler_1 = create_handler!(example_999); let route_1 = Route::new(http::Method::GET, "/hello_world_2".to_string(), handler_1); server.server.bind_route(route);