Provide better size_hint for QueryIter (#1697)
This PR overrides the default size_hint for QueryIter. This is mainly done to provide inline documentation of Issue #1686.
This commit is contained in:
parent
dd4a196329
commit
c78b76bba8
@ -123,6 +123,20 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: For unfiltered Queries this should actually return a exact size hint,
|
||||||
|
// to fulfil the ExactSizeIterator invariant, but this isn't practical without specialization.
|
||||||
|
// For more information see Issue #1686.
|
||||||
|
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||||
|
let max_size = self
|
||||||
|
.query_state
|
||||||
|
.matched_archetypes
|
||||||
|
.ones()
|
||||||
|
.map(|index| self.world.archetypes[ArchetypeId::new(index)].len())
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
(0, Some(max_size))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: We can cheaply implement this for unfiltered Queries because we have:
|
// NOTE: We can cheaply implement this for unfiltered Queries because we have:
|
||||||
|
Loading…
Reference in New Issue
Block a user