pub fn serialize_opt_bytes_as_hex<S>(bytes: &Option<Vec<u8>>, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match bytes {
Some(b) => {
let hex_string = b.iter()
.map(|byte| format!("{:02x}", byte))
.collect::<String>();
serializer.serialize_str(&hex_string)
}
None => serializer.serialize_none(),
}
}
pub fn serialize_vec_bytes_as_hex<S>(vec_bytes: &Vec<Vec<u8>>, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
use serde::ser::SerializeSeq;
let mut seq = serializer.serialize_seq(Some(vec_bytes.len()))?;
for bytes in vec_bytes {
let hex_string = bytes.iter()
.map(|byte| format!("{:02x}", byte))
.collect::<String>();
seq.serialize_element(&hex_string)?;
}
seq.end()
}
pub fn serialize_opt_vec_bytes_as_hex<S>(vec_bytes: &Option<Vec<Vec<u8>>>, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match vec_bytes {
Some(v) => serialize_vec_bytes_as_hex(v, serializer),
None => serializer.serialize_none(),
}
}