Struct csv_core::Writer
[−]
[src]
pub struct Writer { /* fields omitted */ }
A writer for CSV data.
RFC 4180
This writer conforms to RFC 4180 with one exception: it doesn't guarantee that all records written are of the same length. Instead, the onus is on the caller to ensure that all records written are of the same length.
Methods
impl Writer
[src]
fn new() -> Writer
Creates a new CSV writer with the default configuration.
fn finish(&mut self, output: &mut [u8]) -> (WriteResult, usize)
Finish writing CSV data to output
.
This must be called when one is done writing CSV data to output
.
In particular, it will write closing quotes if necessary.
fn field(
&mut self,
input: &[u8],
output: &mut [u8]
) -> (WriteResult, usize, usize)
&mut self,
input: &[u8],
output: &mut [u8]
) -> (WriteResult, usize, usize)
Write a single CSV field from input
to output
while employing this
writer's quoting style.
This returns the result of writing field data, in addition to the
number of bytes consumed from input
and the number of bytes
written to output
.
The result of writing field data is either WriteResult::InputEmpty
or WriteResult::OutputFull
. The former occurs when all bytes in
input
were copied to output
, while the latter occurs when output
is too small to fit everything from input
. The maximum number of
bytes that can be written to output
is 2 + (2 * input.len())
because of quoting. (The worst case is a field consisting entirely
of quotes.)
Multiple successive calls to field
will write more data to the same
field. Subsequent fields can be written by calling either delimiter
or terminator
first.
If this writer's quoting style is QuoteStyle::Necessary
, then input
should contain the entire field. Otherwise, whether the field needs
to be quoted or not cannot be determined.
fn delimiter(&mut self, output: &mut [u8]) -> (WriteResult, usize)
Write the configured field delimiter to output
.
If the output buffer does not have enough room to fit
a field delimiter, then nothing is written to output
and WriteResult::OutputFull
is returned. Otherwise,
WriteResult::InputEmpty
is returned along with the number of bytes
written to output
(which is always 1
).
fn terminator(&mut self, output: &mut [u8]) -> (WriteResult, usize)
Write the configured record terminator to output
.
If the output buffer does not have enough room to fit a record
terminator, then no part of the terminator is written and
WriteResult::OutputFull
is returned. Otherwise,
WriteResult::InputEmpty
is returned along with the number of bytes
written to output
(which is always 1
or 2
).
Trait Implementations
impl Clone for Writer
[src]
fn clone(&self) -> Writer
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more