mirror of
https://github.com/servo/servo.git
synced 2025-08-02 12:10:29 +01:00
Auto merge of #18494 - frewsxcv:frewsxcv-size-hint, r=jdm
Implement `size_hint` for more iterators. ``` implement size hint for more iterators because why not we like fast things ``` <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18494) <!-- Reviewable:end -->
This commit is contained in:
commit
bb2030a493
8 changed files with 36 additions and 0 deletions
|
@ -765,6 +765,10 @@ impl<'a> Iterator for AbsoluteDescendantIter<'a> {
|
|||
fn next(&mut self) -> Option<&'a mut Flow> {
|
||||
self.iter.next().map(|info| FlowRef::deref_mut(&mut info.flow))
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
}
|
||||
|
||||
pub type AbsoluteDescendantOffsetIter<'a> = Zip<AbsoluteDescendantIter<'a>, IterMut<'a, Au>>;
|
||||
|
|
|
@ -979,6 +979,10 @@ impl InlineFlow {
|
|||
self.iter.next()
|
||||
}
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
}
|
||||
|
||||
// If the bidi embedding direction is opposite the layout direction, lay out this
|
||||
|
|
|
@ -440,4 +440,12 @@ impl<I, J, K, T> Iterator for Choice3<I, J, K>
|
|||
Choice3::Third(ref mut k) => k.next(),
|
||||
}
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
match *self {
|
||||
Choice3::First(ref i) => i.size_hint(),
|
||||
Choice3::Second(ref j) => j.size_hint(),
|
||||
Choice3::Third(ref k) => k.size_hint(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -487,6 +487,10 @@ impl<I> Iterator for FragmentParsingResult<I>
|
|||
next.remove_self();
|
||||
Some(next)
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.inner.size_hint()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(HeapSizeOf, JSTraceable, PartialEq)]
|
||||
|
|
|
@ -170,6 +170,10 @@ impl Iterator for EffectiveSources {
|
|||
fn next(&mut self) -> Option<Source> {
|
||||
self.0.pop()
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
(self.0.len(), Some(self.0.len()))
|
||||
}
|
||||
}
|
||||
|
||||
struct FontFaceRuleParser<'a, 'b: 'a> {
|
||||
|
|
|
@ -99,6 +99,10 @@ impl<'a> Iterator for DeclarationImportanceIterator<'a> {
|
|||
self.iter.next().map(|(decl, important)|
|
||||
(decl, if important { Importance::Important } else { Importance::Normal }))
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.iter.size_hint()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> DoubleEndedIterator for DeclarationImportanceIterator<'a> {
|
||||
|
|
|
@ -45,6 +45,10 @@ where
|
|||
fn next(&mut self) -> Option<Self::Item> {
|
||||
self.0.next().map(|entry| &entry.sheet)
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
self.0.size_hint()
|
||||
}
|
||||
}
|
||||
|
||||
/// An iterator over the flattened view of the stylesheet collections.
|
||||
|
|
|
@ -198,6 +198,10 @@ impl<'a, 'cx, 'cx_a: 'cx, S: ToComputedValue + 'a> Iterator for ComputedVecIter<
|
|||
None
|
||||
}
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
(self.values.len(), Some(self.values.len()))
|
||||
}
|
||||
}
|
||||
|
||||
/// A trait to represent the conversion between computed and specified values.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue