@@ -88,19 +88,33 @@ impl Selector {
88
88
Value :: Array ( a) => Box :: new ( a. iter ( ) ) ,
89
89
_ => Box :: new ( std:: iter:: empty ( ) ) ,
90
90
} ,
91
- Selector :: DescendantDotName ( name) => Self :: traverse ( input, move |n : & ' a Value | Box :: new ( n. get ( name) . into_iter ( ) ) ) ,
92
- Selector :: DescendantDotWildcard => Self :: traverse ( input, move |n : & ' a Value | Box :: new ( iter:: once ( n) ) ) ,
93
- Selector :: DescendantUnionElement ( element) => Self :: traverse ( input, move |n : & ' a Value | element. find ( n) ) ,
91
+ Selector :: DescendantDotName ( name) => {
92
+ Self :: traverse ( input, move |n : & ' a Value | Box :: new ( n. get ( name) . into_iter ( ) ) )
93
+ }
94
+ Selector :: DescendantDotWildcard => {
95
+ Self :: traverse ( input, move |n : & ' a Value | Box :: new ( iter:: once ( n) ) )
96
+ }
97
+ Selector :: DescendantUnionElement ( element) => {
98
+ Self :: traverse ( input, move |n : & ' a Value | element. find ( n) )
99
+ }
94
100
}
95
101
}
96
102
97
103
// traverse applies the given closure to all the descendants of the input value and
98
104
// returns a nodelist.
99
105
fn traverse < ' a , F > ( input : & ' a Value , f : F ) -> NodeList < ' a >
100
- where F : Fn ( & ' a Value ) -> NodeList < ' a > + Copy + ' a {
106
+ where
107
+ F : Fn ( & ' a Value ) -> NodeList < ' a > + Copy + ' a ,
108
+ {
101
109
match input {
102
- Value :: Object ( m) => Box :: new ( m. into_iter ( ) . flat_map ( move |( _k, v) | ( & f) ( v) . chain ( Self :: traverse :: < ' a > ( v, f) ) ) ) ,
103
- Value :: Array ( a) => Box :: new ( a. iter ( ) . flat_map ( move |v| ( & f) ( v) . chain ( Self :: traverse :: < ' a > ( v, f) ) ) ) ,
110
+ Value :: Object ( m) => Box :: new (
111
+ m. into_iter ( )
112
+ . flat_map ( move |( _k, v) | ( & f) ( v) . chain ( Self :: traverse :: < ' a > ( v, f) ) ) ,
113
+ ) ,
114
+ Value :: Array ( a) => Box :: new (
115
+ a. iter ( )
116
+ . flat_map ( move |v| ( & f) ( v) . chain ( Self :: traverse :: < ' a > ( v, f) ) ) ,
117
+ ) ,
104
118
_ => Box :: new ( std:: iter:: empty ( ) ) ,
105
119
}
106
120
}
0 commit comments