diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 82604cc7ad8bb..1c38bdb1deaf8 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -1918,9 +1918,9 @@ if (!DOMTokenList.prototype.remove) {
};
}
- function implHider(addOrRemove) {
+ function implHider(addOrRemove, fullHide) {
return function(n) {
- var is_method = hasClass(n, "method");
+ var is_method = hasClass(n, "method") || fullHide;
if (is_method || hasClass(n, "type")) {
if (is_method === true) {
if (addOrRemove) {
@@ -1974,7 +1974,7 @@ if (!DOMTokenList.prototype.remove) {
}
}
} else {
- // we are collapsing the impl block
+ // we are collapsing the impl block(s).
var parentElem = toggle.parentNode;
relatedDoc = parentElem;
@@ -1989,7 +1989,7 @@ if (!DOMTokenList.prototype.remove) {
return;
}
- // Hide all functions, but not associated types/consts
+ // Hide all functions, but not associated types/consts.
if (mode === "toggle") {
if (hasClass(relatedDoc, "fns-now-collapsed") ||
@@ -2000,16 +2000,17 @@ if (!DOMTokenList.prototype.remove) {
}
}
+ var dontApplyBlockRule = toggle.parentNode.parentNode.id !== "main";
if (action === "show") {
removeClass(relatedDoc, "fns-now-collapsed");
removeClass(docblock, "hidden-by-usual-hider");
- onEachLazy(toggle.childNodes, adjustToggle(false));
- onEachLazy(relatedDoc.childNodes, implHider(false));
+ onEachLazy(toggle.childNodes, adjustToggle(false, dontApplyBlockRule));
+ onEachLazy(relatedDoc.childNodes, implHider(false, dontApplyBlockRule));
} else if (action === "hide") {
addClass(relatedDoc, "fns-now-collapsed");
addClass(docblock, "hidden-by-usual-hider");
- onEachLazy(toggle.childNodes, adjustToggle(true));
- onEachLazy(relatedDoc.childNodes, implHider(true));
+ onEachLazy(toggle.childNodes, adjustToggle(true, dontApplyBlockRule);
+ onEachLazy(relatedDoc.childNodes, implHider(true, dontApplyBlockRule));
}
}
}