Trait mysql::prelude::FromRow[][src]

pub trait FromRow {
    fn from_row(row: Row) -> Self;
fn from_row_opt(row: Row) -> Result<Self, FromRowError>; }

Trait to convert Row into a tuple of FromValue implementors up to arity 12.

This trait is convenient way to convert mysql row to a tuple or rust types and relies on FromValue trait, i.e. calling from_row::<(T, U)>(row) is similar to calling (T::from_value(column_1), U::from_value(column_2)).

Note that conversion will always fail if any of columns was taken using Row::take method.

Conversion of individual columns of a row may fail. In this case from_row will panic, and from_row_opt will roll back conversion and return original row.

Concrete types of columns in a row is usually known to a programmer so from_value should never panic if types specified correctly. This means that column which holds NULL should correspond to a type wrapped in Option, String is used only with column which hold correct utf8, size and signedness of a numeric type should match to a value stored in a column and so on.

This example is not tested
// Consider columns in the row is: Bytes(<some binary data>), NULL and Int(1024)
from_row::<(String, u8, u8>(row) // this will panic because of invalid utf8 in first column.
from_row::<(Vec<u8>, u8, u8)>(row) // this will panic because of a NULL in second column.
from_row::<(Vec<u8>, Option<u8>, u8)>(row) // this will panic because 1024 does not fit in u8.
from_row::<(Vec<u8>)>(row) // this will panic because number of columns != arity of a tuple.
from_row::<(Vec<u8>, Option<u8>, u16, Option<u8>)>(row) // same reason of panic as previous.

from_row::<(Vec<u8>, Option<u8>, u16)>(row) // this'll work and return (vec![..], None, 1024u16)

Required Methods

Implementations on Foreign Types

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4, T5, Ir5, T6, Ir6, T7, Ir7, T8, Ir8, T9, Ir9> FromRow for (T1, T2, T3, T4, T5, T6, T7, T8, T9) where
    Ir1: ConvIr<T1>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    Ir5: ConvIr<T5>,
    Ir6: ConvIr<T6>,
    Ir7: ConvIr<T7>,
    Ir8: ConvIr<T8>,
    Ir9: ConvIr<T9>,
    T1: FromValue<Intermediate = Ir1>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>,
    T5: FromValue<Intermediate = Ir5>,
    T6: FromValue<Intermediate = Ir6>,
    T7: FromValue<Intermediate = Ir7>,
    T8: FromValue<Intermediate = Ir8>,
    T9: FromValue<Intermediate = Ir9>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4, T5, Ir5> FromRow for (T1, T2, T3, T4, T5) where
    Ir1: ConvIr<T1>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    Ir5: ConvIr<T5>,
    T1: FromValue<Intermediate = Ir1>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>,
    T5: FromValue<Intermediate = Ir5>, 
[src]

impl<T1, Ir1> FromRow for (T1,) where
    Ir1: ConvIr<T1>,
    T1: FromValue<Intermediate = Ir1>, 
[src]

impl<T1, Ir1, T2, Ir2> FromRow for (T1, T2) where
    Ir1: ConvIr<T1>,
    Ir2: ConvIr<T2>,
    T1: FromValue<Intermediate = Ir1>,
    T2: FromValue<Intermediate = Ir2>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4> FromRow for (T1, T2, T3, T4) where
    Ir1: ConvIr<T1>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    T1: FromValue<Intermediate = Ir1>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3> FromRow for (T1, T2, T3) where
    Ir1: ConvIr<T1>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    T1: FromValue<Intermediate = Ir1>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4, T5, Ir5, T6, Ir6, T7, Ir7> FromRow for (T1, T2, T3, T4, T5, T6, T7) where
    Ir1: ConvIr<T1>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    Ir5: ConvIr<T5>,
    Ir6: ConvIr<T6>,
    Ir7: ConvIr<T7>,
    T1: FromValue<Intermediate = Ir1>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>,
    T5: FromValue<Intermediate = Ir5>,
    T6: FromValue<Intermediate = Ir6>,
    T7: FromValue<Intermediate = Ir7>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4, T5, Ir5, T6, Ir6, T7, Ir7, T8, Ir8> FromRow for (T1, T2, T3, T4, T5, T6, T7, T8) where
    Ir1: ConvIr<T1>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    Ir5: ConvIr<T5>,
    Ir6: ConvIr<T6>,
    Ir7: ConvIr<T7>,
    Ir8: ConvIr<T8>,
    T1: FromValue<Intermediate = Ir1>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>,
    T5: FromValue<Intermediate = Ir5>,
    T6: FromValue<Intermediate = Ir6>,
    T7: FromValue<Intermediate = Ir7>,
    T8: FromValue<Intermediate = Ir8>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4, T5, Ir5, T6, Ir6> FromRow for (T1, T2, T3, T4, T5, T6) where
    Ir1: ConvIr<T1>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    Ir5: ConvIr<T5>,
    Ir6: ConvIr<T6>,
    T1: FromValue<Intermediate = Ir1>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>,
    T5: FromValue<Intermediate = Ir5>,
    T6: FromValue<Intermediate = Ir6>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4, T5, Ir5, T6, Ir6, T7, Ir7, T8, Ir8, T9, Ir9, T10, Ir10, T11, Ir11> FromRow for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    Ir1: ConvIr<T1>,
    Ir10: ConvIr<T10>,
    Ir11: ConvIr<T11>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    Ir5: ConvIr<T5>,
    Ir6: ConvIr<T6>,
    Ir7: ConvIr<T7>,
    Ir8: ConvIr<T8>,
    Ir9: ConvIr<T9>,
    T1: FromValue<Intermediate = Ir1>,
    T10: FromValue<Intermediate = Ir10>,
    T11: FromValue<Intermediate = Ir11>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>,
    T5: FromValue<Intermediate = Ir5>,
    T6: FromValue<Intermediate = Ir6>,
    T7: FromValue<Intermediate = Ir7>,
    T8: FromValue<Intermediate = Ir8>,
    T9: FromValue<Intermediate = Ir9>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4, T5, Ir5, T6, Ir6, T7, Ir7, T8, Ir8, T9, Ir9, T10, Ir10> FromRow for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) where
    Ir1: ConvIr<T1>,
    Ir10: ConvIr<T10>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    Ir5: ConvIr<T5>,
    Ir6: ConvIr<T6>,
    Ir7: ConvIr<T7>,
    Ir8: ConvIr<T8>,
    Ir9: ConvIr<T9>,
    T1: FromValue<Intermediate = Ir1>,
    T10: FromValue<Intermediate = Ir10>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>,
    T5: FromValue<Intermediate = Ir5>,
    T6: FromValue<Intermediate = Ir6>,
    T7: FromValue<Intermediate = Ir7>,
    T8: FromValue<Intermediate = Ir8>,
    T9: FromValue<Intermediate = Ir9>, 
