mod de;
mod ser;
pub use crate::serde_bytes::de::{Deserialize, FromHexVisitor};
pub use crate::serde_bytes::ser::Serialize;
pub fn serialize<T, S>(bytes: &T, serializer: S) -> Result<S::Ok, S::Error>
where
T: ?Sized + Serialize,
S: serde::Serializer,
{
Serialize::serialize(bytes, serializer)
}
pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
where
T: Deserialize<'de>,
D: serde::Deserializer<'de>,
{
Deserialize::deserialize(deserializer)
}
#[repr(transparent)]
pub struct Bytes<'a>(pub &'a [u8]);
impl serde::Serialize for Bytes<'_> {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
serialize(&self.0, serializer)
}
}
#[derive(serde::Deserialize)]
#[repr(transparent)]
pub struct ByteBuf(#[serde(with = "crate::serde_bytes")] pub alloc::vec::Vec<u8>);