diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 7704abc9a72..0b060468d05 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -714,7 +714,9 @@ fn render_impls( None, false, true, + true, &[], + true, ); buffer.into_inner() }) @@ -1053,7 +1055,9 @@ fn render_assoc_items( None, false, true, + true, &[], + true, ); } } @@ -1254,9 +1258,12 @@ fn render_impl( use_absolute: Option, is_on_foreign_type: bool, show_default_items: bool, + // It'll exclude methods. + show_non_assoc_items: bool, // This argument is used to reference same type with different paths to avoid duplication // in documentation pages for trait with automatic implementations like "Send" and "Sync". aliases: &[String], + toggle_open_by_default: bool, ) { let cache = cx.cache(); let traits = &cache.traits; @@ -1280,16 +1287,18 @@ fn render_impl( is_default_item: bool, trait_: Option<&clean::Trait>, show_def_docs: bool, + show_non_assoc_items: bool, ) { let item_type = item.type_(); let name = item.name.as_ref().unwrap(); - let render_method_item = match render_mode { - RenderMode::Normal => true, - RenderMode::ForDeref { mut_: deref_mut_ } => { - should_render_item(&item, deref_mut_, cx.cache()) - } - }; + let render_method_item = show_non_assoc_items + && match render_mode { + RenderMode::Normal => true, + RenderMode::ForDeref { mut_: deref_mut_ } => { + should_render_item(&item, deref_mut_, cx.cache()) + } + }; let in_trait_class = if trait_.is_some() { " trait-impl" } else { "" }; @@ -1456,6 +1465,7 @@ fn render_impl( false, trait_.map(|t| &t.trait_), show_def_docs, + show_non_assoc_items, ); } @@ -1469,6 +1479,7 @@ fn render_impl( containing_item: &clean::Item, render_mode: RenderMode, show_def_docs: bool, + show_non_assoc_items: bool, ) { for trait_item in &t.items { let n = trait_item.name; @@ -1491,6 +1502,7 @@ fn render_impl( true, Some(t), show_def_docs, + show_non_assoc_items, ); } } @@ -1511,6 +1523,7 @@ fn render_impl( parent, render_mode, show_def_docs, + show_non_assoc_items, ); } } @@ -1518,7 +1531,11 @@ fn render_impl( let toggled = !(impl_items.is_empty() && default_impl_items.is_empty()); if toggled { close_tags.insert_str(0, ""); - write!(w, "
"); + write!( + w, + "
", + if toggle_open_by_default { " open" } else { "" } + ); write!(w, "") } render_impl_summary( diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs index 8f4857a6939..5bc500498ff 100644 --- a/src/librustdoc/html/render/print_item.rs +++ b/src/librustdoc/html/render/print_item.rs @@ -16,8 +16,7 @@ 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_impl_summary, render_stability_since_raw, write_srclink, AssocItemLink, - Context, + render_impl, render_stability_since_raw, write_srclink, AssocItemLink, Context, }; use crate::clean::{self, GetDefId}; use crate::formats::item_type::ItemType; @@ -740,7 +739,9 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra None, true, false, + true, &[], + false, ); } } @@ -1388,16 +1389,20 @@ fn render_implementor( } => implementor_dups[&path.last()].1, _ => false, }; - render_impl_summary( + render_impl( w, cx, implementor, trait_, - trait_, + AssocItemLink::Anchor(None), + RenderMode::Normal, false, Some(use_absolute), false, + false, + false, aliases, + false, ); }