about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTaylor Cramer <cramertaylorj@gmail.com>2017-03-21 00:09:20 -0700
committerTaylor Cramer <cramertaylorj@gmail.com>2017-03-21 00:09:24 -0700
commit8e58d9eb8f5b86c2b2f740aaebdb984fed065f8d (patch)
treedf81846c42c6ec25ac5511244a5b1bca92ff77eb
parent4cd28a73878a00bd1c8242919236f491a47cc1f0 (diff)
downloadrust-8e58d9eb8f5b86c2b2f740aaebdb984fed065f8d.tar.gz
rust-8e58d9eb8f5b86c2b2f740aaebdb984fed065f8d.zip
Use Iterator::find in associated_item search
-rw-r--r--src/librustc/ty/mod.rs14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs
index 610a6d6d8ee..9c17138a932 100644
--- a/src/librustc/ty/mod.rs
+++ b/src/librustc/ty/mod.rs
@@ -2585,24 +2585,22 @@ fn associated_item<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId)
     let parent_item = tcx.hir.expect_item(parent_id);
     match parent_item.node {
         hir::ItemImpl(.., ref impl_trait_ref, _, ref impl_item_refs) => {
-            for impl_item_ref in impl_item_refs {
+            if let Some(impl_item_ref) = impl_item_refs.iter().find(|i| i.id.node_id == id) {
                 let assoc_item =
                     tcx.associated_item_from_impl_item_ref(parent_def_id,
                                                             impl_trait_ref.is_some(),
                                                             impl_item_ref);
-                if assoc_item.def_id == def_id {
-                    return assoc_item;
-                }
+                debug_assert_eq!(assoc_item.def_id, def_id);
+                return assoc_item;
             }
         }
 
         hir::ItemTrait(.., ref trait_item_refs) => {
-            for trait_item_ref in trait_item_refs {
+            if let Some(trait_item_ref) = trait_item_refs.iter().find(|i| i.id.node_id == id) {
                 let assoc_item =
                     tcx.associated_item_from_trait_item_ref(parent_def_id, trait_item_ref);
-                if assoc_item.def_id == def_id {
-                    return assoc_item;
-                }
+                debug_assert_eq!(assoc_item.def_id, def_id);
+                return assoc_item;
             }
         }