(parser: &mut JsoncParser<'a>)
| 83 | } |
| 84 | |
| 85 | fn parse_array<'a>(parser: &mut JsoncParser<'a>) -> Result<JsonValue<'a>, ParseError> { |
| 86 | parser.enter_container()?; |
| 87 | let mut elements = Vec::new(); |
| 88 | |
| 89 | let mut token = parser.scan()?; |
| 90 | |
| 91 | loop { |
| 92 | match token { |
| 93 | Some(Token::CloseBracket) => break, |
| 94 | None => { |
| 95 | parser.exit_container(); |
| 96 | return Err( |
| 97 | parser |
| 98 | .scanner |
| 99 | .create_error_for_current_token(ParseErrorKind::UnterminatedArray), |
| 100 | ); |
| 101 | } |
| 102 | Some(value_token) => { |
| 103 | elements.push(parse_value(parser, value_token)?); |
| 104 | } |
| 105 | } |
| 106 | token = parser.scan_array_comma()?; |
| 107 | } |
| 108 | |
| 109 | parser.exit_container(); |
| 110 | Ok(JsonValue::Array(JsonArray::new(elements))) |
| 111 | } |
| 112 | |
| 113 | #[cfg(test)] |
| 114 | mod tests { |
no test coverage detected
searching dependent graphs…