1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
#[macro_export] macro_rules! http_router { {$($method:tt $pattern:expr => $data:expr),+} => {{ let mut __router = $crate::HttpRouter::new(); $(http_router!(@entry __router, $method, $pattern, $data);)+ __router }}; {@entry $router:expr, @, $prefix:expr, $sub_router:expr} => { $router.insert_router($prefix, $sub_router) }; {@entry $router:expr, GET, $pattern:expr, $data:expr} => { $router.insert($crate::Method::GET, $pattern, $data) }; {@entry $router:expr, POST, $pattern:expr, $data:expr} => { $router.insert($crate::Method::POST, $pattern, $data) }; {@entry $router:expr, PUT, $pattern:expr, $data:expr} => { $router.insert($crate::Method::PUT, $pattern, $data) }; {@entry $router:expr, DELETE, $pattern:expr, $data:expr} => { $router.insert($crate::Method::DELETE, $pattern, $data) }; {@entry $router:expr, HEAD, $pattern:expr, $data:expr} => { $router.insert($crate::Method::HEAD, $pattern, $data) }; {@entry $router:expr, OPTIONS, $pattern:expr, $data:expr} => { $router.insert($crate::Method::OPTIONS, $pattern, $data) }; {@entry $router:expr, CONNECT, $pattern:expr, $data:expr} => { $router.insert($crate::Method::CONNECT, $pattern, $data) }; {@entry $router:expr, PATCH, $pattern:expr, $data:expr} => { $router.insert($crate::Method::PATCH, $pattern, $data) }; {@entry $router:expr, TRACE, $pattern:expr, $data:expr} => { $router.insert($crate::Method::TRACE, $pattern, $data) }; }