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