Wrap some query results in Lrc.

So that the frequent clones in `try_get` are cheaper.

Fixes #54274.
This commit is contained in:
Nicholas Nethercote 2018-11-08 17:14:13 +11:00
parent 5c9f7dcd83
commit 98dab3335f
14 changed files with 73 additions and 69 deletions

View file

@ -1563,7 +1563,7 @@ impl Clean<Generics> for hir::Generics {
}
impl<'a, 'tcx> Clean<Generics> for (&'a ty::Generics,
&'a ty::GenericPredicates<'tcx>) {
&'a Lrc<ty::GenericPredicates<'tcx>>) {
fn clean(&self, cx: &DocContext) -> Generics {
use self::WherePredicate as WP;

View file

@ -156,8 +156,8 @@ fn trait_is_same_or_supertrait(cx: &DocContext, child: DefId,
if child == trait_ {
return true
}
let predicates = cx.tcx.super_predicates_of(child).predicates;
predicates.iter().filter_map(|(pred, _)| {
let predicates = cx.tcx.super_predicates_of(child);
predicates.predicates.iter().filter_map(|(pred, _)| {
if let ty::Predicate::Trait(ref pred) = *pred {
if pred.skip_binder().trait_ref.self_ty().is_self() {
Some(pred.def_id())