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}