use crate::buffers::buffer_to_str;
use crate::strings::string_to_buffer;
pub use crate::types::RUMOrderedMap;
use crate::types::RUMBuffer;
use bytes::BufMut;
pub use json::*;
use std::hash::Hash;
pub mod json;
#[derive(Default, Debug, PartialEq, Clone)]
pub struct RUMSerializableBuffer(pub RUMBuffer);
impl RUMSerJson for RUMSerializableBuffer {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: RUMJsonSerializer,
{
let string = match buffer_to_str(&self.0.as_slice()) {
Ok(string) => string,
Err(err) => return Err(serde::ser::Error::custom(err)),
};
serializer.serialize_str(string)
}
}
impl<'a> RUMDeJson<'a> for RUMSerializableBuffer {
fn deserialize<D>(deserializer: D) -> Result<Self, <D>::Error>
where
D: RUMJsonDeserializer<'a>,
{
let escaped_val = String::deserialize(deserializer)?;
Ok(RUMSerializableBuffer(string_to_buffer(&escaped_val)))
}
}