From 54c0601950ac862d8f4dbf30a31df9ca6a676c9a Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Fri, 5 Dec 2014 14:58:48 +0100 Subject: [PATCH] Cleanup Node::query_selector. --- components/script/dom/node.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index ef655cc1bc3..9f6605569da 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -738,15 +738,12 @@ impl<'a> NodeHelpers<'a> for JSRef<'a, Node> { // Step 3. Ok(ref selectors) => { let root = self.ancestors().last().unwrap_or(self.clone()); - for node in root.traverse_preorder() { - if node.is_element() && matches(selectors, &node, &mut None) { - let elem: JSRef = ElementCast::to_ref(node).unwrap(); - return Ok(Some(Temporary::from_rooted(elem))); - } - } + Ok(root.traverse_preorder() + .filter_map(ElementCast::to_ref) + .find(|element| matches(selectors, &NodeCast::from_ref(*element), &mut None)) + .map(Temporary::from_rooted)) } } - Ok(None) } /// Get an iterator over all nodes which match a set of selectors