summaryrefslogtreecommitdiffstats
path: root/libimagutil
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-02-19 10:49:50 +0100
committerMatthias Beyer <mail@beyermatthias.de>2016-02-21 11:44:39 +0100
commita429e872e1c43b9d8a330443d5e2fd605101ca9c (patch)
tree4090b161a75c5812b7b24750b23c444e7e6d1772 /libimagutil
parent0bf22672f9686906b93ede251c8eeb66cf396c65 (diff)
Add ismatch!() macro
Diffstat (limited to 'libimagutil')
-rw-r--r--libimagutil/src/ismatch.rs23
-rw-r--r--libimagutil/src/lib.rs1
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;