上文,我们直接通过println!将取得—回复打印在了终端上,这种方便我们调试,但有且只有这么一个优点。在数据最终显示的时候,我们需要数据展示更加人性化。
    代码如下:

    1. pub fn display(&self) -> String {
    2. match self {
    3. Reply::Status(s) => format!("{}\n", s),
    4. Reply::Error(s) => format!("{}\n", s),
    5. Reply::Int(s) => format!("{}\n", s),
    6. Reply::Bulk(opt) => {
    7. if let Some(s) = opt {
    8. format!("\"{}”\n", s)
    9. } else {
    10. format!("NULL\n")
    11. }
    12. }
    13. Reply::MultiBulk(opt) => {
    14. if let Some(reply_vec) = opt {
    15. if reply_vec.len() == 0 {
    16. format!("Empty\n")
    17. } else {
    18. let mut res = String::new();
    19. for reply in reply_vec.iter() {
    20. res = res + &reply.display()
    21. }
    22. res
    23. }
    24. } else {
    25. format!("NULL\n")
    26. }
    27. }
    28. }
    29. }

    这里主要是将回复数据—-> 字符串。