blob: fd5ed690453ee33b2d392e387a2e1d804570331d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
use serde::{de::DeserializeOwned, Deserialize, Serialize};
#[repr(C)]
#[derive(Serialize, Deserialize)]
pub struct Envelope {
size: u64,
data: Vec<u8>,
}
impl Envelope {
pub fn pack<T: Serialize>(d: T) -> Self {
let data = bincode::serialize(&d).unwrap();
let size = data.len() as u64;
Self { size, data }
}
pub fn unpack<T: DeserializeOwned>(self) -> T {
bincode::deserialize(&self.data).unwrap()
}
}
|