kaspa_utils/serde_bytes_fixed/
ser.rs1use serde::ser::SerializeTuple;
2use serde::Serializer;
3use std::str;
4
5pub trait Serialize<const N: usize> {
7 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
9 where
10 S: Serializer;
11}
12
13impl<const N: usize> Serialize<N> for [u8; N] {
14 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
15 where
16 S: Serializer,
17 {
18 if serializer.is_human_readable() {
19 let mut hex = vec![0u8; self.len() * 2];
20 faster_hex::hex_encode(self, &mut hex[..]).map_err(serde::ser::Error::custom)?;
21 serializer.serialize_str(unsafe { str::from_utf8_unchecked(&hex) })
22 } else {
23 let mut t = serializer.serialize_tuple(self.len())?;
24 for v in self {
25 t.serialize_element(v)?;
26 }
27 t.end()
28 }
29 }
30}