diff options
Diffstat (limited to 'ecs/src/component/storage')
-rw-r--r-- | ecs/src/component/storage/archetype.rs | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/ecs/src/component/storage/archetype.rs b/ecs/src/component/storage/archetype.rs index f8c204b..56dd5ae 100644 --- a/ecs/src/component/storage/archetype.rs +++ b/ecs/src/component/storage/archetype.rs @@ -155,7 +155,7 @@ impl Archetype inner: Either::B( [component_id] .into_iter() - .zip(self.get_index_for_component(component_id).into_iter()), + .zip(self.get_index_for_component(component_id)), ), } } @@ -219,19 +219,20 @@ type MatchingComponentIterFilterFn = fn(&((usize, &Uid), Uid)) -> bool; type MatchingComponentIterMapFn = fn(((usize, &Uid), Uid)) -> (Uid, usize); +type InnerMatchingComponentIterA<'archetype> = Map< + Filter< + Zip<Enumerate<SliceIter<'archetype, Uid>>, RepeatN<Uid>>, + MatchingComponentIterFilterFn, + >, + MatchingComponentIterMapFn, +>; + +type InnerMatchingComponentIterB = Zip<ArrayIntoIter<Uid, 1>, OptionIntoIter<usize>>; + #[derive(Debug)] pub struct MatchingComponentIter<'archetype> { - inner: Either< - Map< - Filter< - Zip<Enumerate<SliceIter<'archetype, Uid>>, RepeatN<Uid>>, - MatchingComponentIterFilterFn, - >, - MatchingComponentIterMapFn, - >, - Zip<ArrayIntoIter<Uid, 1>, OptionIntoIter<usize>>, - >, + inner: Either<InnerMatchingComponentIterA<'archetype>, InnerMatchingComponentIterB>, } impl Iterator for MatchingComponentIter<'_> |