use serde::{Serialize, Serializer};
use serde_json::Value;
#[derive(Debug, Clone)]
pub enum DynamicValue {
Bool(bool),
I8(i8),
I16(i16),
I32(i32),
I64(i64),
U8(u8),
U16(u16),
U32(u32),
U64(u64),
Str(String),
Json(Value),
Null,
}
impl Serialize for DynamicValue {
fn serialize<S>(&self, serializer: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where
S: Serializer,
{
match self {
DynamicValue::Bool(value) => value.serialize(serializer),
DynamicValue::I8(value) => value.serialize(serializer),
DynamicValue::I16(value) => value.serialize(serializer),
DynamicValue::I32(value) => value.serialize(serializer),
DynamicValue::I64(value) => value.serialize(serializer),
DynamicValue::U8(value) => value.serialize(serializer),
DynamicValue::U16(value) => value.serialize(serializer),
DynamicValue::U32(value) => value.serialize(serializer),
DynamicValue::U64(value) => value.serialize(serializer),
DynamicValue::Str(value) => value.serialize(serializer),
DynamicValue::Json(value) => value.serialize(serializer),
DynamicValue::Null => serializer.serialize_unit(),
}
}
}
impl Default for DynamicValue {
fn default() -> Self {
Self::Null
}
}