diff --git a/src/librustdoc/clean/simplify.rs b/src/librustdoc/clean/simplify.rs index 4c81e75e8d630..1f6f7bdf03693 100644 --- a/src/librustdoc/clean/simplify.rs +++ b/src/librustdoc/clean/simplify.rs @@ -50,7 +50,7 @@ crate fn where_clauses(cx: &DocContext<'_>, clauses: Vec) -> Vec { // Look for equality predicates on associated types that can be merged into // general bound predicates - equalities.retain(|&(ref lhs, ref rhs)| { + let equalities = equalities.into_iter().filter(|&(ref lhs, ref rhs)| { let (self_, trait_did, name) = if let Some(p) = lhs.projection() { p } else { @@ -73,6 +73,7 @@ crate fn where_clauses(cx: &DocContext<'_>, clauses: Vec) -> Vec { clauses.extend( lifetimes.into_iter().map(|(lt, bounds)| WP::RegionPredicate { lifetime: lt, bounds }), ); + clauses.extend(equalities.map(|(lhs, rhs)| WP::EqPredicate { lhs, rhs })); clauses.extend(params.into_iter().map(|(k, (bounds, params))| WP::BoundPredicate { ty: clean::Generic(k), bounds, @@ -83,7 +84,6 @@ crate fn where_clauses(cx: &DocContext<'_>, clauses: Vec) -> Vec { bounds, bound_params, })); - clauses.extend(equalities.into_iter().map(|(lhs, rhs)| WP::EqPredicate { lhs, rhs })); clauses }