1pub(crate) mod pouf1;
4pub use pouf1::Pouf1;
5
6use serde::de::DeserializeOwned;
7use serde::ser::Serialize;
8
9use crate::Result;
10
11pub trait Pouf: Sync {
13 type RawData: Serialize + DeserializeOwned + PartialEq;
15
16 fn extension() -> &'static str;
18
19 fn canonicalize(raw_data: &Self::RawData) -> Result<Vec<u8>>;
21
22 fn deserialize<T>(raw_data: &Self::RawData) -> Result<T>
24 where
25 T: DeserializeOwned;
26
27 fn serialize<T>(data: &T) -> Result<Self::RawData>
29 where
30 T: Serialize;
31
32 fn from_slice<T>(slice: &[u8]) -> Result<T>
34 where
35 T: DeserializeOwned;
36}