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}