pub struct StreamingJsonlDecoder { /* private fields */ }Expand description
Push-based JSONL decoder. Accumulates bytes between calls to
Self::feed, splits on \n, parses each completed line as a
JSON object, and queues the resulting record for Self::drain.
Implementations§
Source§impl StreamingJsonlDecoder
impl StreamingJsonlDecoder
pub fn new() -> StreamingJsonlDecoder
Trait Implementations§
Source§impl Default for StreamingJsonlDecoder
impl Default for StreamingJsonlDecoder
Source§fn default() -> StreamingJsonlDecoder
fn default() -> StreamingJsonlDecoder
Returns the “default value” for a type. Read more
Source§impl StreamingRowDecoder for StreamingJsonlDecoder
impl StreamingRowDecoder for StreamingJsonlDecoder
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 StreamingJsonlDecoder
impl RefUnwindSafe for StreamingJsonlDecoder
impl Send for StreamingJsonlDecoder
impl Sync for StreamingJsonlDecoder
impl Unpin for StreamingJsonlDecoder
impl UnsafeUnpin for StreamingJsonlDecoder
impl UnwindSafe for StreamingJsonlDecoder
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