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