1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
use crate::binary::Binary; use crate::deserializable::Deserializable; use crate::extension::Extension; use crate::serializable::{Serializable, SerializeError}; use chrono::prelude::*; use messagepack_rs_macros::MessagePackFrom; use std::collections::BTreeMap; #[derive(Clone, Debug, PartialEq, MessagePackFrom)] pub enum Value { Nil, Bool(bool), Float32(f32), Float64(f64), UInt8(u8), UInt16(u16), UInt32(u32), UInt64(u64), Int8(i8), Int16(i16), Int32(i32), Int64(i64), Binary(Binary), String(String), Array(Vec<Self>), Map(BTreeMap<String, Self>), Extension(Extension), Timestamp(DateTime<Utc>), } impl Serializable for Value { fn serialize(self) -> Result<Vec<u8>, SerializeError> { match self { Self::Nil => Self::serialize_nil(), Self::Bool(v) => Self::serialize_bool(v), Self::Float32(v) => Self::serialize_float32(v), Self::Float64(v) => Self::serialize_float64(v), Self::UInt8(v) => Self::serialize_uint8(v), Self::UInt16(v) => Self::serialize_uint16(v), Self::UInt32(v) => Self::serialize_uint32(v), Self::UInt64(v) => Self::serialize_uint64(v), Self::Int8(v) => Self::serialize_int8(v), Self::Int16(v) => Self::serialize_int16(v), Self::Int32(v) => Self::serialize_int32(v), Self::Int64(v) => Self::serialize_int64(v), Self::Binary(v) => Self::serialize_binary(v), Self::String(v) => Self::serialize_string(v), Self::Array(v) => Self::serialize_array(v), Self::Map(v) => Self::serialize_map(v), Self::Extension(v) => Self::serialize_extension(v), Self::Timestamp(v) => Self::serialize_timestamp(v), } } } impl Deserializable for Value {}