kaspa_utils/serde_bytes/
ser.rs

1use serde::Serializer;
2use std::str::{self};
3
4pub trait Serialize {
5    #[allow(missing_docs)]
6    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
7    where
8        S: Serializer;
9}
10
11impl<T: AsRef<[u8]>> Serialize for T {
12    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
13    where
14        S: Serializer,
15    {
16        if serializer.is_human_readable() {
17            let mut hex = vec![0u8; self.as_ref().len() * 2];
18            faster_hex::hex_encode(self.as_ref(), &mut hex[..]).map_err(serde::ser::Error::custom)?;
19            serializer.serialize_str(unsafe { str::from_utf8_unchecked(&hex) })
20        } else {
21            serializer.serialize_bytes(self.as_ref())
22        }
23    }
24}