Skip to content

Commit fff9216

Browse files
author
QuietMisdreavus
committed
rustdoc: fold fields for enum struct variants into a docblock
1 parent 5293b91 commit fff9216

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

src/librustdoc/html/render.rs

+8-3
Original file line numberDiff line numberDiff line change
@@ -2467,8 +2467,13 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
24672467
if let clean::VariantItem(Variant {
24682468
kind: VariantKind::Struct(ref s)
24692469
}) = variant.inner {
2470-
write!(w, "<h3 class='fields'>Fields</h3>\n
2471-
<table>")?;
2470+
let variant_id = derive_id(format!("{}.{}.fields",
2471+
ItemType::Variant,
2472+
variant.name.as_ref().unwrap()));
2473+
write!(w, "<span class='docblock autohide sub-variant' id='{id}'>",
2474+
id = variant_id)?;
2475+
write!(w, "<h3 class='fields'>Fields of <code>{name}</code></h3>\n
2476+
<table>", name = variant.name.as_ref().unwrap())?;
24722477
for field in &s.fields {
24732478
use clean::StructFieldItem;
24742479
if let StructFieldItem(ref ty) = field.inner {
@@ -2492,7 +2497,7 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
24922497
write!(w, "</td></tr>")?;
24932498
}
24942499
}
2495-
write!(w, "</table>")?;
2500+
write!(w, "</table></span>")?;
24962501
}
24972502
render_stability_since(w, variant, it)?;
24982503
}

src/librustdoc/html/static/main.js

+16
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,22 @@
10131013
.html('&nbsp;Expand&nbsp;description'));
10141014
var wrapper = $("<div class='toggle-wrapper'>").append(mainToggle);
10151015
$("#main > .docblock").before(wrapper);
1016+
1017+
$(".docblock.autohide").each(function() {
1018+
var wrap = $(this).prev();
1019+
if (wrap.is(".toggle-wrapper")) {
1020+
var toggle = wrap.children().first();
1021+
if ($(this).children().first().is("h3")) {
1022+
toggle.children(".toggle-label")
1023+
.text(" Show " + $(this).children().first().text());
1024+
}
1025+
$(this).hide();
1026+
wrap.addClass("collapsed");
1027+
toggle.children(".inner").text(labelForToggleButton(true));
1028+
toggle.children(".toggle-label").show();
1029+
}
1030+
});
1031+
10161032
var mainToggle =
10171033
$(toggle).append(
10181034
$('<span/>', {'class': 'toggle-label'})

src/librustdoc/html/static/rustdoc.css

+8
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,10 @@ h4 > code, h3 > code, .invisible > code {
339339
border-bottom: 1px solid;
340340
}
341341

342+
.fields + table {
343+
margin-bottom: 1em;
344+
}
345+
342346
.content .item-list {
343347
list-style-type: none;
344348
padding: 0;
@@ -663,6 +667,10 @@ span.since {
663667
margin-top: 5px;
664668
}
665669

670+
.sub-variant, .sub-variant > h3 {
671+
margin-top: 0 !important;
672+
}
673+
666674
.enum > .toggle-wrapper + .docblock, .struct > .toggle-wrapper + .docblock {
667675
margin-left: 30px;
668676
margin-bottom: 20px;

0 commit comments

Comments
 (0)