pub struct StreamDeserializer { /* private fields */ }Expand description
Reads the records of a stream (see deser::stream).
Every value of the stream is a record. The names of the columns are
read before the first record (see headers). Errors
of records (like fields that do not fit the type or records with the
wrong number of fields) only discard the record, reading continues with
the next one. Errors of the stream (like a record that exceeds
set_max_record_len) end it.
use deser_csv::DeserializerConfig;
#[derive(deser::Deserialize)]
struct Row {
name: String,
age: u32,
}
let mut reader =
DeserializerConfig::new().reader(&b"name,age\njane,42\njohn,23\n"[..]);
let rows = reader.iter::<Row>().collect::<Result<Vec<_>, _>>().unwrap();
assert_eq!(rows[1].age, 23);Records are parsed like with a Deserializer, so
they can borrow from the stream’s buffer (see
InputBuffer::deserialize).
The input ranges (and thus locations) of fields refer to the start of
their record.
Implementations§
Source§impl StreamDeserializer
impl StreamDeserializer
Sourcepub fn new() -> StreamDeserializer
pub fn new() -> StreamDeserializer
Creates a stream deserializer.
Sourcepub fn with_config(config: DeserializerConfig) -> StreamDeserializer
pub fn with_config(config: DeserializerConfig) -> StreamDeserializer
Creates a stream deserializer with the given configuration.
Sourcepub fn with_headers<I, S>(
config: DeserializerConfig,
names: I,
) -> StreamDeserializer
pub fn with_headers<I, S>( config: DeserializerConfig, names: I, ) -> StreamDeserializer
Creates a stream deserializer for a stream which continues with the given names of the columns.
The stream does not start with names (they are not read from the first record), for instance because it’s the second half of a file:
use deser::io::Reader;
use deser_csv::{DeserializerConfig, StreamDeserializer};
#[derive(deser::Deserialize)]
struct Row {
name: String,
age: u32,
}
let de = StreamDeserializer::with_headers(DeserializerConfig::new(), ["name", "age"]);
let mut reader = Reader::new(&b"jane,42\n"[..], de);
let row: Row = reader.read().unwrap().unwrap();
assert_eq!((row.name.as_str(), row.age), ("jane", 42));Sourcepub fn config(&self) -> &DeserializerConfig
pub fn config(&self) -> &DeserializerConfig
Returns the configuration.
Sourcepub fn headers(&self) -> Option<&[String]>
pub fn headers(&self) -> Option<&[String]>
Returns the names of the columns.
This is None until the first record was read (with
Headers::First) or if records have no
names (Headers::None).