serde_yaml/value/
debug.rs

1use crate::mapping::Mapping;
2use crate::value::{Number, Value};
3use std::fmt::{self, Debug, Display};
4
5impl Debug for Value {
6    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
7        match self {
8            Value::Null => formatter.write_str("Null"),
9            Value::Bool(boolean) => write!(formatter, "Bool({})", boolean),
10            Value::Number(number) => write!(formatter, "Number({})", number),
11            Value::String(string) => write!(formatter, "String({:?})", string),
12            Value::Sequence(sequence) => {
13                formatter.write_str("Sequence ")?;
14                formatter.debug_list().entries(sequence).finish()
15            }
16            Value::Mapping(mapping) => Debug::fmt(mapping, formatter),
17            Value::Tagged(tagged) => Debug::fmt(tagged, formatter),
18        }
19    }
20}
21
22struct DisplayNumber<'a>(&'a Number);
23
24impl<'a> Debug for DisplayNumber<'a> {
25    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
26        Display::fmt(self.0, formatter)
27    }
28}
29
30impl Debug for Number {
31    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
32        write!(formatter, "Number({})", self)
33    }
34}
35
36impl Debug for Mapping {
37    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
38        formatter.write_str("Mapping ")?;
39        let mut debug = formatter.debug_map();
40        for (k, v) in self {
41            let tmp;
42            debug.entry(
43                match k {
44                    Value::Bool(boolean) => boolean,
45                    Value::Number(number) => {
46                        tmp = DisplayNumber(number);
47                        &tmp
48                    }
49                    Value::String(string) => string,
50                    _ => k,
51                },
52                v,
53            );
54        }
55        debug.finish()
56    }
57}