@@ -14,18 +14,14 @@ impl<'a> ValueWalker {
1414 Value :: Object ( map) => {
1515 map. values ( ) . into_iter ( ) . for_each ( |v_el| {
1616 let ptr_el = v_el as * const Value ;
17- if !parents. contains_key ( & ptr_el) {
18- parents. insert ( ptr_el, v) ;
19- }
17+ parents. entry ( ptr_el) . or_insert ( v) ;
2018 acc. push ( v_el)
2119 } )
2220 } ,
2321 Value :: Array ( vec) => {
2422 vec. iter ( ) . for_each ( |v_el| {
2523 let ptr_el = v_el as * const Value ;
26- if !parents. contains_key ( & ptr_el) {
27- parents. insert ( ptr_el, v) ;
28- }
24+ parents. entry ( ptr_el) . or_insert ( v) ;
2925 acc. push ( v_el)
3026 } )
3127 }
@@ -40,9 +36,7 @@ impl<'a> ValueWalker {
4036 if let Value :: Object ( map) = v {
4137 if let Some ( v_el) = map. get ( key) {
4238 let ptr_el = v_el as * const Value ;
43- if !parents. contains_key ( & ptr_el) {
44- parents. insert ( ptr_el, v) ;
45- }
39+ parents. entry ( ptr_el) . or_insert ( v) ;
4640 acc. push ( v_el) ;
4741 }
4842 }
@@ -55,9 +49,7 @@ impl<'a> ValueWalker {
5549 if let Value :: Array ( vec) = v {
5650 if let Some ( v_el) = vec. get ( utils:: abs_index ( index as isize , vec. len ( ) ) ) {
5751 let ptr_el = v_el as * const Value ;
58- if !parents. contains_key ( & ptr_el) {
59- parents. insert ( ptr_el, v) ;
60- }
52+ parents. entry ( ptr_el) . or_insert ( v) ;
6153 acc. push ( v_el) ;
6254 }
6355 }
@@ -90,9 +82,7 @@ impl<'a> ValueWalker {
9082 if let Value :: Object ( map) = v {
9183 path_keys. iter ( ) . for_each ( |pk| if let Some ( v_el) = map. get ( pk. get_key ( ) ) {
9284 let ptr_el = v_el as * const Value ;
93- if !parents. contains_key ( & ptr_el) {
94- parents. insert ( ptr_el, v) ;
95- }
85+ parents. entry ( ptr_el) . or_insert ( v) ;
9686 acc. push ( v_el)
9787 } ) ;
9888 }
@@ -132,18 +122,14 @@ impl<'a> ValueWalker {
132122 Value :: Array ( vec) => {
133123 vec. iter ( ) . for_each ( |v_el| {
134124 let ptr_el = v_el as * const Value ;
135- if !parents. contains_key ( & ptr_el) {
136- parents. insert ( ptr_el, v) ;
137- }
125+ parents. entry ( ptr_el) . or_insert ( v) ;
138126 Self :: _walk ( parents, v_el, acc, fun)
139127 } ) ;
140128 }
141129 Value :: Object ( map) => {
142130 map. values ( ) . into_iter ( ) . for_each ( |v_el| {
143131 let ptr_el = v_el as * const Value ;
144- if !parents. contains_key ( & ptr_el) {
145- parents. insert ( ptr_el, v) ;
146- }
132+ parents. entry ( ptr_el) . or_insert ( v) ;
147133 Self :: _walk ( parents, v_el, acc, fun)
148134 } ) ;
149135 }
@@ -207,9 +193,7 @@ impl<'a> ValueWalker {
207193 }
208194 vec. iter ( ) . for_each ( |v_el| {
209195 let ptr_el = v_el as * const Value ;
210- if !parents. contains_key ( & ptr_el) {
211- parents. insert ( ptr_el, v) ;
212- }
196+ parents. entry ( ptr_el) . or_insert ( v) ;
213197 Self :: walk_dedup ( parents, v_el, key, visited, index, is_contain, is_not_contain, depth + 1 ) ;
214198 } )
215199 }
0 commit comments