Skip to main content

kaspa_utils/serde_bytes/
mod.rs

1mod de;
2mod ser;
3
4pub use crate::serde_bytes::de::{Deserialize, FromHexVisitor};
5pub use crate::serde_bytes::ser::Serialize;
6
7pub fn serialize<T, S>(bytes: &T, serializer: S) -> Result<S::Ok, S::Error>
8where
9    T: ?Sized + Serialize,
10    S: serde::Serializer,
11{
12    Serialize::serialize(bytes, serializer)
13}
14pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
15where
16    T: Deserialize<'de>,
17    D: serde::Deserializer<'de>,
18{
19    Deserialize::deserialize(deserializer)
20}
21
22/// Borrowed byte-slice newtype that serializes through this module's helpers.
23/// Mirrors `serde_bytes::Bytes` from the upstream crate.
24#[repr(transparent)]
25pub struct Bytes<'a>(pub &'a [u8]);
26
27impl serde::Serialize for Bytes<'_> {
28    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
29        serialize(&self.0, serializer)
30    }
31}
32
33/// Owned byte-buffer newtype that deserializes through this module's helpers.
34/// Mirrors `serde_bytes::ByteBuf` from the upstream crate.
35#[derive(serde::Deserialize)]
36#[repr(transparent)]
37pub struct ByteBuf(#[serde(with = "crate::serde_bytes")] pub alloc::vec::Vec<u8>);