use crate::courierust_error::{Error, Result};
pub trait EncodeMessage {
fn encode_message(&self) -> Result<Vec<u8>>;
}
pub trait DecodeMessage: Sized {
fn decode_message(bytes: &[u8]) -> Result<Self>;
}
pub struct BytesCodec;
impl EncodeMessage for Vec<u8> {
fn encode_message(&self) -> Result<Vec<u8>> {
Ok(self.clone())
}
}
impl DecodeMessage for Vec<u8> {
fn decode_message(bytes: &[u8]) -> Result<Self> {
Ok(bytes.to_vec())
}
}
impl EncodeMessage for String {
fn encode_message(&self) -> Result<Vec<u8>> {
Ok(self.as_bytes().to_vec())
}
}
impl DecodeMessage for String {
fn decode_message(bytes: &[u8]) -> Result<Self> {
String::from_utf8(bytes.to_vec()).map_err(|e| Error::protocol(e.to_string()))
}
}