Trait sqlx::Decode [−][src]
pub trait Decode<'r, DB> where
DB: Database, { fn decode(
value: <DB as HasValueRef<'r>>::ValueRef
) -> Result<Self, Box<dyn Error + 'static + Sync + Send, Global>>; }
Expand description
A type that can be decoded from the database.
How can I implement Decode
?
A manual implementation of Decode
can be useful when adding support for
types externally to SQLx.
The following showcases how to implement Decode
to be generic over Database
. The
implementation can be marginally simpler if you remove the DB
type parameter and explicitly
use the concrete ValueRef
and TypeInfo
types.
struct MyType; // DB is the database driver // `'r` is the lifetime of the `Row` being decoded impl<'r, DB: Database> Decode<'r, DB> for MyType where // we want to delegate some of the work to string decoding so let's make sure strings // are supported by the database &'r str: Decode<'r, DB> { fn decode( value: <DB as HasValueRef<'r>>::ValueRef, ) -> Result<MyType, Box<dyn Error + 'static + Send + Sync>> { // the interface of ValueRef is largely unstable at the moment // so this is not directly implementable // however, you can delegate to a type that matches the format of the type you want // to decode (such as a UTF-8 string) let value = <&str as Decode<DB>>::decode(value)?; // now you can parse this into your type (assuming there is a `FromStr`) Ok(value.parse()?) } }
Required methods
Implementations on Foreign Types
impl<'r, T> Decode<'r, Postgres> for Vec<T, Global> where
T: for<'a> Decode<'a, Postgres> + Type<Postgres>,
[src]
impl<'r, T> Decode<'r, Postgres> for Vec<T, Global> where
T: for<'a> Decode<'a, Postgres> + Type<Postgres>,
[src]impl<'r, DB> Decode<'r, DB> for &'r RawValue where
DB: Database,
Json<&'r RawValue>: Decode<'r, DB>,
[src]
impl<'r, DB> Decode<'r, DB> for &'r RawValue where
DB: Database,
Json<&'r RawValue>: Decode<'r, DB>,
[src]impl<'r, T1, T2, T3, T4, T5, T6, T7> Decode<'r, Postgres> for (T1, T2, T3, T4, T5, T6, T7) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T6: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T7: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1, T2, T3, T4, T5, T6, T7> Decode<'r, Postgres> for (T1, T2, T3, T4, T5, T6, T7) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T6: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T7: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T1, T2> Decode<'r, Postgres> for (T1, T2) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1, T2> Decode<'r, Postgres> for (T1, T2) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T1, T2, T3> Decode<'r, Postgres> for (T1, T2, T3) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1, T2, T3> Decode<'r, Postgres> for (T1, T2, T3) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T1, T2, T3, T4> Decode<'r, Postgres> for (T1, T2, T3, T4) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1, T2, T3, T4> Decode<'r, Postgres> for (T1, T2, T3, T4) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T1> Decode<'r, Postgres> for (T1,) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1> Decode<'r, Postgres> for (T1,) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T1, T2, T3, T4, T5, T6, T7, T8> Decode<'r, Postgres> for (T1, T2, T3, T4, T5, T6, T7, T8) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T6: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T7: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T8: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1, T2, T3, T4, T5, T6, T7, T8> Decode<'r, Postgres> for (T1, T2, T3, T4, T5, T6, T7, T8) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T6: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T7: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T8: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T1, T2, T3, T4, T5, T6> Decode<'r, Postgres> for (T1, T2, T3, T4, T5, T6) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T6: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1, T2, T3, T4, T5, T6> Decode<'r, Postgres> for (T1, T2, T3, T4, T5, T6) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T6: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T1, T2, T3, T4, T5, T6, T7, T8, T9> Decode<'r, Postgres> for (T1, T2, T3, T4, T5, T6, T7, T8, T9) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T6: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T7: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T8: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T9: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1, T2, T3, T4, T5, T6, T7, T8, T9> Decode<'r, Postgres> for (T1, T2, T3, T4, T5, T6, T7, T8, T9) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T6: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T7: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T8: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T9: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T1, T2, T3, T4, T5> Decode<'r, Postgres> for (T1, T2, T3, T4, T5) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T1, T2, T3, T4, T5> Decode<'r, Postgres> for (T1, T2, T3, T4, T5) where
T1: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T2: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T3: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T4: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
T5: 'r + Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]Implementors
impl<'_> Decode<'_, MySql> for BigDecimal
[src]
impl<'_> Decode<'_, MySql> for BigDecimal
[src]pub fn decode(
value: MySqlValueRef<'_>
) -> Result<BigDecimal, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: MySqlValueRef<'_>
) -> Result<BigDecimal, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'_> Decode<'_, MySql> for Hyphenated
[src]
impl<'_> Decode<'_, MySql> for Hyphenated
[src]pub fn decode(
value: MySqlValueRef<'_>
) -> Result<Hyphenated, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: MySqlValueRef<'_>
) -> Result<Hyphenated, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'_> Decode<'_, Postgres> for BigDecimal
[src]
impl<'_> Decode<'_, Postgres> for BigDecimal
[src]pub fn decode(
value: PgValueRef<'_>
) -> Result<BigDecimal, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: PgValueRef<'_>
) -> Result<BigDecimal, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'_> Decode<'_, Sqlite> for Hyphenated
[src]
impl<'_> Decode<'_, Sqlite> for Hyphenated
[src]pub fn decode(
value: SqliteValueRef<'_>
) -> Result<Hyphenated, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: SqliteValueRef<'_>
) -> Result<Hyphenated, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'de> Decode<'de, Postgres> for PgInterval
[src]
impl<'de> Decode<'de, Postgres> for PgInterval
[src]pub fn decode(
value: PgValueRef<'de>
) -> Result<PgInterval, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: PgValueRef<'de>
) -> Result<PgInterval, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'r> Decode<'r, MySql> for NaiveDateTime
[src]
impl<'r> Decode<'r, MySql> for NaiveDateTime
[src]pub fn decode(
value: MySqlValueRef<'r>
) -> Result<NaiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: MySqlValueRef<'r>
) -> Result<NaiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'r> Decode<'r, MySql> for OffsetDateTime
[src]
impl<'r> Decode<'r, MySql> for OffsetDateTime
[src]pub fn decode(
value: MySqlValueRef<'r>
) -> Result<OffsetDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: MySqlValueRef<'r>
) -> Result<OffsetDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'r> Decode<'r, MySql> for PrimitiveDateTime
[src]
impl<'r> Decode<'r, MySql> for PrimitiveDateTime
[src]pub fn decode(
value: MySqlValueRef<'r>
) -> Result<PrimitiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: MySqlValueRef<'r>
) -> Result<PrimitiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'r> Decode<'r, Postgres> for DateTime<FixedOffset>
[src]
impl<'r> Decode<'r, Postgres> for DateTime<FixedOffset>
[src]impl<'r> Decode<'r, Postgres> for NaiveDateTime
[src]
impl<'r> Decode<'r, Postgres> for NaiveDateTime
[src]pub fn decode(
value: PgValueRef<'r>
) -> Result<NaiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: PgValueRef<'r>
) -> Result<NaiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'r> Decode<'r, Postgres> for OffsetDateTime
[src]
impl<'r> Decode<'r, Postgres> for OffsetDateTime
[src]pub fn decode(
value: PgValueRef<'r>
) -> Result<OffsetDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: PgValueRef<'r>
) -> Result<OffsetDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'r> Decode<'r, Postgres> for PrimitiveDateTime
[src]
impl<'r> Decode<'r, Postgres> for PrimitiveDateTime
[src]pub fn decode(
value: PgValueRef<'r>
) -> Result<PrimitiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: PgValueRef<'r>
) -> Result<PrimitiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'r> Decode<'r, Sqlite> for DateTime<FixedOffset>
[src]
impl<'r> Decode<'r, Sqlite> for DateTime<FixedOffset>
[src]impl<'r> Decode<'r, Sqlite> for NaiveDateTime
[src]
impl<'r> Decode<'r, Sqlite> for NaiveDateTime
[src]pub fn decode(
value: SqliteValueRef<'r>
) -> Result<NaiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
[src]
value: SqliteValueRef<'r>
) -> Result<NaiveDateTime, Box<dyn Error + 'static + Sync + Send, Global>>
impl<'r, T> Decode<'r, MySql> for Json<T> where
T: 'r + Deserialize<'r>,
[src]
impl<'r, T> Decode<'r, MySql> for Json<T> where
T: 'r + Deserialize<'r>,
[src]impl<'r, T> Decode<'r, Postgres> for PgRange<T> where
T: Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]
impl<'r, T> Decode<'r, Postgres> for PgRange<T> where
T: Type<Postgres> + for<'a> Decode<'a, Postgres>,
[src]impl<'r, T> Decode<'r, Postgres> for Json<T> where
T: 'r + Deserialize<'r>,
[src]
impl<'r, T> Decode<'r, Postgres> for Json<T> where
T: 'r + Deserialize<'r>,
[src]