Trait mysql::FromValue
[−]
[src]
pub trait FromValue: Sized { type Intermediate: ConvIr<Self>; fn from_value(v: Value) -> Self { ... } fn from_value_opt(v: Value) -> MyResult<Self> { ... } fn get_intermediate(v: Value) -> MyResult<Self::Intermediate> { ... } }
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) -> MyResult<Self>
Will return Err(Error::FromValueError(v))
if could not convert v
to Self
.
fn get_intermediate(v: Value) -> MyResult<Self::Intermediate>
Will return Err(Error::FromValueError(v))
if v
is not convertible to Self
.
Implementors
impl<T> FromValue for Option<T> where T: FromValue
impl FromValue for Value
impl FromValue for NaiveDateTime
impl FromValue for NaiveDate
impl FromValue for NaiveTime
impl FromValue for Timespec
impl FromValue for Duration
impl FromValue for Duration
impl FromValue for String
impl FromValue for Vec<u8>
impl FromValue for bool
impl FromValue for i64
impl FromValue for u64
impl FromValue for f32
impl FromValue for f64
impl FromValue for i8
impl FromValue for u8
impl FromValue for i16
impl FromValue for u16
impl FromValue for i32
impl FromValue for u32
impl FromValue for isize
impl FromValue for usize