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