[src]

impl<T1, Ir1, T2, Ir2, T3, Ir3, T4, Ir4, T5, Ir5, T6, Ir6, T7, Ir7, T8, Ir8, T9, Ir9, T10, Ir10, T11, Ir11, T12, Ir12> FromRow for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) where
    Ir1: ConvIr<T1>,
    Ir10: ConvIr<T10>,
    Ir11: ConvIr<T11>,
    Ir12: ConvIr<T12>,
    Ir2: ConvIr<T2>,
    Ir3: ConvIr<T3>,
    Ir4: ConvIr<T4>,
    Ir5: ConvIr<T5>,
    Ir6: ConvIr<T6>,
    Ir7: ConvIr<T7>,
    Ir8: ConvIr<T8>,
    Ir9: ConvIr<T9>,
    T1: FromValue<Intermediate = Ir1>,
    T10: FromValue<Intermediate = Ir10>,
    T11: FromValue<Intermediate = Ir11>,
    T12: FromValue<Intermediate = Ir12>,
    T2: FromValue<Intermediate = Ir2>,
    T3: FromValue<Intermediate = Ir3>,
    T4: FromValue<Intermediate = Ir4>,
    T5: FromValue<Intermediate = Ir5>,
    T6: FromValue<Intermediate = Ir6>,
    T7: FromValue<Intermediate = Ir7>,
    T8: FromValue<Intermediate = Ir8>,
    T9: FromValue<Intermediate = Ir9>, 
[src]

Implementors