diff options
| author | Taylor Cramer <cramertaylorj@gmail.com> | 2017-03-21 00:09:20 -0700 |
|---|---|---|
| committer | Taylor Cramer <cramertaylorj@gmail.com> | 2017-03-21 00:09:24 -0700 |
| commit | 8e58d9eb8f5b86c2b2f740aaebdb984fed065f8d (patch) | |
| tree | df81846c42c6ec25ac5511244a5b1bca92ff77eb | |
| parent | 4cd28a73878a00bd1c8242919236f491a47cc1f0 (diff) | |
| download | rust-8e58d9eb8f5b86c2b2f740aaebdb984fed065f8d.tar.gz rust-8e58d9eb8f5b86c2b2f740aaebdb984fed065f8d.zip | |
Use Iterator::find in associated_item search
| -rw-r--r-- | src/librustc/ty/mod.rs | 14 |
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; } } |
