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,
);
}