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