memlink_msdk/
serialize.rs1use serde::Serialize;
7
8use crate::error::{ModuleError, Result};
9
10pub trait Serializer: Send + Sync {
11 fn serialize<T: Serialize>(&self, value: &T) -> Result<Vec<u8>>;
12 fn deserialize<T: DeserializeOwned>(&self, bytes: &[u8]) -> Result<T>;
13}
14
15pub use serde::de::DeserializeOwned;
16
17#[derive(Debug, Clone, Copy)]
18pub struct BincodeSerializer;
19
20impl Serializer for BincodeSerializer {
21 fn serialize<T: Serialize>(&self, value: &T) -> Result<Vec<u8>> {
22 rmp_serde::to_vec(value).map_err(ModuleError::from)
23 }
24
25 fn deserialize<T: DeserializeOwned>(&self, bytes: &[u8]) -> Result<T> {
26 rmp_serde::from_slice(bytes).map_err(ModuleError::from)
27 }
28}
29
30pub fn default_serializer() -> BincodeSerializer {
31 BincodeSerializer
32}