diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-02-19 10:49:50 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2016-02-21 11:44:39 +0100 |
commit | a429e872e1c43b9d8a330443d5e2fd605101ca9c (patch) | |
tree | 4090b161a75c5812b7b24750b23c444e7e6d1772 /libimagutil | |
parent | 0bf22672f9686906b93ede251c8eeb66cf396c65 (diff) |
Add ismatch!() macro
Diffstat (limited to 'libimagutil')
-rw-r--r-- | libimagutil/src/ismatch.rs | 23 | ||||
-rw-r--r-- | libimagutil/src/lib.rs | 1 |
2 files changed, 24 insertions, 0 deletions
diff --git a/libimagutil/src/ismatch.rs b/libimagutil/src/ismatch.rs new file mode 100644 index 00000000..9739f139 --- /dev/null +++ b/libimagutil/src/ismatch.rs @@ -0,0 +1,23 @@ +#[macro_export] +macro_rules! is_match { + ($expression: expr, $($pattern:tt)+) => { + is_match! {tt + match $expression { + $($pattern)+ => true, + _ => false + } + } + }; + (tt $value:expr) => ($value); +} + +#[test] +fn test_matching() { + let foo = Some("-12"); + assert!(is_match!(foo, Some(bar) if + is_match!(bar.as_bytes()[0], b'+' | b'-') && + is_match!(bar.as_bytes()[1], b'0'...b'9') + )); + assert!(!is_match!(foo, None)); +} + diff --git a/libimagutil/src/lib.rs b/libimagutil/src/lib.rs index a7586143..7ee20819 100644 --- a/libimagutil/src/lib.rs +++ b/libimagutil/src/lib.rs @@ -1,6 +1,7 @@ #[macro_use] extern crate log; extern crate regex; +pub mod ismatch; pub mod key_value_split; pub mod trace; pub mod variants; |