1pub use postcard::{
8 flavors::{Cobs, StdVec},
9 Error, Result,
10};
11
12use serde::{de::DeserializeOwned, Serialize};
13use std::fmt::Debug;
14
15pub fn serialise<S>(data: &S) -> Result<Vec<u8>>
17where
18 S: Serialize + Debug,
19{
20 postcard::to_stdvec(data)
21}
22
23pub fn deserialise<D>(data: &Vec<u8>) -> Result<D>
25where
26 D: DeserializeOwned,
27{
28 postcard::from_bytes(&data)
29}
30
31#[cfg(test)]
32mod tests {
33
34 #[test]
35 fn serialise() {
36 use serde::Serialize;
37
38 #[derive(Debug, Serialize)]
39 struct Foo(usize);
40
41 let foo = Foo(1312);
42 let v = crate::serialise(&foo).unwrap();
43 assert_eq!(v.len(), 10);
44 }
45
46 #[test]
47 fn deserialise() {
48 use serde::Deserialize;
49
50 #[derive(Deserialize)]
51 struct Foo(usize);
52
53 let v = vec![32, 5, 0, 0, 0, 0, 0, 0];
54 let f: Foo = crate::deserialise(&v).unwrap();
55
56 assert_eq!(f.0, 1312);
57 }
58}