#[derive(Debug, Clone, Copy)]
pub enum Json {}
#[cfg(feature = "serde_json")]
#[derive(Debug, Clone)]
pub struct JsonEncodeError(alloc::string::String);
#[cfg(feature = "serde_json")]
impl core::fmt::Display for JsonEncodeError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
write!(f, "JSON encode error: {}", self.0)
}
}
#[cfg(feature = "serde_json")]
impl<T: serde::Serialize> super::Encode<T> for Json {
type Error = JsonEncodeError;
fn encode(value: &T) -> Result<alloc::vec::Vec<u8>, Self::Error> {
serde_json::to_vec(value)
.map_err(|e| JsonEncodeError(alloc::string::ToString::to_string(&e)))
}
}
#[cfg(feature = "serde_json")]
#[derive(Debug, Clone)]
pub struct JsonDecodeError(alloc::string::String);
#[cfg(feature = "serde_json")]
impl core::fmt::Display for JsonDecodeError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
write!(f, "JSON decode error: {}", self.0)
}
}
#[cfg(feature = "serde_json")]
impl<T: serde::de::DeserializeOwned> super::Decode<T> for Json {
type Error = JsonDecodeError;
fn decode(bytes: &[u8]) -> Result<T, Self::Error> {
serde_json::from_slice(bytes)
.map_err(|e| JsonDecodeError(alloc::string::ToString::to_string(&e)))
}
}