1 use nom::{
2 bytes::complete::tag,
3 multi::{many0, many0_count},
4 };
5
6 #[test]
parse()7 fn parse() {
8 let mut counter = 0;
9
10 let res = {
11 let mut parser = many0::<_, _, (), _>(|i| {
12 counter += 1;
13 tag("abc")(i)
14 });
15
16 parser("abcabcabcabc").unwrap()
17 };
18
19 println!("res: {:?}", res);
20 assert_eq!(counter, 5);
21 }
22
23 #[test]
accumulate()24 fn accumulate() {
25 let mut v = Vec::new();
26
27 let (_, count) = {
28 let mut parser = many0_count::<_, _, (), _>(|i| {
29 let (i, o) = tag("abc")(i)?;
30 v.push(o);
31 Ok((i, ()))
32 });
33 parser("abcabcabcabc").unwrap()
34 };
35
36 println!("v: {:?}", v);
37 assert_eq!(count, 4);
38 assert_eq!(v.len(), 4);
39 }
40