fancy_regex_macro/
lib.rs

1#[doc(hidden)]
2pub use fancy_regex::Regex;
3#[doc(hidden)]
4pub type Lazy = once_cell::sync::Lazy<Regex>;
5
6#[macro_export]
7macro_rules! regex {
8    ($re:expr) => {{
9        static RE: $crate::Lazy =
10            $crate::Lazy::new(|| $crate::Regex::new($re).expect("Failed to parse static regex"));
11        $crate::Lazy::force(&RE)
12    }};
13}
14
15#[cfg(test)]
16mod tests {
17    use super::regex;
18
19    #[test]
20    fn match_numbers() {
21        let number = regex!("[0-9]+");
22        assert!(number.is_match("1824").unwrap());
23        assert!(!number.is_match("this wont match").unwrap());
24    }
25
26    #[test]
27    #[should_panic]
28    fn invalid_syntax() {
29        let _ = regex!("?[");
30    }
31}