Trait diesel::deserialize::FromSql [−][src]
Deserialize a single field of a given SQL type.
When possible, implementations of this trait should prefer to use an
existing implementation, rather than reading from bytes
. (For example, if
you are implementing this for an enum which is represented as an integer in
the database, prefer i32::from_sql(bytes)
over reading from bytes
directly)
Types which implement this trait should also have #[derive(FromSqlRow)]
Backend specific details
- For PostgreSQL, the bytes will be sent using the binary protocol, not text.
- For SQLite, the actual type of
DB::RawValue
is private API. All implementations of this trait must be written in terms of an existing primitive. - For MySQL, the value of
bytes
will depend on the return value oftype_metadata
for the given SQL type. SeeMysqlType
for details. - For third party backends, consult that backend’s documentation.
Examples
Most implementations of this trait will be defined in terms of an existing implementation.
#[repr(i32)] #[derive(Debug, Clone, Copy)] pub enum MyEnum { A = 1, B = 2, } impl<DB> FromSql<Integer, DB> for MyEnum where DB: Backend, i32: FromSql<Integer, DB>, { fn from_sql(bytes: Option<&DB::RawValue>) -> deserialize::Result<Self> { match i32::from_sql(bytes)? { 1 => Ok(MyEnum::A), 2 => Ok(MyEnum::B), x => Err(format!("Unrecognized variant {}", x).into()), } } }
Required methods
Loading content...Implementations on Foreign Types
impl FromSql<Datetime, Mysql> for MYSQL_TIME
[src]
impl FromSql<Timestamp, Mysql> for MYSQL_TIME
[src]
impl FromSql<Time, Mysql> for MYSQL_TIME
[src]
impl FromSql<Date, Mysql> for MYSQL_TIME
[src]
impl FromSql<Datetime, Mysql> for NaiveDateTime
[src]
impl FromSql<Timestamp, Mysql> for NaiveDateTime
[src]
impl FromSql<Time, Mysql> for NaiveTime
[src]
impl FromSql<Date, Mysql> for NaiveDate
[src]
impl FromSql<Numeric, Mysql> for BigDecimal
[src]
impl FromSql<TinyInt, Mysql> for i8
[src]
impl FromSql<Unsigned<TinyInt>, Mysql> for u8
[src]
impl FromSql<Unsigned<SmallInt>, Mysql> for u16
[src]
impl FromSql<Unsigned<Integer>, Mysql> for u32
[src]
impl FromSql<Unsigned<BigInt>, Mysql> for u64
[src]
impl FromSql<Bool, Mysql> for bool
[src]
impl<T, ST> FromSql<Array<ST>, Pg> for Vec<T> where
T: FromSql<ST, Pg>,
[src]
T: FromSql<ST, Pg>,
impl FromSql<Timestamp, Pg> for NaiveDateTime
[src]
impl FromSql<Timestamptz, Pg> for NaiveDateTime
[src]
impl FromSql<Timestamptz, Pg> for DateTime<Utc>
[src]
impl FromSql<Time, Pg> for NaiveTime
[src]
impl FromSql<Date, Pg> for NaiveDate
[src]
impl FromSql<Timestamp, Pg> for Timespec
[src]
impl FromSql<Timestamp, Pg> for SystemTime
[src]
impl FromSql<Oid, Pg> for u32
[src]
impl FromSql<Json, Pg> for Value
[src]
impl FromSql<Jsonb, Pg> for Value
[src]
impl FromSql<MacAddr, Pg> for [u8; 6]
[src]
impl FromSql<Inet, Pg> for IpNetwork
[src]
impl FromSql<Cidr, Pg> for IpNetwork
[src]
impl FromSql<Numeric, Pg> for BigDecimal
[src]
impl FromSql<Bool, Pg> for bool
[src]
impl<T, ST> FromSql<Range<ST>, Pg> for (Bound<T>, Bound<T>) where
T: FromSql<ST, Pg>,
[src]
T: FromSql<ST, Pg>,
impl<A, SA> FromSql<Record<(SA,)>, Pg> for (A,) where
A: FromSql<SA, Pg>,
[src]
A: FromSql<SA, Pg>,
impl<A, B, SA, SB> FromSql<Record<(SA, SB)>, Pg> for (A, B) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
impl<A, B, C, SA, SB, SC> FromSql<Record<(SA, SB, SC)>, Pg> for (A, B, C) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
impl<A, B, C, D, SA, SB, SC, SD> FromSql<Record<(SA, SB, SC, SD)>, Pg> for (A, B, C, D) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
impl<A, B, C, D, E, SA, SB, SC, SD, SE> FromSql<Record<(SA, SB, SC, SD, SE)>, Pg> for (A, B, C, D, E) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
impl<A, B, C, D, E, F, SA, SB, SC, SD, SE, SF> FromSql<Record<(SA, SB, SC, SD, SE, SF)>, Pg> for (A, B, C, D, E, F) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
impl<A, B, C, D, E, F, G, SA, SB, SC, SD, SE, SF, SG> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG)>, Pg> for (A, B, C, D, E, F, G) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
impl<A, B, C, D, E, F, G, H, SA, SB, SC, SD, SE, SF, SG, SH> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH)>, Pg> for (A, B, C, D, E, F, G, H) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
impl<A, B, C, D, E, F, G, H, I, SA, SB, SC, SD, SE, SF, SG, SH, SI> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH, SI)>, Pg> for (A, B, C, D, E, F, G, H, I) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
impl<A, B, C, D, E, F, G, H, I, J, SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ)>, Pg> for (A, B, C, D, E, F, G, H, I, J) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
impl<A, B, C, D, E, F, G, H, I, J, K, SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK)>, Pg> for (A, B, C, D, E, F, G, H, I, J, K) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
impl<A, B, C, D, E, F, G, H, I, J, K, L, SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL)>, Pg> for (A, B, C, D, E, F, G, H, I, J, K, L) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
impl<A, B, C, D, E, F, G, H, I, J, K, L, M, SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM)>, Pg> for (A, B, C, D, E, F, G, H, I, J, K, L, M) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
M: FromSql<SM, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
M: FromSql<SM, Pg>,
impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM, SN> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM, SN)>, Pg> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
M: FromSql<SM, Pg>,
N: FromSql<SN, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
M: FromSql<SM, Pg>,
N: FromSql<SN, Pg>,
impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM, SN, SO> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM, SN, SO)>, Pg> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
M: FromSql<SM, Pg>,
N: FromSql<SN, Pg>,
O: FromSql<SO, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
M: FromSql<SM, Pg>,
N: FromSql<SN, Pg>,
O: FromSql<SO, Pg>,
impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SP> FromSql<Record<(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SP)>, Pg> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) where
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
M: FromSql<SM, Pg>,
N: FromSql<SN, Pg>,
O: FromSql<SO, Pg>,
P: FromSql<SP, Pg>,
[src]
A: FromSql<SA, Pg>,
B: FromSql<SB, Pg>,
C: FromSql<SC, Pg>,
D: FromSql<SD, Pg>,
E: FromSql<SE, Pg>,
F: FromSql<SF, Pg>,
G: FromSql<SG, Pg>,
H: FromSql<SH, Pg>,
I: FromSql<SI, Pg>,
J: FromSql<SJ, Pg>,
K: FromSql<SK, Pg>,
L: FromSql<SL, Pg>,
M: FromSql<SM, Pg>,
N: FromSql<SN, Pg>,
O: FromSql<SO, Pg>,
P: FromSql<SP, Pg>,
impl FromSql<Uuid, Pg> for Uuid
[src]
impl FromSql<Date, Sqlite> for NaiveDate
[src]
impl FromSql<Time, Sqlite> for NaiveTime
[src]
impl FromSql<Timestamp, Sqlite> for NaiveDateTime
[src]
impl FromSql<Date, Sqlite> for *const str
[src]
The returned pointer is only valid for the lifetime to the argument of
from_sql
. This impl is intended for uses where you want to write a new
impl in terms of String
, but don’t want to allocate. We have to return a
raw pointer instead of a reference with a lifetime due to the structure of
FromSql
impl FromSql<Time, Sqlite> for *const str
[src]
The returned pointer is only valid for the lifetime to the argument of
from_sql
. This impl is intended for uses where you want to write a new
impl in terms of String
, but don’t want to allocate. We have to return a
raw pointer instead of a reference with a lifetime due to the structure of
FromSql
impl FromSql<Timestamp, Sqlite> for *const str
[src]
The returned pointer is only valid for the lifetime to the argument of
from_sql
. This impl is intended for uses where you want to write a new
impl in terms of String
, but don’t want to allocate. We have to return a
raw pointer instead of a reference with a lifetime due to the structure of
FromSql
impl FromSql<Numeric, Sqlite> for BigDecimal
[src]
impl FromSql<Text, Sqlite> for *const str
[src]
The returned pointer is only valid for the lifetime to the argument of
from_sql
. This impl is intended for uses where you want to write a new
impl in terms of String
, but don’t want to allocate. We have to return a
raw pointer instead of a reference with a lifetime due to the structure of
FromSql
impl FromSql<Binary, Sqlite> for *const [u8]
[src]
The returned pointer is only valid for the lifetime to the argument of
from_sql
. This impl is intended for uses where you want to write a new
impl in terms of Vec<u8>
, but don’t want to allocate. We have to return a
raw pointer instead of a reference with a lifetime due to the structure of
FromSql
impl FromSql<SmallInt, Sqlite> for i16
[src]
impl FromSql<Integer, Sqlite> for i32
[src]
impl FromSql<Bool, Sqlite> for bool
[src]
impl FromSql<BigInt, Sqlite> for i64
[src]
impl FromSql<Float, Sqlite> for f32
[src]
impl FromSql<Double, Sqlite> for f64
[src]
impl<DB: Backend<RawValue = [u8]>> FromSql<Float, DB> for f32
[src]
impl<DB: Backend<RawValue = [u8]>> FromSql<Double, DB> for f64
[src]
impl<DB: Backend<RawValue = [u8]>> FromSql<SmallInt, DB> for i16
[src]
impl<DB: Backend<RawValue = [u8]>> FromSql<Integer, DB> for i32
[src]
impl<DB: Backend<RawValue = [u8]>> FromSql<BigInt, DB> for i64
[src]
impl<T, ST, DB> FromSql<Nullable<ST>, DB> for Option<T> where
T: FromSql<ST, DB>,
DB: Backend,
ST: NotNull,
[src]
T: FromSql<ST, DB>,
DB: Backend,
ST: NotNull,
impl<ST, DB> FromSql<ST, DB> for String where
DB: Backend,
*const str: FromSql<ST, DB>,
[src]
DB: Backend,
*const str: FromSql<ST, DB>,
impl<DB: Backend<RawValue = [u8]>> FromSql<Text, DB> for *const str
[src]
The returned pointer is only valid for the lifetime to the argument of
from_sql
. This impl is intended for uses where you want to write a new
impl in terms of String
, but don’t want to allocate. We have to return a
raw pointer instead of a reference with a lifetime due to the structure of
FromSql
impl<ST, DB> FromSql<ST, DB> for Vec<u8> where
DB: Backend,
*const [u8]: FromSql<ST, DB>,
[src]
DB: Backend,
*const [u8]: FromSql<ST, DB>,
impl<DB: Backend<RawValue = [u8]>> FromSql<Binary, DB> for *const [u8]
[src]
The returned pointer is only valid for the lifetime to the argument of
from_sql
. This impl is intended for uses where you want to write a new
impl in terms of Vec<u8>
, but don’t want to allocate. We have to return a
raw pointer instead of a reference with a lifetime due to the structure of
FromSql
impl<'a, T: ?Sized, ST, DB> FromSql<ST, DB> for Cow<'a, T> where
T: 'a + ToOwned,
DB: Backend,
T::Owned: FromSql<ST, DB>,
[src]
Loading content...T: 'a + ToOwned,
DB: Backend,
T::Owned: FromSql<ST, DB>,