diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 4f3acfb8e82..4ce14e6eb3c 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -1542,15 +1542,10 @@ fn render_impl( } } if render_mode == RenderMode::Normal { - let on_trait_page = matches!(*parent.kind, clean::ItemKind::TraitItem(_)); - let has_impl_items = !(impl_items.is_empty() && default_impl_items.is_empty()); - let toggled = !on_trait_page && has_impl_items; - let is_implementing_trait = i.inner_impl().trait_.is_some(); + let toggled = !(impl_items.is_empty() && default_impl_items.is_empty()); if toggled { close_tags.insert_str(0, ""); write!(w, "
"); - } - if toggled { write!(w, "") } render_impl_summary( @@ -1573,23 +1568,21 @@ fn render_impl( } } - if !on_trait_page { - if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) { - let mut ids = cx.id_map.borrow_mut(); - write!( - w, - "
{}
", - Markdown( - &*dox, - &i.impl_item.links(cx), - &mut ids, - cx.shared.codes, - cx.shared.edition(), - &cx.shared.playground - ) - .into_string() - ); - } + if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) { + let mut ids = cx.id_map.borrow_mut(); + write!( + w, + "
{}
", + Markdown( + &*dox, + &i.impl_item.links(cx), + &mut ids, + cx.shared.codes, + cx.shared.edition(), + &cx.shared.playground + ) + .into_string() + ); } } if !default_impl_items.is_empty() || !impl_items.is_empty() { @@ -1601,7 +1594,7 @@ fn render_impl( w.write_str(&close_tags); } -fn render_impl_summary( +pub(crate) fn render_impl_summary( w: &mut Buffer, cx: &Context<'_>, i: &Impl, diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs index 88ec172a18b..5be16d1ce50 100644 --- a/src/librustdoc/html/render/print_item.rs +++ b/src/librustdoc/html/render/print_item.rs @@ -15,11 +15,11 @@ use rustc_span::symbol::{kw, sym, Symbol}; use super::{ collect_paths_for_type, document, ensure_trailing_slash, item_ty_to_strs, notable_traits_decl, render_assoc_item, render_assoc_items, render_attributes_in_code, render_attributes_in_pre, - render_impl, render_stability_since_raw, write_srclink, AssocItemLink, Context, + render_impl_summary, render_stability_since_raw, write_srclink, AssocItemLink, Context, }; use crate::clean::{self, GetDefId}; use crate::formats::item_type::ItemType; -use crate::formats::{AssocItemRender, Impl, RenderMode}; +use crate::formats::{AssocItemRender, Impl}; use crate::html::escape::Escape; use crate::html::format::{print_abi_with_space, print_where_clause, Buffer, PrintWithSpace}; use crate::html::highlight; @@ -691,22 +691,17 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra write_small_section_header(w, "foreign-impls", "Implementations on Foreign Types", ""); for implementor in foreign { - let provided_methods = implementor.inner_impl().provided_trait_methods(cx.tcx()); - let assoc_link = - AssocItemLink::GotoSource(implementor.impl_item.def_id, &provided_methods); - render_impl( + let outer_version = implementor.impl_item.stable_since(cx.tcx()); + let outer_const_version = implementor.impl_item.const_stable_since(cx.tcx()); + render_impl_summary( w, cx, &implementor, - it, - assoc_link, - RenderMode::Normal, - implementor.impl_item.stable_since(cx.tcx()).as_deref(), - implementor.impl_item.const_stable_since(cx.tcx()).as_deref(), + outer_version.as_deref(), + outer_const_version.as_deref(), false, None, true, - false, &[], ); } @@ -1320,19 +1315,17 @@ fn render_implementor( } => implementor_dups[&path.last()].1, _ => false, }; - render_impl( + let outer_version = trait_.stable_since(cx.tcx()); + let outer_const_version = trait_.const_stable_since(cx.tcx()); + render_impl_summary( w, cx, implementor, - trait_, - AssocItemLink::Anchor(None), - RenderMode::Normal, - trait_.stable_since(cx.tcx()).as_deref(), - trait_.const_stable_since(cx.tcx()).as_deref(), + outer_version.as_deref(), + outer_const_version.as_deref(), false, Some(use_absolute), false, - false, aliases, ); }