pub struct StreamingJsonArrayDecoder { /* private fields */ }Expand description
Push-based JSON-array decoder. Tracks brace/bracket depth and
JSON string state byte-by-byte so the input can be fed in
arbitrarily sized chunks. Memory bound: at most one in-progress
record (between its opening { and matching }) plus a single
chunk of incoming bytes.
Implementations§
Source§impl StreamingJsonArrayDecoder
impl StreamingJsonArrayDecoder
pub fn new() -> StreamingJsonArrayDecoder
Trait Implementations§
Source§impl Default for StreamingJsonArrayDecoder
impl Default for StreamingJsonArrayDecoder
Source§fn default() -> StreamingJsonArrayDecoder
fn default() -> StreamingJsonArrayDecoder
Returns the “default value” for a type. Read more
Source§impl StreamingRowDecoder for StreamingJsonArrayDecoder
impl StreamingRowDecoder for StreamingJsonArrayDecoder
Source§fn feed(&mut self, chunk: &[u8]) -> Result<(), Error>
fn feed(&mut self, chunk: &[u8]) -> Result<(), Error>
Append a chunk of bytes to the internal buffer and parse any
records that became complete. Idempotent: feeding zero bytes
is a no-op.
Source§fn drain(&mut self) -> Result<Vec<Vec<(String, LoraValue)>>, Error>
fn drain(&mut self) -> Result<Vec<Vec<(String, LoraValue)>>, Error>
Pull all records completed since the previous
drain /
finish call. Returns an empty Vec when no full record
has been parsed yet.Source§fn finish(&mut self) -> Result<Vec<Vec<(String, LoraValue)>>, Error>
fn finish(&mut self) -> Result<Vec<Vec<(String, LoraValue)>>, Error>
Signal that no more bytes will be fed. Returns any records
emitted by handling the residual buffer — for JSONL/CSV this
covers the case where the file ends without a trailing
newline.
Source§fn header(&self) -> Option<&[String]>
fn header(&self) -> Option<&[String]>
Column names declared in the file header. Populated after
the first record arrives for CSV; always
None for JSONL.Source§fn bytes_fed(&self) -> u64
fn bytes_fed(&self) -> u64
Total bytes accepted via
feed since construction. Used
for progress reporting.Source§fn rows_emitted(&self) -> u64
fn rows_emitted(&self) -> u64
Total records emitted via
drain + finish so far.Source§fn set_permissive(&mut self, on: bool)
fn set_permissive(&mut self, on: bool)
Switch the decoder into permissive mode. In permissive mode,
per-record parse failures are accumulated for retrieval via
Self::take_errors instead of bubbling out of feed /
finish. Fatal errors (encoding issues that desync the byte
stream itself) still bubble. Must be called before the first
feed; later calls take effect at the next record boundary.
Default impl is a no-op for decoders that don’t support it.Source§fn take_errors(&mut self) -> Vec<RowParseError>
fn take_errors(&mut self) -> Vec<RowParseError>
Drain the parse errors accumulated since the previous call.
Empty when permissive mode is off or no failures occurred.
Auto Trait Implementations§
impl Freeze for StreamingJsonArrayDecoder
impl RefUnwindSafe for StreamingJsonArrayDecoder
impl Send for StreamingJsonArrayDecoder
impl Sync for StreamingJsonArrayDecoder
impl Unpin for StreamingJsonArrayDecoder
impl UnsafeUnpin for StreamingJsonArrayDecoder
impl UnwindSafe for StreamingJsonArrayDecoder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more