macro_rules! regex_once {
($re:literal $(,)?) => {{
static RE: once_cell::sync::OnceCell<regex::Regex> = once_cell::sync::OnceCell::new();
RE.get_or_init(|| regex::Regex::new($re).unwrap())
}};
($re:ident $(,)?) => {{
static RE: once_cell::sync::OnceCell<regex::Regex> = once_cell::sync::OnceCell::new();
RE.get_or_init(|| regex::Regex::new(&$re).unwrap())
}};
}
pub(crate) use regex_once;
#[cfg(test)]
mod tests {
use super::*;
use rstest::rstest;
#[rstest]
fn test_regex_once_literal() {
assert!(regex_once!("^foo$").is_match("foo"));
}
#[rstest]
fn test_regex_once_ident() {
let regex_string = "^foo$";
assert!(regex_once!(regex_string).is_match("foo"));
}
}