Codec

Trait Codec 

Source
pub trait Codec:
    Send
    + Sync
    + 'static {
    // Required methods
    fn encode<T: Serialize>(&self, value: &T) -> Result<Vec<u8>, CodecError>;
    fn decode<T: DeserializeOwned>(&self, data: &[u8]) -> Result<T, CodecError>;

    // Provided methods
    fn encode_message(
        &self,
        message: &ProtocolMessage,
    ) -> Result<Vec<u8>, CodecError> { ... }
    fn decode_message(&self, data: &[u8]) -> Result<ProtocolMessage, CodecError> { ... }
}
Expand description

Trait for message serialization codecs.

Implementations must be thread-safe as they may be shared across async tasks.

Required Methods§

Source

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

Encodes a value to bytes.

§Errors

Returns an error if serialization fails.

Source

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

Decodes bytes to a value.

§Errors

Returns an error if deserialization fails.

Provided Methods§

Source

fn encode_message( &self, message: &ProtocolMessage, ) -> Result<Vec<u8>, CodecError>

Encodes a protocol message.

This is a convenience method that delegates to encode.

§Errors

Returns an error if serialization fails.

Source

fn decode_message(&self, data: &[u8]) -> Result<ProtocolMessage, CodecError>

Decodes a protocol message.

This is a convenience method that delegates to decode.

§Errors

Returns an error 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§