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