Skip to main content

Row

Struct Row 

Source
pub struct Row<'a> { /* private fields */ }
Expand description

A single row of CSV data.

Borrows from the Reader that produced it and cannot outlive it. Fields are already unescaped: surrounding quotes are stripped and "" escape sequences are resolved to ".

Errors from parsing are stored in the Row and returned when accessing fields via fields or all.

Implementations§

Source§

impl Row<'_>

Source

pub fn error(&self) -> Option<&ReadError>

Return the parse error, if any.

Source

pub fn len(&self) -> usize

Number of fields in this row (0 on error).

Source

pub fn is_empty(&self) -> bool

Returns true if the row has no fields.

Source

pub fn fields(&self) -> Result<Fields<'_>, ReadError>

Iterate over all fields as &str, zero allocation.

Returns an error if this row was the result of a parse failure.

use csv::Reader;
let mut reader = Reader::from_reader(std::io::Cursor::new(b"\"hello\",world\n"));
for row in reader.rows() {
    for field in row.fields()? {
    }
}
Source

pub fn all(&self) -> Result<Vec<String>, ReadError>

Collect all fields into owned Strings.

Returns an error if this row was the result of a parse failure.

Source§

impl Row<'_>

Source

pub fn deserialize<T>(&self) -> Result<T, ReadError>

Deserialize this row into a T.

If parse_headers was called before iterating, struct fields are matched by column name. Otherwise, fields are mapped positionally.

§Example
use csv::Reader;
use serde::Deserialize;

#[derive(Deserialize)]
struct Record { name: String, age: u32 }

let mut reader = Reader::from_reader(std::io::Cursor::new(b"name,age\nAlice,30\n"));
reader.parse_headers()?;
for row in reader.rows() {
    let rec: Record = row.deserialize()?;
    println!("{} is {}", rec.name, rec.age);
}

Trait Implementations§

Source§

impl<'a> Debug for Row<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for Row<'a>

§

impl<'a> !UnwindSafe for Row<'a>

§

impl<'a> Freeze for Row<'a>

§

impl<'a> Send for Row<'a>

§

impl<'a> Sync for Row<'a>

§

impl<'a> Unpin for Row<'a>

§

impl<'a> UnsafeUnpin for Row<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.