Trait diesel::prelude::Queryable

source ·
pub trait Queryable<ST, DB>: Sized
where DB: Backend,
{ type Row: FromStaticSqlRow<ST, DB>; // Required method fn build(row: Self::Row) -> Result<Self>; }
Expand description

Trait indicating that a record can be queried from the database.

Types which implement Queryable represent the result of a SQL query. This does not necessarily mean they represent a single database table.

Diesel represents the return type of a query as a tuple. The purpose of this trait is to convert from a tuple of Rust values that have been deserialized into your struct.

This trait can be derived

§How to resolve compiler errors while loading data from the database

In case you getting uncomprehensable compiler errors while loading data from the database you might want to consider using #[derive(Selectable)] + #[diesel(check_for_backend(YourBackendType))] to check for mismatching fields at compile time. This drastically improves the quality of the generated error messages by pointing to concrete mismatches at field level. You need to specify the concrete database backend this specific struct is indented to be used with, as otherwise rustc cannot correctly identify the required deserialization implementation.

§Interaction with NULL/Option

Nullable types can be queried into Option. This is valid for single fields, tuples, and structures with Queryable.

With tuples and structs, the process for deserializing an Option<(A,B,C)> is to attempt to deserialize A, B and C, and if either of these return an UnexpectedNullError, the Option will be deserialized as None. If all succeed, the Option will be deserialized as Some((a,b,c)).

§Examples

§Simple mapping from query to struct

If we just want to map a query to our struct, we can use derive.

#[derive(Queryable, PartialEq, Debug)]
struct User {
    id: i32,
    name: String,
}

let first_user = users.order_by(id).first(connection)?;
let expected = User { id: 1, name: "Sean".into() };
assert_eq!(expected, first_user);

§Interaction with NULL/Option

§Single field

table! {
    animals {
        id -> Integer,
        species -> VarChar,
        legs -> Integer,
        name -> Nullable<VarChar>,
    }
}
#[derive(Queryable, PartialEq, Debug)]
struct Animal {
    id: i32,
    name: Option<String>,
}

let all_animals = animals.select((id, name)).order_by(id).load(connection)?;
let expected = vec![Animal { id: 1, name: Some("Jack".to_owned()) }, Animal { id: 2, name: None }];
assert_eq!(expected, all_animals);

§Multiple fields

#[derive(Queryable, PartialEq, Debug)]
struct UserWithPost {
    id: i32,
    post: Option<Post>,
}
#[derive(Queryable, PartialEq, Debug)]
struct Post {
    id: i32,
    title: String,
}

let all_posts = users::table
    .left_join(posts::table)
    .select((
        users::id,
        (posts::id, posts::title).nullable()
    ))
    .order_by((users::id, posts::id))
    .load(connection)?;
let expected = vec![
    UserWithPost { id: 1, post: Some(Post { id: 1, title: "My first post".to_owned() }) },
    UserWithPost { id: 1, post: Some(Post { id: 2, title: "About Rust".to_owned() }) },
    UserWithPost { id: 2, post: Some(Post { id: 3, title: "My first post too".to_owned() }) },
    UserWithPost { id: 3, post: None },
];
assert_eq!(expected, all_posts);

§deserialize_as attribute

If we want to do additional work during deserialization, we can use deserialize_as to use a different implementation.

struct LowercaseString(String);

impl Into<String> for LowercaseString {
    fn into(self) -> String {
        self.0
    }
}

impl<DB> Queryable<Text, DB> for LowercaseString
where
    DB: Backend,
    String: FromSql<Text, DB>,
{
    type Row = String;

    fn build(s: String) -> deserialize::Result<Self> {
        Ok(LowercaseString(s.to_lowercase()))
    }
}

#[derive(Queryable, PartialEq, Debug)]
struct User {
    id: i32,
    #[diesel(deserialize_as = LowercaseString)]
    name: String,
}

let first_user = users.first(connection)?;
let expected = User { id: 1, name: "sean".into() };
assert_eq!(expected, first_user);

§Manual implementation

Alternatively, we can implement the trait for our struct manually.

use schema::users;
use diesel::deserialize::{self, Queryable};

type DB = diesel::sqlite::Sqlite;

#[derive(PartialEq, Debug)]
struct User {
    id: i32,
    name: String,
}

impl Queryable<users::SqlType, DB> for User {
    type Row = (i32, String);

    fn build(row: Self::Row) -> deserialize::Result<Self> {
        Ok(User {
            id: row.0,
            name: row.1.to_lowercase(),
        })
    }
}

let first_user = users.first(connection)?;
let expected = User { id: 1, name: "sean".into() };
assert_eq!(expected, first_user);

Required Associated Types§

source

type Row: FromStaticSqlRow<ST, DB>

The Rust type you’d like to map from.

This is typically a tuple of all of your struct’s fields.

Required Methods§

source

fn build(row: Self::Row) -> Result<Self>

Construct an instance of this type

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Queryable<Binary, Sqlite> for *const [u8]

source§

type Row = *const [u8]

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl Queryable<Text, Sqlite> for *const str

source§

type Row = *const str

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<'a, T, ST, DB> Queryable<ST, DB> for Cow<'a, T>
where T: 'a + ToOwned + ?Sized, ST: SingleValue, DB: Backend, Self: FromSql<ST, DB>,

source§

type Row = Cow<'a, T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<ST, T, DB> Queryable<ST, DB> for Option<T>
where ST: SingleValue<IsNull = IsNullable>, DB: Backend, Self: FromSql<ST, DB>,

source§

type Row = Option<T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7), __DB> for (T0, T1, T2, T3, T4, T5, T6, T7)

