custom Debug for Reason (#151)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use std::fmt;
|
||||
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
|
||||
#[derive(PartialEq, Eq, Clone, Copy)]
|
||||
pub struct Reason(u32);
|
||||
|
||||
impl Reason {
|
||||
@@ -56,6 +56,39 @@ impl From<Reason> for u32 {
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for Reason {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
let name = match self.0 {
|
||||
0 => "NO_ERROR",
|
||||
1 => "PROTOCOL_ERROR",
|
||||
2 => "INTERNAL_ERROR",
|
||||
3 => "FLOW_CONTROL_ERROR",
|
||||
4 => "SETTINGS_TIMEOUT",
|
||||
5 => "STREAM_CLOSED",
|
||||
6 => "FRAME_SIZE_ERROR",
|
||||
7 => "REFUSED_STREAM",
|
||||
8 => "CANCEL",
|
||||
9 => "COMPRESSION_ERROR",
|
||||
10 => "CONNECT_ERROR",
|
||||
11 => "ENHANCE_YOUR_CALM",
|
||||
12 => "INADEQUATE_SECURITY",
|
||||
13 => "HTTP_1_1_REQUIRED",
|
||||
other => return f.debug_tuple("Reason")
|
||||
.field(&Hex(other))
|
||||
.finish(),
|
||||
};
|
||||
f.write_str(name)
|
||||
}
|
||||
}
|
||||
|
||||
struct Hex(u32);
|
||||
|
||||
impl fmt::Debug for Hex {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::LowerHex::fmt(&self.0, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Reason {
|
||||
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(fmt, "{}", self.description())
|
||||
|
||||
Reference in New Issue
Block a user