use crate::message::primitive::config::pg_proto_config; use bincode::{Decode, Encode}; use crate::message::errors::{ProtoDeserializeError, ProtoSerializeError}; pub trait MessageData: Sized { fn serialize(&self) -> Result, ProtoSerializeError>; fn deserialize(data: &[u8]) -> Result; } impl MessageData for T where T: Encode + Decode, { #[inline] fn serialize(&self) -> Result, ProtoSerializeError> { Ok(bincode::encode_to_vec(self, pg_proto_config())?) } #[inline] fn deserialize(data: &[u8]) -> Result { Ok(bincode::decode_from_slice(data, pg_proto_config())?.0) } }