memlink_protocol/
serializer.rs1use alloc::vec::Vec;
7
8use crate::emsg::ErrorMessage;
9use crate::error::Result;
10use crate::request::Request;
11use crate::response::Response;
12
13pub trait Serializer: Send + Sync {
14 fn serialize<T: serde::Serialize>(&self, value: &T) -> Result<Vec<u8>>;
15
16 fn deserialize<T: serde::de::DeserializeOwned>(&self, bytes: &[u8]) -> Result<T>;
17
18 fn serialize_request(&self, req: &Request) -> Result<Vec<u8>>;
19
20 fn deserialize_request(&self, bytes: &[u8]) -> Result<Request>;
21
22 fn serialize_response(&self, resp: &Response) -> Result<Vec<u8>>;
23
24 fn deserialize_response(&self, bytes: &[u8]) -> Result<Response>;
25
26 fn serialize_error(&self, err: &ErrorMessage) -> Result<Vec<u8>>;
27
28 fn deserialize_error(&self, bytes: &[u8]) -> Result<ErrorMessage>;
29}
30
31pub trait MemLinkSerialize: serde::Serialize + serde::de::DeserializeOwned {}
32
33impl<T> MemLinkSerialize for T where T: serde::Serialize + serde::de::DeserializeOwned {}