File tree 8 files changed +55
-0
lines changed
8 files changed +55
-0
lines changed Original file line number Diff line number Diff line change @@ -149,8 +149,15 @@ impl<'a> Iterator for ListIter<'a> {
149
149
self . index += 1 ;
150
150
value
151
151
}
152
+
153
+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
154
+ let size = self . list . len ( ) ;
155
+ ( size, Some ( size) )
156
+ }
152
157
}
153
158
159
+ impl < ' a > ExactSizeIterator for ListIter < ' a > { }
160
+
154
161
#[ inline]
155
162
pub fn list_apply < L : List > ( a : & mut L , b : & dyn Reflect ) {
156
163
if let ReflectRef :: List ( list_value) = b. reflect_ref ( ) {
Original file line number Diff line number Diff line change @@ -167,8 +167,15 @@ impl<'a> Iterator for MapIter<'a> {
167
167
self . index += 1 ;
168
168
value
169
169
}
170
+
171
+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
172
+ let size = self . map . len ( ) ;
173
+ ( size, Some ( size) )
174
+ }
170
175
}
171
176
177
+ impl < ' a > ExactSizeIterator for MapIter < ' a > { }
178
+
172
179
#[ inline]
173
180
pub fn map_partial_eq < M : Map > ( a : & M , b : & dyn Reflect ) -> Option < bool > {
174
181
let map = if let ReflectRef :: Map ( map) = b. reflect_ref ( ) {
Original file line number Diff line number Diff line change @@ -37,8 +37,15 @@ impl<'a> Iterator for FieldIter<'a> {
37
37
self . index += 1 ;
38
38
value
39
39
}
40
+
41
+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
42
+ let size = self . struct_val . field_len ( ) ;
43
+ ( size, Some ( size) )
44
+ }
40
45
}
41
46
47
+ impl < ' a > ExactSizeIterator for FieldIter < ' a > { }
48
+
42
49
pub trait GetField {
43
50
fn get_field < T : Reflect > ( & self , name : & str ) -> Option < & T > ;
44
51
fn get_field_mut < T : Reflect > ( & mut self , name : & str ) -> Option < & mut T > ;
Original file line number Diff line number Diff line change @@ -32,8 +32,15 @@ impl<'a> Iterator for TupleFieldIter<'a> {
32
32
self . index += 1 ;
33
33
value
34
34
}
35
+
36
+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
37
+ let size = self . tuple . field_len ( ) ;
38
+ ( size, Some ( size) )
39
+ }
35
40
}
36
41
42
+ impl < ' a > ExactSizeIterator for TupleFieldIter < ' a > { }
43
+
37
44
pub trait GetTupleField {
38
45
fn get_field < T : Reflect > ( & self , index : usize ) -> Option < & T > ;
39
46
fn get_field_mut < T : Reflect > ( & mut self , index : usize ) -> Option < & mut T > ;
Original file line number Diff line number Diff line change @@ -32,8 +32,15 @@ impl<'a> Iterator for TupleStructFieldIter<'a> {
32
32
self . index += 1 ;
33
33
value
34
34
}
35
+
36
+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
37
+ let size = self . tuple_struct . field_len ( ) ;
38
+ ( size, Some ( size) )
39
+ }
35
40
}
36
41
42
+ impl < ' a > ExactSizeIterator for TupleStructFieldIter < ' a > { }
43
+
37
44
pub trait GetTupleStructField {
38
45
fn get_field < T : Reflect > ( & self , index : usize ) -> Option < & T > ;
39
46
fn get_field_mut < T : Reflect > ( & mut self , index : usize ) -> Option < & mut T > ;
Original file line number Diff line number Diff line change @@ -118,8 +118,15 @@ impl<'a> Iterator for RenderResourceIterator<'a> {
118
118
Some ( render_resource)
119
119
}
120
120
}
121
+
122
+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
123
+ let size = self . render_resources . render_resources_len ( ) ;
124
+ ( size, Some ( size) )
125
+ }
121
126
}
122
127
128
+ impl < ' a > ExactSizeIterator for RenderResourceIterator < ' a > { }
129
+
123
130
#[ macro_export]
124
131
macro_rules! impl_render_resource_bytes {
125
132
( $ty: ident) => {
Original file line number Diff line number Diff line change @@ -228,8 +228,17 @@ impl<'a> Iterator for ShaderStagesIterator<'a> {
228
228
self . state += 1 ;
229
229
ret
230
230
}
231
+
232
+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
233
+ if self . shader_stages . fragment . is_some ( ) {
234
+ return ( 2 , Some ( 2 ) ) ;
235
+ }
236
+ ( 1 , Some ( 1 ) )
237
+ }
231
238
}
232
239
240
+ impl < ' a > ExactSizeIterator for ShaderStagesIterator < ' a > { }
241
+
233
242
impl ShaderStages {
234
243
pub fn new ( vertex_shader : Handle < Shader > ) -> Self {
235
244
ShaderStages {
Original file line number Diff line number Diff line change @@ -49,6 +49,10 @@ impl<'a> Iterator for ShaderDefIterator<'a> {
49
49
}
50
50
}
51
51
}
52
+
53
+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
54
+ ( 0 , Some ( self . shader_defs . shader_defs_len ( ) ) )
55
+ }
52
56
}
53
57
54
58
impl ShaderDef for bool {
You can’t perform that action at this time.
0 commit comments