1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use std::fmt;
pub use custom_debug_derive::*;
pub fn hexbuf(v: &impl AsRef<[u8]>, f: &mut fmt::Formatter) -> std::fmt::Result {
write!(f, "b\"")?;
for x in v.as_ref() {
write!(f, "\\x{:02x}", x)?;
}
write!(f, "\"")?;
Ok(())
}
pub fn hexbuf_str(v: &impl AsRef<[u8]>, f: &mut fmt::Formatter) -> std::fmt::Result {
write!(f, "b\"")?;
for x in v.as_ref() {
match x {
b'\\' => write!(f, "\\\\")?,
b'"' => write!(f, "\\\"")?,
b if b.is_ascii_graphic() => write!(f, "{}", *x as char)?,
_ => write!(f, "\\x{:02x}", x)?,
}
}
write!(f, "\"")?;
Ok(())
}