| use nom::{ |
| bytes::complete::tag, |
| multi::{many0, many0_count}, |
| }; |
| |
| #[test] |
| fn parse() { |
| let mut counter = 0; |
| |
| let res = { |
| let mut parser = many0::<_, _, (), _>(|i| { |
| counter += 1; |
| tag("abc")(i) |
| }); |
| |
| parser("abcabcabcabc").unwrap() |
| }; |
| |
| println!("res: {:?}", res); |
| assert_eq!(counter, 5); |
| } |
| |
| #[test] |
| fn accumulate() { |
| let mut v = Vec::new(); |
| |
| let (_, count) = { |
| let mut parser = many0_count::<_, _, (), _>(|i| { |
| let (i, o) = tag("abc")(i)?; |
| v.push(o); |
| Ok((i, ())) |
| }); |
| parser("abcabcabcabc").unwrap() |
| }; |
| |
| println!("v: {:?}", v); |
| assert_eq!(count, 4); |
| assert_eq!(v.len(), 4); |
| } |