mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #17503 - frewsxcv:frewsxcv-return-node-list-2, r=mbrubeck
Replace iterator struct with anonymous return iterator types. Similar to https://github.com/servo/servo/pull/17488. <!-- 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/17503) <!-- Reviewable:end -->
This commit is contained in:
commit
1d045e5c3b
1 changed files with 6 additions and 30 deletions
|
@ -224,11 +224,9 @@ impl HTMLCollection {
|
|||
|
||||
pub fn elements_iter_after<'a>(&'a self, after: &'a Node) -> impl Iterator<Item=Root<Element>> + 'a {
|
||||
// Iterate forwards from a node.
|
||||
HTMLCollectionElementsIter {
|
||||
node_iter: after.following_nodes(&self.root),
|
||||
root: Root::from_ref(&self.root),
|
||||
filter: &self.filter,
|
||||
}
|
||||
after.following_nodes(&self.root)
|
||||
.filter_map(Root::downcast)
|
||||
.filter(move |element| self.filter.filter(&element, &self.root))
|
||||
}
|
||||
|
||||
pub fn elements_iter<'a>(&'a self) -> impl Iterator<Item=Root<Element>> + 'a {
|
||||
|
@ -238,11 +236,9 @@ impl HTMLCollection {
|
|||
|
||||
pub fn elements_iter_before<'a>(&'a self, before: &'a Node) -> impl Iterator<Item=Root<Element>> + 'a {
|
||||
// Iterate backwards from a node.
|
||||
HTMLCollectionElementsIter {
|
||||
node_iter: before.preceding_nodes(&self.root),
|
||||
root: Root::from_ref(&self.root),
|
||||
filter: &self.filter,
|
||||
}
|
||||
before.preceding_nodes(&self.root)
|
||||
.filter_map(Root::downcast)
|
||||
.filter(move |element| self.filter.filter(&element, &self.root))
|
||||
}
|
||||
|
||||
pub fn root_node(&self) -> Root<Node> {
|
||||
|
@ -250,26 +246,6 @@ impl HTMLCollection {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: Make this generic, and avoid code duplication
|
||||
struct HTMLCollectionElementsIter<'a, I> {
|
||||
node_iter: I,
|
||||
root: Root<Node>,
|
||||
filter: &'a Box<CollectionFilter>,
|
||||
}
|
||||
|
||||
impl<'a, I: Iterator<Item=Root<Node>>> Iterator for HTMLCollectionElementsIter<'a, I> {
|
||||
type Item = Root<Element>;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
let filter = &self.filter;
|
||||
let root = &self.root;
|
||||
self.node_iter.by_ref()
|
||||
.filter_map(Root::downcast)
|
||||
.filter(|element| filter.filter(&element, root))
|
||||
.next()
|
||||
}
|
||||
}
|
||||
|
||||
impl HTMLCollectionMethods for HTMLCollection {
|
||||
// https://dom.spec.whatwg.org/#dom-htmlcollection-length
|
||||
fn Length(&self) -> u32 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue