use std::ops::Deref;
use bytes::Bytes;
use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct Path(pub Bytes);
impl<T: Into<Bytes>> From<T> for Path {
fn from(value: T) -> Self {
Self(value.into())
}
}
impl Deref for Path {
type Target = [u8];
fn deref(&self) -> &Self::Target {
self.as_ref()
}
}
impl AsRef<[u8]> for Path {
fn as_ref(&self) -> &[u8] {
self.0.as_ref()
}
}
#[cfg(test)]
mod test {
use crate::message::test_utils::{encode_decode, fail_decode, BYTES_INVALID, BYTES_VALID};
use super::Path;
use bytes::Bytes;
#[test]
fn encode_success() {
for (bytes, encoded) in BYTES_VALID {
encode_decode(Path(Bytes::from_static(bytes)), encoded);
}
}
#[test]
fn decode_failure() {
for (bytes, expected) in BYTES_INVALID {
assert_eq!(fail_decode::<Path>(bytes), expected);
}
}
}