Generalized regex like pattern match for vector.
```toml
[dependencies] vec-reg = "0.4.0" ```
Example without macro:
```rust use vec_reg::{Regex, CompiledRegex};
let isfizz = |x: &i32| x % 3 == 0; let isbuzz = |x: &i32| x % 5 == 0; let isfizzbuzz = |x: &i32| x % 15 == 0; let reg = Regex::concat( Regex::satisfy(isfizz), Regex::repeat1(Regex::concat(Regex::satisfy(isbuzz), Regex::satisfy(isfizzbuzz))), ) .compile(); assert!(!reg.isfullmatch(&vec![1, 2, 3])); assert!(reg.isfullmatch(&vec![3, 5, 15])); assert!(reg.isfullmatch(&vec![6, 10, 15, 10, 30])); ```
Example with macro:
```rust use vecreg::{Regex, CompiledRegex, vecreg};
let isfizz = |x: &i32| x % 3 == 0;
let isbuzz = |x: &i32| x % 5 == 0;
let reg = vecreg!(isfizz+).compile();
assert!(!reg.isfullmatch(&vec![1, 2, 3]));
assert!(reg.isfullmatch(&vec![3, 5, 15]));
assert!(reg.isfullmatch(&vec![6, 10, 15, 10, 30]));
```
Example capture:
```rust use vecreg::{Regex, CompiledRegex, vecreg};
let iseven = |x: &i32| x % 2 == 0; let isodd = |x: &i32| x % 2 == 1; let reg = vecreg!(([iseven]+)iseven).compile(); let captures = reg.captures(&[2, 4, 6, 3, 5, 7]); assert!(captures.issome()); asserteq!(captures.asref().unwrap().len(), 2);
let capture0 = &captures.asref().unwrap()[0]; asserteq!(capture0.start, 0); asserteq!(capture0.end, 1); asserteq!(&capture0.values, &vec![&2, &4]);
let capture1 = &captures.asref().unwrap()[1]; asserteq!(capture1.start, 3); asserteq!(capture1.end, 5); asserteq!(&capture1.values, &vec![&3, &5, &7]); ```