diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index c344302cabf59..78cf745718705 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -2268,24 +2268,26 @@ fn document_non_exhaustive_header(item: &clean::Item) -> &str {
fn document_non_exhaustive(w: &mut fmt::Formatter, item: &clean::Item) -> fmt::Result {
if item.is_non_exhaustive() {
- write!(w, "
")?;
+ write!(w, "
", {
+ if item.is_struct() { "struct" } else if item.is_enum() { "enum" } else { "type" }
+ })?;
if item.is_struct() {
- write!(w, "This struct is marked as non-exhaustive as additional fields may be \
- added in the future. This means that this struct cannot be constructed in \
- external crates using the traditional Struct {{ .. }}
syntax;
- cannot be matched against without a wildcard ..
; and \
- functional-record-updates do not work on this struct.")?;
+ write!(w, "Non-exhaustive structs could have additional fields added in future. \
+ Therefore, non-exhaustive structs cannot be constructed in external crates \
+ using the traditional Struct {{ .. }}
syntax; cannot be \
+ matched against without a wildcard ..
; and \
+ functional-record-updates do not work.")?;
} else if item.is_enum() {
- write!(w, "This enum is marked as non-exhaustive, and additional variants may be \
- added in the future. When matching over values of this type, an extra \
- _
arm must be added to account for future extensions.")?;
+ write!(w, "Non-exhaustive enums could have additional variants added in future. \
+ Therefore, when matching against variants of non-exhaustive enums, an \
+ extra wildcard arm must be added to account for any future variants.")?;
} else {
write!(w, "This type will require a wildcard arm in any match statements or \
constructors.")?;
}
- write!(w, "")?;
+ write!(w, "
")?;
}
Ok(())
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index bb996e00d352a..af994229edf30 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -1993,7 +1993,7 @@
onEach(e.getElementsByClassName('associatedconstant'), func);
});
- function createToggle(otherMessage, extraClass) {
+ function createToggle(otherMessage, fontSize, extraClass) {
var span = document.createElement('span');
span.className = 'toggle-label';
span.style.display = 'none';
@@ -2001,7 +2001,10 @@
span.innerHTML = ' Expand description';
} else {
span.innerHTML = otherMessage;
- span.style.fontSize = '20px';
+ }
+
+ if (fontSize) {
+ span.style.fontSize = fontSize;
}
var mainToggle = toggle.cloneNode(true);
@@ -2040,13 +2043,27 @@
}
if (e.parentNode.id === "main") {
var otherMessage;
+ var fontSize;
var extraClass;
+
if (hasClass(e, "type-decl")) {
+ fontSize = "20px";
otherMessage = ' Show declaration';
+ } else if (hasClass(e, "non-exhaustive")) {
+ otherMessage = ' This ';
+ if (hasClass(e, "non-exhaustive-struct")) {
+ otherMessage += 'struct';
+ } else if (hasClass(e, "non-exhaustive-enum")) {
+ otherMessage += 'enum';
+ } else if (hasClass(e, "non-exhaustive-type")) {
+ otherMessage += 'type';
+ }
+ otherMessage += ' is marked as non-exhaustive';
} else if (hasClass(e.childNodes[0], "impl-items")) {
extraClass = "marg-left";
}
- e.parentNode.insertBefore(createToggle(otherMessage, extraClass), e);
+
+ e.parentNode.insertBefore(createToggle(otherMessage, fontSize, extraClass), e);
if (otherMessage && getCurrentValue('rustdoc-item-declarations') !== "false") {
collapseDocs(e.previousSibling.childNodes[0], "toggle");
}
diff --git a/src/librustdoc/html/static/rustdoc.css b/src/librustdoc/html/static/rustdoc.css
index 575a7ea27921f..b689e2fa3854e 100644
--- a/src/librustdoc/html/static/rustdoc.css
+++ b/src/librustdoc/html/static/rustdoc.css
@@ -1358,4 +1358,8 @@ kbd {
}
#all-types > p {
margin: 5px 0;
-}
\ No newline at end of file
+}
+
+.non-exhaustive {
+ margin-bottom: 1em;
+}
diff --git a/src/librustdoc/html/static/themes/dark.css b/src/librustdoc/html/static/themes/dark.css
index f97ff45b22f7a..3aea30c767f61 100644
--- a/src/librustdoc/html/static/themes/dark.css
+++ b/src/librustdoc/html/static/themes/dark.css
@@ -148,8 +148,6 @@ pre {
.content .fnname{ color: #2BAB63; }
.content span.keyword, .content a.keyword, .block a.current.keyword { color: #de5249; }
-.non-exhaustive { color: #DDD; margin-bottom: 1em; }
-
pre.rust .comment { color: #8d8d8b; }
pre.rust .doccomment { color: #8ca375; }
diff --git a/src/librustdoc/html/static/themes/light.css b/src/librustdoc/html/static/themes/light.css
index da8b24f3b171f..e84e3cb56636e 100644
--- a/src/librustdoc/html/static/themes/light.css
+++ b/src/librustdoc/html/static/themes/light.css
@@ -148,8 +148,6 @@ pre {
.content .fnname { color: #9a6e31; }
.content span.keyword, .content a.keyword, .block a.current.keyword { color: #de5249; }
-.non-exhaustive { color: #222; margin-bottom: 1em; }
-
pre.rust .comment { color: #8E908C; }
pre.rust .doccomment { color: #4D4D4C; }