roboplc_rpc/dataformat/
json.rs

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