source§

impl<T0, T1, T2, T3, T4, T5, T6, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6), __DB> for (T0, T1, T2, T3, T4, T5, T6)

source§

impl<T0, T1, T2, T3, T4, T5, __DB, ST0, ST1, ST2, ST3, ST4, ST5> Queryable<(ST0, ST1, ST2, ST3, ST4, ST5), __DB> for (T0, T1, T2, T3, T4, T5)

source§

impl<T0, T1, T2, T3, T4, __DB, ST0, ST1, ST2, ST3, ST4> Queryable<(ST0, ST1, ST2, ST3, ST4), __DB> for (T0, T1, T2, T3, T4)

source§

impl<T0, T1, T2, T3, __DB, ST0, ST1, ST2, ST3> Queryable<(ST0, ST1, ST2, ST3), __DB> for (T0, T1, T2, T3)
where __DB: Backend, Self: FromStaticSqlRow<(ST0, ST1, ST2, ST3), __DB>,

source§

type Row = (T0, T1, T2, T3)

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<T0, T1, T2, __DB, ST0, ST1, ST2> Queryable<(ST0, ST1, ST2), __DB> for (T0, T1, T2)
where __DB: Backend, Self: FromStaticSqlRow<(ST0, ST1, ST2), __DB>,

source§

type Row = (T0, T1, T2)

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<T0, T1, __DB, ST0, ST1> Queryable<(ST0, ST1), __DB> for (T0, T1)
where __DB: Backend, Self: FromStaticSqlRow<(ST0, ST1), __DB>,

source§

type Row = (T0, T1)

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<T0, __DB, ST0> Queryable<(ST0,), __DB> for (T0,)
where __DB: Backend, Self: FromStaticSqlRow<(ST0,), __DB>,

source§

type Row = (T0,)

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<T, __DB, __ST> Queryable<__ST, __DB> for Vec<T>
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = Vec<T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for bool
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = bool

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for f32
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = f32

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for f64
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = f64

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for i8
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = i8

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for i16
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = i16

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for i32
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = i32

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for i64
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = i64

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for u8
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = u8

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for u16
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = u16

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for u32
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = u32

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for u64
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = u64

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for String
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = String

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__DB, __ST> Queryable<__ST, __DB> for SystemTime
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

source§

type Row = SystemTime

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0> Queryable<Nullable<(ST0,)>, __DB> for Option<__T>
where __DB: Backend, Self: FromStaticSqlRow<Nullable<(ST0,)>, __DB>, (ST0,): SqlType,

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1> Queryable<Nullable<(ST0, ST1)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2> Queryable<Nullable<(ST0, ST1, ST2)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3> Queryable<Nullable<(ST0, ST1, ST2, ST3)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

source§

impl<__T, __DB, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31> Queryable<Nullable<(ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31)>, __DB> for Option<__T>

source§

type Row = Option<__T>

source§

fn build(row: Self::Row) -> Result<Self>

Implementors§

source§

impl<'a, __DB, __ST> Queryable<__ST, __DB> for MigrationVersion<'a>
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,