From aa685e3b0f41b06dd2abdd41e5eb5c7587666f46 Mon Sep 17 00:00:00 2001 From: Joseph Martin Date: Sun, 27 Mar 2016 20:34:18 -0400 Subject: [PATCH] Added mount! macro to simplify the construction of Mount objects --- src/lib.rs | 1 + src/macros.rs | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/macros.rs diff --git a/src/lib.rs b/src/lib.rs index 9eab0ab..c1cd879 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,4 +10,5 @@ extern crate sequence_trie; pub use mount::{Mount, OriginalUrl}; mod mount; +mod macros; diff --git a/src/macros.rs b/src/macros.rs new file mode 100644 index 0000000..4520289 --- /dev/null +++ b/src/macros.rs @@ -0,0 +1,35 @@ +/// Create and populate a mount. +/// +/// ```ignore +/// let router = router!("/" => index, +/// "/:query" => queryHandler) +/// ``` +/// +/// Is equivalent to: +/// +/// ```ignore +/// let mut mount = Mount::new(); +/// mount.mount("/", index); +/// mount.mount("/:query", queryHandler); +/// ``` +#[macro_export] +macro_rules! mount { + ($($mountpoint:expr => $handler:expr),+ $(,)*) => ( { + let mut mount = $crate::Mount::new(); + $(mount.mount($mountpoint, $handler);)* + mount + }); +} + + +#[cfg(test)] +mod tests { + use iron::{Response, Request, IronResult}; + + #[test] + fn methods() { + fn handler(_: &mut Request) -> IronResult {Ok(Response::new())} + let _ = mount!("/" => handler, + "/foo" => handler); + } +}