1use std::fmt::{self, Debug};
2use crate::list::{List, GrowableList, ListBuilder};
3use crate::map::{Map, BloomMap};
4use crate::set::{Set, BloomSet};
5
6impl<'arena, T> Debug for List<'arena, T>
7where
8 T: Debug,
9{
10 #[inline]
11 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12 f.debug_list().entries(self.iter()).finish()
13 }
14}
15
16impl<'arena, T> Debug for GrowableList<'arena, T>
17where
18 T: Debug,
19{
20 #[inline]
21 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
22 self.as_list().fmt(f)
23 }
24}
25
26impl<'arena, T> Debug for ListBuilder<'arena, T>
27where
28 T: Debug,
29{
30 #[inline]
31 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
32 self.as_list().fmt(f)
33 }
34}
35
36impl<'arena, K, V> Debug for Map<'arena, K, V>
37where
38 K: Debug,
39 V: Debug + Copy,
40{
41 #[inline]
42 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
43 f.debug_map().entries(self.iter()).finish()
44 }
45}
46
47impl<'arena, K, V> Debug for BloomMap<'arena, K, V>
48where
49 K: Debug,
50 V: Debug + Copy,
51{
52 #[inline]
53 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
54 f.debug_map().entries(self.iter()).finish()
55 }
56}
57
58impl<'arena, I> Debug for Set<'arena, I>
59where
60 I: Debug,
61{
62 #[inline]
63 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
64 f.debug_set().entries(self.iter()).finish()
65 }
66}
67
68impl<'arena, I> Debug for BloomSet<'arena, I>
69where
70 I: Debug,
71{
72 #[inline]
73 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
74 f.debug_set().entries(self.iter()).finish()
75 }
76}
77
78#[cfg(test)]
79mod test {
80 use super::*;
81 use crate::Arena;
82
83 #[test]
84 fn list_debug() {
85 let arena = Arena::new();
86 let list = List::from_iter(&arena, ["doge", "to", "the", "moon!"].iter().cloned());
87
88 let debug = format!("{:?}", list);
89
90 assert_eq!(debug, r#"["doge", "to", "the", "moon!"]"#);
91 }
92
93 #[test]
94 fn map_debug() {
95 let arena = Arena::new();
96 let map = Map::new();
97
98 map.insert(&arena, "foo", 10u64);
99 map.insert(&arena, "bar", 20);
100 map.insert(&arena, "doge", 30);
101
102 let debug = format!("{:?}", map);
103
104 assert_eq!(debug, r#"{"foo": 10, "bar": 20, "doge": 30}"#);
105 }
106
107 #[test]
108 fn bloom_map_debug() {
109 let arena = Arena::new();
110 let map = BloomMap::new();
111
112 map.insert(&arena, "foo", 10u64);
113 map.insert(&arena, "bar", 20);
114 map.insert(&arena, "doge", 30);
115
116 let debug = format!("{:?}", map);
117
118 assert_eq!(debug, r#"{"foo": 10, "bar": 20, "doge": 30}"#);
119 }
120
121 #[test]
122 fn set_debug() {
123 let arena = Arena::new();
124 let set = Set::new();
125
126 set.insert(&arena, "foo");
127 set.insert(&arena, "bar");
128 set.insert(&arena, "doge");
129
130 let debug = format!("{:?}", set);
131
132 assert_eq!(debug, r#"{"foo", "bar", "doge"}"#);
133 }
134
135 #[test]
136 fn bloom_set_debug() {
137 let arena = Arena::new();
138 let set = BloomSet::new();
139
140 set.insert(&arena, "foo");
141 set.insert(&arena, "bar");
142 set.insert(&arena, "doge");
143
144 let debug = format!("{:?}", set);
145
146 assert_eq!(debug, r#"{"foo", "bar", "doge"}"#);
147 }
148}