use serde::{Deserialize, Serialize};
use serde_value::to_value;
use crate::error::CodecError;
use crate::Result;
#[doc(hidden)]
pub fn raw_serialize<T>(
item: &T,
) -> std::result::Result<serde_value::Value, serde_value::SerializerError>
where
T: Serialize,
{
to_value(item)
}
pub fn serialize<T>(item: &T) -> Result<serde_value::Value>
where
T: Serialize,
{
raw_serialize(item).map_err(CodecError::SerializationError)
}
#[doc(hidden)]
pub fn raw_deserialize<'de, T: Deserialize<'de>>(
value: serde_value::Value,
) -> std::result::Result<T, serde_value::DeserializerError> {
value.deserialize_into()
}
pub fn deserialize<'de, T: Deserialize<'de>>(value: serde_value::Value) -> Result<T> {
raw_deserialize(value).map_err(CodecError::DeserializationError)
}