Expand description

Generalized regex like pattern match for vector.

use vec_reg::{Regex, CompiledRegex, vec_reg};

fn build_without_macro() {
    let is_fizz = |x: &i32| x % 3 == 0;
    let is_buzz = |x: &i32| x % 5 == 0;
    let is_fizz_buzz = |x: &i32| x % 15 == 0;
    let reg = Regex::concat(
        Regex::satisfy(is_fizz),
        Regex::repeat1(Regex::concat(Regex::satisfy(is_buzz), Regex::satisfy(is_fizz_buzz))),
    )
    .compile();
    assert!(!reg.is_match(&vec![1, 2, 3]));
    assert!(reg.is_match(&vec![3, 5, 15]));
    assert!(reg.is_match(&vec![6, 10, 15, 10, 30]));
}
 
fn build_with_macro() {
    let is_fizz = |x: &i32| x % 3 == 0;
    let is_buzz = |x: &i32| x % 5 == 0;
    let reg = vec_reg!({is_fizz}({is_buzz}{|x| x % 15 == 0})+).compile();    
    assert!(!reg.is_match(&vec![1, 2, 3]));
    assert!(reg.is_match(&vec![3, 5, 15]));
    assert!(reg.is_match(&vec![6, 10, 15, 10, 30]));
}

Macros

Procedual macro for building vec_reg regex expressions.

Structs

Enums