1use super::Buffer;
2
3impl core::fmt::Debug for Buffer {
4 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6 let slice = self.as_slice();
7 write!(f, "b\"")?;
8 for &b in slice {
9 if b == b'\n' {
11 write!(f, "\\n")?;
12 } else if b == b'\r' {
13 write!(f, "\\r")?;
14 } else if b == b'\t' {
15 write!(f, "\\t")?;
16 } else if b == b'\\' || b == b'"' {
17 write!(f, "\\{}", b as char)?;
18 } else if b == b'\0' {
19 write!(f, "\\0")?;
20 } else if (0x20..0x7f).contains(&b) {
22 write!(f, "{}", b as char)?;
23 } else {
24 write!(f, "\\x{:02x}", b)?;
25 }
26 }
27 write!(f, "\"")?;
28 Ok(())
29 }
30}
31
32impl core::fmt::LowerHex for Buffer {
33 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
34 for &b in self.as_slice() {
35 write!(f, "{:02x}", b)?;
36 }
37 Ok(())
38 }
39}
40
41impl core::fmt::UpperHex for Buffer {
42 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
43 for &b in self.as_slice() {
44 write!(f, "{:02X}", b)?;
45 }
46 Ok(())
47 }
48}
49
50impl core::fmt::Write for Buffer {
51 #[cfg_attr(not(coverage), inline(always))]
52 fn write_str(&mut self, s: &str) -> core::fmt::Result {
53 if self.remaining_mut() >= s.len() {
54 self.put_slice(s.as_bytes());
55 Ok(())
56 } else {
57 Err(core::fmt::Error)
58 }
59 }
60}