[][src]Trait sqlx_core::from_row::FromRow

pub trait FromRow<'r, R: Row>: Sized {
    fn from_row(row: &'r R) -> Result<Self, Error>;
}

A record that can be built from a row returned by the database.

In order to use query_as the output type must implement FromRow.

Derivable

This trait can be derived by SQLx for any struct. The generated implementation will consist of a sequence of calls to Row::try_get using the name from each struct field.

This example is not tested
#[derive(sqlx::FromRow)]
struct User {
    id: i32,
    name: String,
}

Field attributes

Several attributes can be specified to customize how each column in a row is read:

rename

When the name of a field in Rust does not match the name of its corresponding column, you can use the rename attribute to specify the name that the field has in the row. For example:

This example is not tested
#[derive(sqlx::FromRow)]
struct User {
    id: i32,
    name: String,
    #[sqlx(rename = "description")]
    about_me: String
}

Given a query such as:

SELECT id, name, description FROM users;

will read the content of the column description into the field about_me.

default

When your struct contains a field that is not present in your query, if the field type has an implementation for Default, you can use the default attribute to assign the default value to said field. For example:

This example is not tested
#[derive(sqlx::FromRow)]
struct User {
    id: i32,
    name: String,
    #[sqlx(default)]
    location: Option<String>
}

Given a query such as:

SELECT id, name FROM users;

will set the value of the field location to the default value of Option<String>, which is None.

Required methods

fn from_row(row: &'r R) -> Result<Self, Error>

Loading content...

Implementations on Foreign Types

impl<'r, R, T1> FromRow<'r, R> for (T1,) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2> FromRow<'r, R> for (T1, T2) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3> FromRow<'r, R> for (T1, T2, T3) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4> FromRow<'r, R> for (T1, T2, T3, T4) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5> FromRow<'r, R> for (T1, T2, T3, T4, T5) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8, T9> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8, T9) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>,
    T9: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>,
    T9: Decode<'r, R::Database> + Type<R::Database>,
    T10: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>,
    T9: Decode<'r, R::Database> + Type<R::Database>,
    T10: Decode<'r, R::Database> + Type<R::Database>,
    T11: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>,
    T9: Decode<'r, R::Database> + Type<R::Database>,
    T10: Decode<'r, R::Database> + Type<R::Database>,
    T11: Decode<'r, R::Database> + Type<R::Database>,
    T12: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>,
    T9: Decode<'r, R::Database> + Type<R::Database>,
    T10: Decode<'r, R::Database> + Type<R::Database>,
    T11: Decode<'r, R::Database> + Type<R::Database>,
    T12: Decode<'r, R::Database> + Type<R::Database>,
    T13: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>,
    T9: Decode<'r, R::Database> + Type<R::Database>,
    T10: Decode<'r, R::Database> + Type<R::Database>,
    T11: Decode<'r, R::Database> + Type<R::Database>,
    T12: Decode<'r, R::Database> + Type<R::Database>,
    T13: Decode<'r, R::Database> + Type<R::Database>,
    T14: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>,
    T9: Decode<'r, R::Database> + Type<R::Database>,
    T10: Decode<'r, R::Database> + Type<R::Database>,
    T11: Decode<'r, R::Database> + Type<R::Database>,
    T12: Decode<'r, R::Database> + Type<R::Database>,
    T13: Decode<'r, R::Database> + Type<R::Database>,
    T14: Decode<'r, R::Database> + Type<R::Database>,
    T15: Decode<'r, R::Database> + Type<R::Database>, 
[src]

impl<'r, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> FromRow<'r, R> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) where
    R: Row,
    usize: ColumnIndex<R>,
    T1: Decode<'r, R::Database> + Type<R::Database>,
    T2: Decode<'r, R::Database> + Type<R::Database>,
    T3: Decode<'r, R::Database> + Type<R::Database>,
    T4: Decode<'r, R::Database> + Type<R::Database>,
    T5: Decode<'r, R::Database> + Type<R::Database>,
    T6: Decode<'r, R::Database> + Type<R::Database>,
    T7: Decode<'r, R::Database> + Type<R::Database>,
    T8: Decode<'r, R::Database> + Type<R::Database>,
    T9: Decode<'r, R::Database> + Type<R::Database>,
    T10: Decode<'r, R::Database> + Type<R::Database>,
    T11: Decode<'r, R::Database> + Type<R::Database>,
    T12: Decode<'r, R::Database> + Type<R::Database>,
    T13: Decode<'r, R::Database> + Type<R::Database>,
    T14: Decode<'r, R::Database> + Type<R::Database>,
    T15: Decode<'r, R::Database> + Type<R::Database>,
    T16: Decode<'r, R::Database> + Type<R::Database>, 
[src]

Loading content...

Implementors

Loading content...