16855e09eSopenharmony_ciuse nom::{ 26855e09eSopenharmony_ci bytes::complete::tag, 36855e09eSopenharmony_ci multi::{many0, many0_count}, 46855e09eSopenharmony_ci}; 56855e09eSopenharmony_ci 66855e09eSopenharmony_ci#[test] 76855e09eSopenharmony_cifn parse() { 86855e09eSopenharmony_ci let mut counter = 0; 96855e09eSopenharmony_ci 106855e09eSopenharmony_ci let res = { 116855e09eSopenharmony_ci let mut parser = many0::<_, _, (), _>(|i| { 126855e09eSopenharmony_ci counter += 1; 136855e09eSopenharmony_ci tag("abc")(i) 146855e09eSopenharmony_ci }); 156855e09eSopenharmony_ci 166855e09eSopenharmony_ci parser("abcabcabcabc").unwrap() 176855e09eSopenharmony_ci }; 186855e09eSopenharmony_ci 196855e09eSopenharmony_ci println!("res: {:?}", res); 206855e09eSopenharmony_ci assert_eq!(counter, 5); 216855e09eSopenharmony_ci} 226855e09eSopenharmony_ci 236855e09eSopenharmony_ci#[test] 246855e09eSopenharmony_cifn accumulate() { 256855e09eSopenharmony_ci let mut v = Vec::new(); 266855e09eSopenharmony_ci 276855e09eSopenharmony_ci let (_, count) = { 286855e09eSopenharmony_ci let mut parser = many0_count::<_, _, (), _>(|i| { 296855e09eSopenharmony_ci let (i, o) = tag("abc")(i)?; 306855e09eSopenharmony_ci v.push(o); 316855e09eSopenharmony_ci Ok((i, ())) 326855e09eSopenharmony_ci }); 336855e09eSopenharmony_ci parser("abcabcabcabc").unwrap() 346855e09eSopenharmony_ci }; 356855e09eSopenharmony_ci 366855e09eSopenharmony_ci println!("v: {:?}", v); 376855e09eSopenharmony_ci assert_eq!(count, 4); 386855e09eSopenharmony_ci assert_eq!(v.len(), 4); 396855e09eSopenharmony_ci} 40