use super::{Null, Type}; /// Owning [dynamic type value](http://sqlite.org/datatype3.html). Value's type is typically /// dictated by SQLite (not by the caller). /// /// See [`ValueRef`](enum.ValueRef.html) for a non-owning dynamic type value. #[derive(Clone,Debug,PartialEq)] pub enum Value { /// The value is a `NULL` value. Null, /// The value is a signed integer. Integer(i64), /// The value is a floating point number. Real(f64), /// The value is a text string. Text(String), /// The value is a blob of data Blob(Vec), } impl From for Value { fn from(_: Null) -> Value { Value::Null } } impl From for Value { fn from(i: bool) -> Value { Value::Integer(i as i64) } } impl From for Value { fn from(i: i32) -> Value { Value::Integer(i as i64) } } impl From for Value { fn from(i: i64) -> Value { Value::Integer(i) } } impl From for Value { fn from(f: f64) -> Value { Value::Real(f) } } impl From for Value { fn from(s: String) -> Value { Value::Text(s) } } impl From> for Value { fn from(v: Vec) -> Value { Value::Blob(v) } } impl Value { pub fn data_type(&self) -> Type { match *self { Value::Null => Type::Null, Value::Integer(_) => Type::Integer, Value::Real(_) => Type::Real, Value::Text(_) => Type::Text, Value::Blob(_) => Type::Blob, } } }