1use nom::character::complete::multispace0;
2use nom::{
3 character::complete::{char, digit1},
4 combinator::cut,
5 error::context,
6 multi::separated_list0,
7 sequence::{preceded, terminated},
8 IResult,
9};
10
11pub fn array<'a>(input: &'a str) -> IResult<&'a str, Vec<u64>> {
12 let (input, res) = context(
13 "array",
14 preceded(
15 char('['),
16 preceded(
17 multispace0,
18 cut(terminated(
19 separated_list0(char(','), preceded(multispace0, digit1)),
20 preceded(multispace0, char(']')),
21 )),
22 ),
23 ),
24 )(input)?;
25
26 let r = res
27 .iter()
28 .map(|s| s.parse::<u64>().unwrap())
29 .collect::<Vec<_>>();
30
31 Ok((input, r))
32}