bolt-web 0.1.7

⚡ A high-performance, minimalist web framework for Rust, inspired by Express.js and Gin.
Documentation
#[macro_export]
macro_rules! bolt_handler {
    ($fn_name:ident) => {
        $crate::paste::paste! {
            pub struct [<$fn_name:camel Handler>];

            #[async_trait::async_trait]
            impl $crate::types::Handler for [<$fn_name:camel Handler>] {
                async fn handle(
                    &self,
                    req: &mut $crate::request::RequestBody,
                    res: &mut $crate::response::ResponseWriter
                ) {
                    $fn_name(req, res).await;
                }
            }

            #[allow(non_upper_case_globals)]
            pub const [<$fn_name:upper _HANDLER>]: [<$fn_name:camel Handler>] = [<$fn_name:camel Handler>];
        }
    };
}

#[macro_export]
macro_rules! bolt_middleware {
    ($fn_name:ident) => {
        $crate::paste::paste! {
            pub struct [<$fn_name:camel Middleware>];

            #[async_trait::async_trait]
            impl $crate::types::Middleware for [<$fn_name:camel Middleware>] {
                async fn run(&self, req: &mut $crate::request::RequestBody, res: &mut $crate::response::ResponseWriter) {
                    $fn_name(req, res).await;
                }
            }

            #[allow(dead_code, non_upper_case_globals)]
            pub const [<$fn_name:upper _MIDDLEWARE>]: [<$fn_name:camel Middleware>] = [<$fn_name:camel Middleware>];
        }
    };
}

#[macro_export]
macro_rules! bolt_error_handler {
    ($fn_name:ident) => {
        $crate::paste::paste! {
            pub struct [<$fn_name:camel ErrorHandler>];

            #[async_trait::async_trait]
            impl $crate::types::ErrorHandler for [<$fn_name:camel ErrorHandler>] {
                async fn run(&self, msg: String, res: &mut $crate::response::ResponseWriter) {
                    $fn_name(msg, res).await;
                }
            }

            #[allow(non_upper_case_globals, dead_code)]
            pub const [<$fn_name:upper _ERROR_HANDLER>]: [<$fn_name:camel ErrorHandler>] = [<$fn_name:camel ErrorHandler>];
        }
    };
}