pub struct Core<'a, L> { /* private fields */ }
Expand description
The main processing loop
Implementations§
Source§impl<'a, L> Core<'a, L>where
L: LineParser<'a>,
impl<'a, L> Core<'a, L>where
L: LineParser<'a>,
Sourcepub fn new(
config: &'a CoreConfig<'_>,
fields: &'a [FieldRange],
line_parser: L,
line_buffer: &'a mut LineBuffer,
) -> Self
pub fn new( config: &'a CoreConfig<'_>, fields: &'a [FieldRange], line_parser: L, line_buffer: &'a mut LineBuffer, ) -> Self
Create a new “core” the can be used to parse multiple inputs
pub fn hck_input<P, W>( &mut self, input: HckInput<P>, output: W, header: Option<Vec<u8>>, ) -> Result<(), Error>
Sourcepub fn hck_bytes<W>(&mut self, bytes: &[u8], output: W) -> Result<(), Error>where
W: Write,
pub fn hck_bytes<W>(&mut self, bytes: &[u8], output: W) -> Result<(), Error>where
W: Write,
Iterate over the lines in a slice of bytes.
The input slice of bytes is assumed to end in a newline.
Sourcepub fn hck_bytes_fast<W: Write>(
&mut self,
bytes: &[u8],
output: W,
) -> Result<(), Error>
pub fn hck_bytes_fast<W: Write>( &mut self, bytes: &[u8], output: W, ) -> Result<(), Error>
Fast mode iteration over lines in a slice of bytes.
This expects the seperator to be a single byte and the newline to be a singel byte.
Instead of seaching for linebreaks, then splitting up the line on the sep
,
fast mode looks for either sep
or newline
at the same time, so instead of two passes
over the bytes we only make one pass.
Sourcepub fn hck_reader_fast<R: Read, W: Write>(
&mut self,
reader: R,
output: W,
) -> Result<(), Error>
pub fn hck_reader_fast<R: Read, W: Write>( &mut self, reader: R, output: W, ) -> Result<(), Error>
Fast mode iteration over lines in a reader.
This expects the separator to be a single byte and the newline to be a single byte.
Instead of seaching for linebreaks, then splitting up the line on the sep
,
fast mode looks for either sep
or newline
at the same time, so instead of two passes
over the bytes we only make one pass.