[−]Trait c3p0_mysql::mysql::r2d2::mysql::prelude::FromRow
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.
// 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
fn from_row(row: Row) -> Self
fn from_row_opt(row: Row) -> Result<Self, FromRowError>
Implementations on Foreign Types
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
fn from_row_opt(
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11), FromRowError>
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11), FromRowError>
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4, T5, T6, T7, T8)
fn from_row_opt(
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8), FromRowError>
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8), FromRowError>
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4)
fn from_row_opt(row: Row) -> Result<(T1, T2, T3, T4), FromRowError>
impl<T1, Ir1> FromRow for (T1,) where
Ir1: ConvIr<T1>,
T1: FromValue<Intermediate = Ir1>,
Ir1: ConvIr<T1>,
T1: FromValue<Intermediate = Ir1>,
fn from_row(row: Row) -> (T1,)
fn from_row_opt(row: Row) -> Result<(T1,), FromRowError>
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4, T5, T6)
fn from_row_opt(row: Row) -> Result<(T1, T2, T3, T4, T5, T6), FromRowError>
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4, T5, T6, T7)
fn from_row_opt(row: Row) -> Result<(T1, T2, T3, T4, T5, T6, T7), FromRowError>
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
fn from_row_opt(
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), FromRowError>
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), FromRowError>
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4, T5)
fn from_row_opt(row: Row) -> Result<(T1, T2, T3, T4, T5), FromRowError>
impl<T1, Ir1, T2, Ir2> FromRow for (T1, T2) where
Ir1: ConvIr<T1>,
Ir2: ConvIr<T2>,
T1: FromValue<Intermediate = Ir1>,
T2: FromValue<Intermediate = Ir2>,
Ir1: ConvIr<T1>,
Ir2: ConvIr<T2>,
T1: FromValue<Intermediate = Ir1>,
T2: FromValue<Intermediate = Ir2>,
fn from_row(row: Row) -> (T1, T2)
fn from_row_opt(row: Row) -> Result<(T1, T2), FromRowError>
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>,
Ir1: ConvIr<T1>,
Ir2: ConvIr<T2>,
Ir3: ConvIr<T3>,
T1: FromValue<Intermediate = Ir1>,
T2: FromValue<Intermediate = Ir2>,
T3: FromValue<Intermediate = Ir3>,
fn from_row(row: Row) -> (T1, T2, T3)
fn from_row_opt(row: Row) -> Result<(T1, T2, T3), FromRowError>
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
fn from_row_opt(
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10), FromRowError>
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10), FromRowError>
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>,
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>,
fn from_row(row: Row) -> (T1, T2, T3, T4, T5, T6, T7, T8, T9)
fn from_row_opt(
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9), FromRowError>
row: Row
) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9), FromRowError>
Implementors
impl FromRow for Row
fn from_row(row: Row) -> Row
fn from_row_opt(row: Row) -> Result<Row, FromRowError> where
Row: Sized,
Row: Sized,
impl<T, Ir> FromRow for T where
Ir: ConvIr<T>,
T: FromValue<Intermediate = Ir>,
Ir: ConvIr<T>,
T: FromValue<Intermediate = Ir>,