Trait mysql::prelude::FromValue
[−]
[src]
pub trait FromValue {
type Intermediate: ConvIr<Self>;
fn from_value(v: Value) -> Self { ... }
fn from_value_opt(v: Value) -> Result<Self, FromValueError> { ... }
fn get_intermediate(v: Value) -> Result<Self::Intermediate, FromValueError> { ... }
}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; }
Associated Types
type Intermediate: ConvIr<Self>
Provided Methods
fn from_value(v: Value) -> Self
Will panic if could not convert v to Self.
fn from_value_opt(v: Value) -> Result<Self, FromValueError>
Will return Err(Error::FromValueError(v)) if could not convert v to Self.
fn get_intermediate(v: Value) -> Result<Self::Intermediate, FromValueError>
Will return Err(Error::FromValueError(v)) if v is not convertible to Self.
Implementors
impl FromValue for mysql::Value type Intermediate = Value;impl FromValue for bool type Intermediate = ParseIr<bool>;impl FromValue for u8 type Intermediate = ParseIr<u8>;impl FromValue for u64 type Intermediate = ParseIr<u64>;impl FromValue for std::time::duration::Duration type Intermediate = ParseIr<Duration>;impl<T> FromValue for Deserialized<T> where
T: DeserializeOwned, type Intermediate = DeserializedIr<T>;impl FromValue for Vec<u8> type Intermediate = BytesIr;impl FromValue for i32 type Intermediate = ParseIr<i32>;impl FromValue for NaiveTime type Intermediate = ParseIr<NaiveTime>;impl FromValue for f64 type Intermediate = ParseIr<f64>;impl FromValue for f32 type Intermediate = ParseIr<f32>;impl FromValue for serde_json::value::Value type Intermediate = JsonIr;impl FromValue for mysql::time::Duration type Intermediate = ParseIr<Duration>;impl FromValue for u16 type Intermediate = ParseIr<u16>;impl FromValue for String type Intermediate = StringIr;impl FromValue for isize type Intermediate = ParseIr<isize>;impl FromValue for usize type Intermediate = ParseIr<usize>;impl FromValue for i16 type Intermediate = ParseIr<i16>;impl FromValue for Uuid type Intermediate = UuidIr;impl FromValue for u32 type Intermediate = ParseIr<u32>;impl FromValue for NaiveDate type Intermediate = ParseIr<NaiveDate>;impl FromValue for NaiveDateTime type Intermediate = ParseIr<NaiveDateTime>;impl FromValue for i8 type Intermediate = ParseIr<i8>;impl FromValue for i64 type Intermediate = ParseIr<i64>;impl<T> FromValue for Option<T> where
T: FromValue, type Intermediate = OptionIr<<T as FromValue>::Intermediate>;impl FromValue for Timespec type Intermediate = ParseIr<Timespec>;