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