in reverie-ptrace/src/gdbstub/hex.rs [104:123]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
if self.bytes.is_empty() || self.bytes.len() % 2 != 0 {
return Err(ser::Error::custom(GdbHexError::InvalidGdbHex));
}
let mut seq = serializer.serialize_seq(Some(self.bytes.len() / 2))?;
let mut j = 0;
while j < self.bytes.len() {
let val: u8 = from_hex(self.bytes[j])
.ok_or_else(|| ser::Error::custom(GdbHexError::NotAscii))?
* 16
+ from_hex(self.bytes[j + 1])
.ok_or_else(|| ser::Error::custom(GdbHexError::NotAscii))?;
seq.serialize_element(&val)?;
j += 2;
}
seq.end()
}