about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustdoc/html/render/mod.rs31
-rw-r--r--src/librustdoc/html/render/print_item.rs13
2 files changed, 33 insertions, 11 deletions
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<bool>,
     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, "</details>");
-            write!(w, "<details class=\"rustdoc-toggle implementors-toggle\" open>");
+            write!(
+                w,
+                "<details class=\"rustdoc-toggle implementors-toggle\"{}>",
+                if toggle_open_by_default { " open" } else { "" }
+            );
             write!(w, "<summary>")
         }
         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,
     );
 }