22 BodyCursor , BorrowedValueDeserializer , Cursor , PropCursor , RefDtb , RegConfig ,
33 StructDeserializer ,
44} ;
5+ use core:: fmt:: Debug ;
56use core:: marker:: PhantomData ;
67use serde:: { de, Deserialize } ;
78
@@ -103,7 +104,7 @@ impl<'de> Node<'de> {
103104
104105 /// 获得属性迭代器。
105106 pub const fn props < ' b > ( & ' b self ) -> Option < PropIter < ' de , ' b > > {
106- match self . nodes_start {
107+ match self . props_start {
107108 None => None ,
108109 Some ( node_cursor) => Some ( PropIter {
109110 node : self ,
@@ -114,6 +115,42 @@ impl<'de> Node<'de> {
114115 }
115116}
116117
118+ impl Debug for Node < ' _ > {
119+ fn fmt ( & self , f : & mut core:: fmt:: Formatter < ' _ > ) -> core:: fmt:: Result {
120+ let props = self . props ( ) ;
121+ write ! ( f, "Props: [" ) ?;
122+ if let Some ( s) = props {
123+ let mut first_written = true ;
124+ for prop in s {
125+ if first_written {
126+ write ! ( f, "\" {}\" " , prop. get_name( ) ) ?;
127+ first_written = false ;
128+ } else {
129+ write ! ( f, ",\" {}\" " , prop. get_name( ) ) ?;
130+ }
131+ }
132+ }
133+ write ! ( f, "]\n " ) ?;
134+
135+ let children = self . nodes ( ) ;
136+ write ! ( f, "Children: [" ) ?;
137+ if let Some ( s) = children {
138+ let mut first_written = true ;
139+ for child in s {
140+ if first_written {
141+ write ! ( f, "\" {}\" " , child. get_full_name( ) ) ?;
142+ first_written = false ;
143+ } else {
144+ write ! ( f, ",\" {}\" " , child. get_full_name( ) ) ?;
145+ }
146+ }
147+ }
148+ write ! ( f, "]\n " ) ?;
149+
150+ Ok ( ( ) )
151+ }
152+ }
153+
117154impl < ' de , ' b > Iterator for NodeIter < ' de , ' b > {
118155 type Item = NodeItem < ' de > ;
119156
0 commit comments