1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use std::{collections::TryReserveError, fmt::Debug, io};
use serde::{Deserialize, Serialize};
#[derive(Debug)]
pub enum ErrorKind {
SerializeError(rmp_serde::encode::Error),
DeserializeError(rmp_serde::decode::Error),
IoError(io::Error),
DecodeInt,
TryReserveError(TryReserveError),
}
type Result<T, E = ErrorKind> = std::result::Result<T, E>;
pub fn encode<D>(data: D) -> Result<Vec<u8>>
where
D: Serialize,
{
Ok(rmp_serde::to_vec(&data).map_err(|e| ErrorKind::SerializeError(e))?)
}
pub fn decode<O>(bytes: &[u8]) -> Result<O>
where
O: for<'a> Deserialize<'a>,
{
Ok(rmp_serde::from_slice::<O>(&bytes.to_vec()).map_err(|e| ErrorKind::DeserializeError(e))?)
}