[][src]Trait serde_db::de::DeserializableResultset

pub trait DeserializableResultset: Sized {
    type E: From<DeserializationError> + Sized;
    type ROW: DeserializableRow;
    fn has_multiple_rows(&mut self) -> DeserializationResult<bool>;
fn next(&mut self) -> DeserializationResult<Option<Self::ROW>>;
fn number_of_fields(&self) -> usize;
fn fieldname(&self, field_idx: usize) -> Option<&str>; fn into_typed<'de, T>(self) -> Result<T, Self::E>
    where
        T: Deserialize<'de>,
        Self: Sized
, { ... } }

Interface for a database resultset to support deserialization.

Associated Types

type E: From<DeserializationError> + Sized

Error type of the database driver.

type ROW: DeserializableRow

Concrete type for the DB row, which must implement DeserializabeRow.

Loading content...

Required methods

fn has_multiple_rows(&mut self) -> DeserializationResult<bool>

Returns true if more than one row is contained, including eventually not yet fetched rows.

Errors

E.g. fetching can fail.

fn next(&mut self) -> DeserializationResult<Option<Self::ROW>>

Removes the next row and returns it, or None if the result set is empty, or an error.

Errors

E.g. fetching can fail.

fn number_of_fields(&self) -> usize

Returns the number of fields in each (complete) row.

fn fieldname(&self, field_idx: usize) -> Option<&str>

Returns the name of the column at the specified index.

Loading content...

Provided methods

fn into_typed<'de, T>(self) -> Result<T, Self::E> where
    T: Deserialize<'de>,
    Self: Sized

A provided method that translates a resultset into a given rust type that implements serde::de::Deserialize.

The type of the target variable needs to be specified explicitly, so that into_typed() can derive the type it needs to serialize into:

This example is not tested
#[derive(Deserialize)]
struct MyStruct {
    ...
}
let typed_result: Vec<MyStruct> = resultset.into_typed()?;

Errors

An error is produced if deserialization into the target type is not possible, or if fetching fails.

Loading content...

Implementors

Loading content...