Skip to main content

crypto_seal/format/
postcard.rs

1use crate::error::Error;
2use crate::format::Format;
3use alloc::vec::Vec;
4use serde::Serialize;
5use serde::de::DeserializeOwned;
6
7#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
8pub struct Postcard;
9
10impl Format for Postcard {
11    fn serialize<T: Serialize + ?Sized>(value: &T) -> crate::Result<Vec<u8>> {
12        postcard::to_allocvec(value).map_err(Error::from)
13    }
14
15    fn deserialize<T: DeserializeOwned>(bytes: &[u8]) -> crate::Result<T> {
16        postcard::from_bytes(bytes).map_err(Error::from)
17    }
18}