Skip to main content

StreamingParser

Struct StreamingParser 

Source
pub struct StreamingParser { /* private fields */ }
Expand description

Streaming JSON parser for incremental parsing.

Accumulates chunks and extracts complete JSON values as they become available.

§Example

use simple_agents_healing::streaming::StreamingParser;

let mut parser = StreamingParser::new();

// Stream comes in chunks
parser.feed(r#"{"id": 1, "#);
parser.feed(r#""name": "Alice", "#);
parser.feed(r#""age": 30}"#);

// Get the complete parsed value
let result = parser.finalize().unwrap();
assert_eq!(result.value["id"], 1);
assert_eq!(result.value["name"], "Alice");
assert_eq!(result.value["age"], 30);

Implementations§

Source§

impl StreamingParser

Source

pub fn new() -> Self

Create a new streaming parser with default configuration.

Source

pub fn with_config(config: ParserConfig) -> Self

Create a streaming parser with custom configuration.

Source

pub fn feed(&mut self, chunk: &str) -> Vec<Value>

Feed a chunk of JSON data to the parser.

Returns a list of complete values that were extracted from this chunk. For single objects, this will be empty until the final chunk. For arrays, this can return completed array elements.

§Example
use simple_agents_healing::streaming::StreamingParser;

let mut parser = StreamingParser::new();

// Array streaming: extract complete elements
parser.feed(r#"[{"id": 1}, "#);
parser.feed(r#"{"id": 2}, "#);
let values = parser.feed(r#"{"id": 3}]"#);
Source

pub fn try_parse(&self) -> Option<CoercionResult<Value>>

Try to parse the current buffer as a complete JSON value.

Returns Some(value) if the buffer contains a complete, parseable value. Returns None if more data is needed or if the JSON is incomplete.

Source

pub fn finalize(self) -> Result<CoercionResult<Value>, SimpleAgentsError>

Finalize the stream and get the complete parsed value.

This attempts to parse the entire accumulated buffer as a single JSON value. Call this when the stream is complete.

§Errors

Returns an error if the accumulated buffer cannot be parsed as valid JSON.

§Example
use simple_agents_healing::streaming::StreamingParser;

let mut parser = StreamingParser::new();
parser.feed(r#"{"name": "#);
parser.feed(r#""Alice"}"#);

let result = parser.finalize().unwrap();
assert_eq!(result.value["name"], "Alice");
Source

pub fn buffer_len(&self) -> usize

Get the current buffer size in bytes.

Source

pub fn is_empty(&self) -> bool

Check if the buffer is empty.

Source

pub fn clear(&mut self)

Clear the parser state and buffer.

Trait Implementations§

Source§

impl Default for StreamingParser

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more