@@ -208,9 +208,11 @@ where
208208
209209#[ cfg( test) ]
210210mod tests {
211+ use std:: option;
212+
211213 use bevy_ecs:: {
212214 component:: Component ,
213- entity:: { Entity , EntityHashMap , EntityMapper , MapEntities } ,
215+ entity:: { Entity , EntityHashMap , EntityMapper , IterEntities , IterEntitiesMut , MapEntities } ,
214216 reflect:: {
215217 AppTypeRegistry , ReflectComponent , ReflectMapEntities , ReflectMapEntitiesResource ,
216218 ReflectResource ,
@@ -231,10 +233,17 @@ mod tests {
231233 entity_b : Entity ,
232234 }
233235
234- impl MapEntities for TestResource {
235- fn map_entities < M : EntityMapper > ( & mut self , entity_mapper : & mut M ) {
236- self . entity_a = entity_mapper. map_entity ( self . entity_a ) ;
237- self . entity_b = entity_mapper. map_entity ( self . entity_b ) ;
236+ impl IterEntitiesMut for TestResource {
237+ fn iter_entities_mut ( & mut self ) -> impl Iterator < Item = & mut Entity > {
238+ Some ( & mut self . entity_a )
239+ . into_iter ( )
240+ . chain ( Some ( & mut self . entity_b ) )
241+ }
242+ }
243+
244+ impl IterEntities for TestResource {
245+ fn iter_entities ( & self ) -> impl Iterator < Item = Entity > {
246+ Some ( self . entity_a ) . into_iter ( ) . chain ( Some ( self . entity_b ) )
238247 }
239248 }
240249
@@ -366,9 +375,19 @@ mod tests {
366375 #[ reflect( Component , MapEntities ) ]
367376 struct B ( pub Entity ) ;
368377
369- impl MapEntities for B {
370- fn map_entities < M : EntityMapper > ( & mut self , entity_mapper : & mut M ) {
371- self . 0 = entity_mapper. map_entity ( self . 0 ) ;
378+ impl < ' a > IntoIterator for & ' a B {
379+ type IntoIter = option:: IntoIter < Entity > ;
380+ type Item = <Self :: IntoIter as Iterator >:: Item ;
381+ fn into_iter ( self ) -> Self :: IntoIter {
382+ Some ( self . 0 ) . into_iter ( )
383+ }
384+ }
385+
386+ impl < ' a > IntoIterator for & ' a mut B {
387+ type IntoIter = option:: IntoIter < & ' a mut Entity > ;
388+ type Item = <Self :: IntoIter as Iterator >:: Item ;
389+ fn into_iter ( self ) -> Self :: IntoIter {
390+ Some ( & mut self . 0 ) . into_iter ( )
372391 }
373392 }
374393
0 commit comments