1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
use serde::de::DeserializeOwned; use serde::Serialize; use std::marker::Sized; pub struct Json; impl super::Format for Json { fn to_bytes<T: Sized + Serialize>(value: T) -> super::Result<Vec<u8>> { match serde_json::to_vec(&value) { Ok(bytes) => Ok(bytes), Err(e) => Err(super::Error::from(e)), } } fn from_bytes<T: DeserializeOwned>(bytes: Vec<u8>) -> super::Result<T> { match serde_json::from_slice::<T>(&bytes) { Ok(value) => Ok(value), Err(e) => Err(super::Error::from(e)), } } }