fn fmt()

in reverie-ptrace/src/gdbstub/logger.rs [44:80]


    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self.direction {
            Direction::In => write!(f, "<-- ")?,
            Direction::Out => write!(f, "--> ")?,
        }

        let nb_left = if self.body.len() > MAX_BYTES_DISPLAY {
            Some(self.body.len() - MAX_BYTES_DISPLAY)
        } else {
            None
        };
        write!(f, "b\"")?;
        for &b in self.body.iter().take(MAX_BYTES_DISPLAY) {
            if b == b'\n' {
                write!(f, "\\n")?;
            } else if b == b'\r' {
                write!(f, "\\r")?;
            } else if b == b'\t' {
                write!(f, "\\t")?;
            } else if b == b'\\' || b == b'"' {
                write!(f, "\\{}", b as char)?;
            } else if b == b'\0' {
                write!(f, "\\0")?;
            // ASCII printable
            } else if (0x20..0x7f).contains(&b) {
                write!(f, "{}", b as char)?;
            } else {
                write!(f, "\\x{:02x}", b)?;
            }
        }
        if let Some(nb) = nb_left {
            write!(f, "[{} bytes omitted]", nb)?;
        }
        write!(f, "#{:02x}", self.checksum)?;
        write!(f, "\"")?;
        Ok(())
    }