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§
Sourcefn decode<T: DeserializeOwned>(&self, data: &[u8]) -> Result<T, CodecError>
fn decode<T: DeserializeOwned>(&self, data: &[u8]) -> Result<T, CodecError>
Provided Methods§
Sourcefn encode_message(
&self,
message: &ProtocolMessage,
) -> Result<Vec<u8>, CodecError>
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.
Sourcefn decode_message(&self, data: &[u8]) -> Result<ProtocolMessage, CodecError>
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.