Skip to content

Commit

Permalink
rustdoc: filter before storing in vec
Browse files Browse the repository at this point in the history
  • Loading branch information
notriddle authored Sep 10, 2023
1 parent c3e5ad4 commit c79b960
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions src/librustdoc/html/render/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,15 @@ impl SharedContext<'_> {
) -> Vec<&'a formats::Impl> {
let tcx = self.tcx;
let cache = &self.cache;
let mut v: Vec<&formats::Impl> =
cache.impls.get(&did).map(Vec::as_slice).unwrap_or(&[]).iter().collect();
let mut saw_impls = FxHashSet::default();
let mut v: Vec<&formats::Impl> = cache
.impls
.get(&did)
.map(Vec::as_slice)
.unwrap_or(&[])
.iter()
.filter(|i| saw_impls.insert(i.def_id()))
.collect();
if let TypeAliasItem(ait) = &*it.kind &&
let aliased_clean_type = ait.item_type.as_ref().unwrap_or(&ait.type_) &&
let Some(aliased_type_defid) = aliased_clean_type.def_id(cache) &&
Expand All @@ -181,13 +188,12 @@ impl SharedContext<'_> {
v.extend(av.iter().filter(|impl_| {
if let Some(impl_def_id) = impl_.impl_item.item_id.as_def_id() {
reject_cx.types_may_unify(aliased_ty, tcx.type_of(impl_def_id).skip_binder())
&& saw_impls.insert(impl_def_id)
} else {
false
}
}));
}
let mut saw_impls = FxHashSet::default();
v.retain(|i| saw_impls.insert(i.def_id()));
v
}
}
Expand Down

0 comments on commit c79b960

Please sign in to comment.