restless_data/
postcard.rs

1use crate::{Decodable, Encodable};
2use postcard::{from_bytes, to_allocvec, Error};
3use serde::{de::DeserializeOwned, Serialize};
4
5/// Encode and decode data as postcard using `postcard`.
6#[cfg(any(doc, feature = "postcard"))]
7#[derive(Clone, Debug)]
8pub struct Postcard<T>(pub T);
9
10impl<T: Serialize> Encodable for super::Postcard<T> {
11    fn encode(&self) -> Vec<u8> {
12        to_allocvec(&self.0).unwrap()
13    }
14}
15
16impl<T: DeserializeOwned> Decodable for Postcard<T> {
17    type Target = T;
18    type Error = Error;
19
20    fn decode(data: &[u8]) -> Result<Self::Target, Self::Error> {
21        from_bytes(data)
22    }
23}