File size: 1,362 Bytes
84d2a97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
use std::fmt;

#[derive(Copy, Clone, Debug)]
pub struct SerdeValue<'a>(pub &'a serde_value::Value);

impl<'a> fmt::Display for SerdeValue<'a> {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let val: &dyn fmt::Display = match &self.0 {
            serde_value::Value::Bool(val) => val,
            serde_value::Value::U8(val) => val,
            serde_value::Value::U16(val) => val,
            serde_value::Value::U32(val) => val,
            serde_value::Value::U64(val) => val,
            serde_value::Value::I8(val) => val,
            serde_value::Value::I16(val) => val,
            serde_value::Value::I32(val) => val,
            serde_value::Value::I64(val) => val,
            serde_value::Value::F32(val) => val,
            serde_value::Value::F64(val) => val,
            serde_value::Value::Char(val) => val,
            serde_value::Value::String(val) => val,
            serde_value::Value::Unit => &"Unit",
            serde_value::Value::Option(val) => return write!(f, "{val:?}"),
            serde_value::Value::Newtype(val) => return write!(f, "{val:?}"),
            serde_value::Value::Seq(val) => return write!(f, "{val:?}"),
            serde_value::Value::Map(val) => return write!(f, "{val:?}"),
            serde_value::Value::Bytes(val) => return write!(f, "{val:?}"),
        };

        val.fmt(f)
    }
}