roboplc_rpc/dataformat/
msgpack.rs

1use serde::{Deserialize, Serialize};
2
3use super::DataFormat;
4
5/// MessagePack data format packer.
6pub struct Packer;
7
8impl DataFormat for Packer {
9    type PackError = rmp_serde::encode::Error;
10    type UnpackError = rmp_serde::decode::Error;
11
12    fn pack<D: Serialize>(data: &D) -> Result<Vec<u8>, Self::PackError> {
13        rmp_serde::to_vec_named(data)
14    }
15
16    fn unpack<'de, T: Deserialize<'de>>(payload: &'de [u8]) -> Result<T, Self::UnpackError> {
17        rmp_serde::from_slice(payload)
18    }
19}