MessageCodec

Trait MessageCodec 

Source
pub trait MessageCodec: Clone + 'static {
    // Required methods
    fn encode<T: Serialize>(&self, msg: &T) -> Result<Vec<u8>, CodecError>;
    fn decode<T: DeserializeOwned>(&self, buf: &[u8]) -> Result<T, CodecError>;
}
Expand description

Pluggable message serialization format.

Implement this trait to use custom serialization formats (bincode, protobuf, etc.). The trait requires Clone + 'static so codec instances can be stored in queues and transports.

§Serde Dependency

This trait uses serde’s Serialize and DeserializeOwned bounds, which means your message types must derive or implement serde traits. If you need completely custom serialization without serde, you can implement your own queue type.

Required Methods§

Source

fn encode<T: Serialize>(&self, msg: &T) -> Result<Vec<u8>, CodecError>

Encode a serializable message to bytes.

§Errors

Returns CodecError::Encode if serialization fails.

Source

fn decode<T: DeserializeOwned>(&self, buf: &[u8]) -> Result<T, CodecError>

Decode bytes to a deserializable message.

§Errors

Returns CodecError::Decode if deserialization fails.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§