fn serialize()

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()
    }