上文,我们直接通过println!将取得—回复打印在了终端上,这种方便我们调试,但有且只有这么一个优点。在数据最终显示的时候,我们需要数据展示更加人性化。
代码如下:
pub fn display(&self) -> String {
match self {
Reply::Status(s) => format!("{}\n", s),
Reply::Error(s) => format!("{}\n", s),
Reply::Int(s) => format!("{}\n", s),
Reply::Bulk(opt) => {
if let Some(s) = opt {
format!("\"{}”\n", s)
} else {
format!("NULL\n")
}
}
Reply::MultiBulk(opt) => {
if let Some(reply_vec) = opt {
if reply_vec.len() == 0 {
format!("Empty\n")
} else {
let mut res = String::new();
for reply in reply_vec.iter() {
res = res + &reply.display()
}
res
}
} else {
format!("NULL\n")
}
}
}
}
这里主要是将回复数据—-> 字符串。