pub trait FromValue: Sized {
    type Intermediate: ConvIr<Self>;

    // Provided methods
    fn from_value(v: Value) -> Self { ... }
    fn from_value_opt(v: Value) -> Result<Self, FromValueError> { ... }
    fn get_intermediate(v: Value) -> Result<Self::Intermediate, FromValueError> { ... }
}
Expand description

Implement this trait to convert value to something.

FromRow requires ability to cheaply rollback FromValue conversion. This ability is provided via Intermediate associated type.

Example implementation:

#[derive(Debug)]
pub struct StringIr {
    bytes: Vec<u8>,
}

impl ConvIr<String> for StringIr {
    fn new(v: Value) -> MyResult<StringIr> {
        match v {
            Value::Bytes(bytes) => match from_utf8(&*bytes) {
                Ok(_) => Ok(StringIr { bytes: bytes }),
                Err(_) => Err(Error::FromValueError(Value::Bytes(bytes))),
            },
            v => Err(Error::FromValueError(v)),
        }
    }
    fn commit(self) -> String {
        unsafe { String::from_utf8_unchecked(self.bytes) }
    }
    fn rollback(self) -> Value {
        Value::Bytes(self.bytes)
    }
}

impl FromValue for String {
    type Intermediate = StringIr;
}

Required Associated Types§

Provided Methods§

source

fn from_value(v: Value) -> Self

Will panic if could not convert v to Self.

source

fn from_value_opt(v: Value) -> Result<Self, FromValueError>

Will return Err(Error::FromValueError(v)) if could not convert v to Self.

source

fn get_intermediate(v: Value) -> Result<Self::Intermediate, FromValueError>

Will return Err(Error::FromValueError(v)) if v is not convertible to Self.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl FromValue for Value

source§

impl FromValue for bool

source§

impl FromValue for f32

source§

impl FromValue for f64

source§

impl FromValue for i8

source§

impl FromValue for i16

source§

impl FromValue for i32

source§

impl FromValue for i64

source§

impl FromValue for i128

source§

impl FromValue for isize

source§

impl FromValue for u8

source§

impl FromValue for u16

source§

impl FromValue for u32

source§

impl FromValue for u64

source§

impl FromValue for u128

source§

impl FromValue for usize

source§

impl FromValue for BigDecimal

source§

impl FromValue for BigInt

source§

impl FromValue for BigUint

source§

impl FromValue for Decimal

source§

impl FromValue for Date

source§

impl FromValue for Duration

source§

impl FromValue for PrimitiveDateTime

source§

impl FromValue for Time

source§

impl FromValue for Uuid

source§

impl FromValue for String

source§

impl FromValue for Vec<u8>

source§

impl FromValue for Duration

source§

impl<T> FromValue for Option<T>where T: FromValue,

Implementors§