vec-reg 0.7.1

Generalized regex like pattern matching for vector
Documentation
use vec_reg::{vec_reg, CompiledRegex};

#[test]
fn non_greedy_repeat0() {
    let one = |x: &i32| *x == 1;
    let reg = vec_reg!(([one]*?)([one]*)).compile();
    let captures = reg.captures(&[1, 1]);
    assert!(captures.is_some());
    assert_eq!(captures.as_ref().unwrap().get(1).unwrap().range(), 0..0);
    assert_eq!(captures.as_ref().unwrap().get(2).unwrap().range(), 0..2);
}

#[test]
fn non_greedy_repeat1() {
    let one = |x: &i32| *x == 1;
    let reg = vec_reg!(([one]+?)([one]*)).compile();
    let captures = reg.captures(&[1, 1]);
    assert!(captures.is_some());
    assert_eq!(captures.as_ref().unwrap().get(1).unwrap().range(), 0..1);
    assert_eq!(captures.as_ref().unwrap().get(2).unwrap().range(), 1..2);
}

#[test]
fn non_greedy_repeat_min_max() {
    let one = |x: &i32| *x == 1;
    let reg = vec_reg!(([one]{1,2}?)([one]*)).compile();
    let captures = reg.captures(&[1, 1]);
    assert!(captures.is_some());
    assert_eq!(captures.as_ref().unwrap().get(1).unwrap().range(), 0..1);
    assert_eq!(captures.as_ref().unwrap().get(2).unwrap().range(), 1..2);
}

#[test]
fn non_greedy_repeat_n_or_more() {
    let one = |x: &i32| *x == 1;
    let reg = vec_reg!(([one]{1,}?)([one]*)).compile();
    let captures = reg.captures(&[1, 1]);
    assert!(captures.is_some());
    assert_eq!(captures.as_ref().unwrap().get(1).unwrap().range(), 0..1);
    assert_eq!(captures.as_ref().unwrap().get(2).unwrap().range(), 1..2);
}

#[test]
fn non_greedy_repeat_n() {
    let one = |x: &i32| *x == 1;
    let reg = vec_reg!(([one]{1}?)([one]*)).compile();
    let captures = reg.captures(&[1, 1]);
    assert!(captures.is_some());
    assert_eq!(captures.as_ref().unwrap().get(1).unwrap().range(), 0..1);
    assert_eq!(captures.as_ref().unwrap().get(2).unwrap().range(), 1..2);
}