diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-03-07 17:22:13 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2016-03-07 17:22:13 +0100 |
commit | 501f4f3111fc5c91d02f96b5e25e99e877339cd6 (patch) | |
tree | dc2ba4c712c9959665ef3cb27ea0526605102683 /libimagutil | |
parent | 20201d235805b4b998109af950020c82d3db306f (diff) | |
parent | a429e872e1c43b9d8a330443d5e2fd605101ca9c (diff) |
Merge pull request #203 from matthiasbeyer/libimagutil/ismatch-util
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 0b74fc2d..4140f429 100644 --- a/libimagutil/src/lib.rs +++ b/libimagutil/src/lib.rs @@ -2,6 +2,7 @@ #[macro_use] extern crate log; extern crate regex; +pub mod ismatch; pub mod key_value_split; pub mod trace; pub mod variants; |