diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs
index 318e1b44f86..b3bd1cd0121 100644
--- a/src/librustdoc/html/render/mod.rs
+++ b/src/librustdoc/html/render/mod.rs
@@ -1545,7 +1545,7 @@ fn render_impl(
let open_details = |close_tags: &mut String| {
if toggled {
close_tags.insert_str(0, "");
- ""
+ ""
} else {
""
}
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 1e28056bb68..a96b0c87108 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -776,12 +776,29 @@ function hideThemeButtonState() {
var hideMethodDocs = getSettingValue("auto-hide-method-docs") === "true";
var hideImplementors = getSettingValue("auto-collapse-implementors") !== "false";
+ var hideImplementations = getSettingValue("auto-hide-trait-implementations") !== "false";
var hideLargeItemContents = getSettingValue("auto-hide-large-items") !== "false";
- onEachLazy(document.getElementsByTagName("details"), function (e) {
- var showLargeItem = !hideLargeItemContents && hasClass(e, "type-contents-toggle");
- var showImplementor = !hideImplementors && hasClass(e, "implementors-toggle");
- if (showLargeItem || showImplementor) {
+ function openImplementors(id) {
+ var list = document.getElementById(id);
+ if (list !== null) {
+ onEachLazy(list.getElementsByClassName("implementors-toggle"), function(e) {
+ e.open = true;
+ });
+ }
+ }
+
+ if (!hideImplementations) {
+ openImplementors("trait-implementations-list");
+ openImplementors("blanket-implementations-list");
+ }
+
+ if (!hideImplementors) {
+ openImplementors("implementors-list");
+ }
+
+ onEachLazy(document.getElementsByClassName("rustdoc-toggle"), function (e) {
+ if (!hideLargeItemContents && hasClass(e, "type-contents-toggle")) {
e.open = true;
}
if (hideMethodDocs && hasClass(e, "method-toggle")) {
diff --git a/src/test/rustdoc/manual_impl.rs b/src/test/rustdoc/manual_impl.rs
index 776a191ceef..5b448bd1923 100644
--- a/src/test/rustdoc/manual_impl.rs
+++ b/src/test/rustdoc/manual_impl.rs
@@ -65,7 +65,8 @@ impl T for S2 {
}
// @has manual_impl/struct.S3.html '//*[@class="trait"]' 'T'
-// @has - '//details[@open=""]/div[@class="docblock"]' 'Docs associated with the S3 trait implementation.'
+// @has - '//details/div[@class="docblock"]' 'Docs associated with the S3 trait implementation.'
+// @!has - '//details[@open=""]/div[@class="docblock"]' 'Docs associated with the S3 trait implementation.'
// @has - '//details[@open=""]/div[@class="docblock"]' 'Docs associated with the S3 trait b_method implementation.'
// @!has - '//div[@class="impl-items"]/details[@open=""]//div[@class="docblock"]' 'Docs associated with the trait a_method definition.'
// @has - '//div[@class="impl-items"]/details//div[@class="docblock"]' 'Docs associated with the trait a_method definition.'