From 01095e46fb7694b54cfb8dd1dee23f80bac73327 Mon Sep 17 00:00:00 2001 From: Thomas Tanon Date: Thu, 6 Aug 2026 19:44:37 +0200 Subject: [PATCH] Remove SliceJsonParser::parse_next use `Iterator` instead --- src/read.rs | 42 ++++++++++++++---------------------------- tests/errors.rs | 2 +- 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/src/read.rs b/src/read.rs index 167d428..a97a127 100644 --- a/src/read.rs +++ b/src/read.rs @@ -292,24 +292,15 @@ impl BufferJsonParser { /// use json_event_parser::{JsonEvent, SliceJsonParser}; /// use std::borrow::Cow; /// -/// let mut reader = SliceJsonParser::new(b"{\"foo\": 1}"); -/// assert!(matches!( -/// reader.parse_next(), -/// Some(Ok(JsonEvent::StartObject)) -/// )); -/// assert!(matches!( -/// reader.parse_next(), -/// Some(Ok(JsonEvent::ObjectKey(Cow::Borrowed("foo")))) -/// )); -/// assert!(matches!( -/// reader.parse_next(), -/// Some(Ok(JsonEvent::Number(Cow::Borrowed("1")))) -/// )); -/// assert!(matches!( -/// reader.parse_next(), -/// Some(Ok(JsonEvent::EndObject)) -/// )); -/// assert!(matches!(reader.parse_next(), None)); +/// assert_eq!( +/// SliceJsonParser::new(b"{\"foo\": 1}").collect::, _>>()?, +/// vec![ +/// JsonEvent::StartObject, +/// JsonEvent::ObjectKey(Cow::Borrowed("foo")), +/// JsonEvent::Number(Cow::Borrowed("1")), +/// JsonEvent::EndObject +/// ] +/// ); /// # std::io::Result::Ok(()) /// ``` pub struct SliceJsonParser<'a> { @@ -325,9 +316,12 @@ impl<'a> SliceJsonParser<'a> { parser: LowLevelJsonParser::new(), } } +} - #[inline] - pub fn parse_next(&mut self) -> Option, JsonSyntaxError>> { +impl<'a> Iterator for SliceJsonParser<'a> { + type Item = Result, JsonSyntaxError>; + + fn next(&mut self) -> Option, JsonSyntaxError>> { let LowLevelJsonParserResult { event, consumed_bytes, @@ -337,14 +331,6 @@ impl<'a> SliceJsonParser<'a> { } } -impl<'a> Iterator for SliceJsonParser<'a> { - type Item = Result, JsonSyntaxError>; - - fn next(&mut self) -> Option, JsonSyntaxError>> { - self.parse_next() - } -} - /// A low-level JSON parser acting on a provided buffer. /// /// Does not allocate except a stack to check if array and object opening and closing are properly nested. diff --git a/tests/errors.rs b/tests/errors.rs index 2117bb4..e33260b 100644 --- a/tests/errors.rs +++ b/tests/errors.rs @@ -56,7 +56,7 @@ fn test_error_messages() { for (json, error) in entries { assert_eq!( SliceJsonParser::new(json) - .parse_next() + .next() .unwrap() .unwrap_err() .to_string(),