use crate::buffers::{buffer_to_str, RUMBuffer};
use crate::serde::{RUMDeJson, RUMJsonDeserializer, RUMJsonSerializer, RUMSerJson};
impl RUMSerJson for RUMBuffer {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: RUMJsonSerializer,
{
let string = match buffer_to_str(&self.as_slice()) {
Ok(string) => string,
Err(err) => return Err(serde::ser::Error::custom(err)),
};
serializer.serialize_str(string)
}
}
impl<'a> RUMDeJson<'a> for RUMBuffer {
fn deserialize<D>(deserializer: D) -> Result<Self, <D>::Error>
where
D: RUMJsonDeserializer<'a>,
{
let escaped_val = String::deserialize(deserializer)?;
Ok(RUMBuffer::from(escaped_val))
}
}