xref: /third_party/rust/crates/nom/tests/fnmut.rs (revision 6855e09e)
1use nom::{
2  bytes::complete::tag,
3  multi::{many0, many0_count},
4};
5
6#[test]
7fn 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]
24fn 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