diff options
-rw-r--r-- | components/script/dom/node.rs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 23041d58a7b..28899bbd404 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -59,7 +59,7 @@ use libc; use libc::{uintptr_t, c_void}; use std::cell::{Cell, RefCell, Ref, RefMut}; use std::default::Default; -use std::iter::{Map, Filter, Peekable}; +use std::iter::{FilterMap, Peekable}; use std::mem; use style; use style::ComputedValues; @@ -777,13 +777,7 @@ impl<'a> NodeHelpers<'a> for JSRef<'a, Node> { fn child_elements(self) -> ChildElementIterator<'a> { self.children() - .filter(|node| { - node.is_element() - }) - .map(|node| { - let elem: JSRef<Element> = ElementCast::to_ref(node).unwrap(); - elem.clone() - }) + .filter_map::<JSRef<Element>>(ElementCast::to_ref) .peekable() } @@ -967,10 +961,12 @@ impl RawLayoutNodeHelpers for Node { // Iteration and traversal // -pub type ChildElementIterator<'a> = Peekable<JSRef<'a, Element>, - Map<'a, JSRef<'a, Node>, - JSRef<'a, Element>, - Filter<'a, JSRef<'a, Node>, NodeChildrenIterator<'a>>>>; +pub type ChildElementIterator<'a> = + Peekable<JSRef<'a, Element>, + FilterMap<'a, + JSRef<'a, Node>, + JSRef<'a, Element>, + NodeChildrenIterator<'a>>>; pub struct NodeChildrenIterator<'a> { current: Option<JSRef<'a, Node>>, |