pub struct StreamingCsvDecoder { /* private fields */ }Expand description
Push-based CSV decoder. Layers a streaming feed loop on top of
the same process_buf byte-level state machine used by the
pull-based CsvDecoder. The cell/record state lives on the
struct so it persists across feed calls — partial records
stay parked until enough bytes arrive to complete them.
Implementations§
Source§impl StreamingCsvDecoder
impl StreamingCsvDecoder
pub fn new() -> StreamingCsvDecoder
Sourcepub fn parsed_headers(&self) -> Option<&[CsvHeader]>
pub fn parsed_headers(&self) -> Option<&[CsvHeader]>
Parsed typed headers, surfaced once the first record has been consumed. Useful for the playground’s mapping preview.
Trait Implementations§
Source§impl Default for StreamingCsvDecoder
impl Default for StreamingCsvDecoder
Source§fn default() -> StreamingCsvDecoder
fn default() -> StreamingCsvDecoder
Returns the “default value” for a type. Read more
Source§impl StreamingRowDecoder for StreamingCsvDecoder
impl StreamingRowDecoder for StreamingCsvDecoder
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 StreamingCsvDecoder
impl RefUnwindSafe for StreamingCsvDecoder
impl Send for StreamingCsvDecoder
impl Sync for StreamingCsvDecoder
impl Unpin for StreamingCsvDecoder
impl UnsafeUnpin for StreamingCsvDecoder
impl UnwindSafe for StreamingCsvDecoder
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