mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 17:53:56 +00:00
rustdoc: smartly hide associated items of traits if there are too many of them
This commit is contained in:
parent
f146b9701d
commit
173cbecc66
@ -443,10 +443,25 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra
|
||||
} else {
|
||||
// FIXME: we should be using a derived_id for the Anchors here
|
||||
w.write_str("{\n");
|
||||
let mut toggle = false;
|
||||
|
||||
// If there are too many associated types, hide _everything_
|
||||
if should_hide_fields(types.len()) {
|
||||
toggle = true;
|
||||
toggle_open(w, "associated items");
|
||||
}
|
||||
for t in &types {
|
||||
render_assoc_item(w, t, AssocItemLink::Anchor(None), ItemType::Trait, cx);
|
||||
w.write_str(";\n");
|
||||
}
|
||||
// If there are too many associated constants, hide everything after them
|
||||
// We also do this if the types + consts is large because otherwise we could
|
||||
// render a bunch of types and _then_ a bunch of consts just because both were
|
||||
// _just_ under the limit
|
||||
if !toggle & should_hide_fields(types.len() + consts.len()) {
|
||||
toggle = true;
|
||||
toggle_open(w, "associated constants and methods");
|
||||
}
|
||||
if !types.is_empty() && !consts.is_empty() {
|
||||
w.write_str("\n");
|
||||
}
|
||||
@ -454,6 +469,10 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra
|
||||
render_assoc_item(w, t, AssocItemLink::Anchor(None), ItemType::Trait, cx);
|
||||
w.write_str(";\n");
|
||||
}
|
||||
if !toggle & should_hide_fields(required.len() + provided.len()) {
|
||||
toggle = true;
|
||||
toggle_open(w, "methods");
|
||||
}
|
||||
if !consts.is_empty() && !required.is_empty() {
|
||||
w.write_str("\n");
|
||||
}
|
||||
@ -484,6 +503,9 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra
|
||||
w.write_str("<div class=\"item-spacer\"></div>");
|
||||
}
|
||||
}
|
||||
if toggle {
|
||||
toggle_close(w);
|
||||
}
|
||||
w.write_str("}");
|
||||
}
|
||||
w.write_str("</pre>")
|
||||
@ -1284,9 +1306,7 @@ fn render_union(
|
||||
write!(w, " {{\n{}", tab);
|
||||
let count_fields = fields
|
||||
.iter()
|
||||
.filter(
|
||||
|f| if let clean::StructFieldItem(..) = *f.kind { true } else { false },
|
||||
)
|
||||
.filter(|f| if let clean::StructFieldItem(..) = *f.kind { true } else { false })
|
||||
.count();
|
||||
let toggle = should_hide_fields(count_fields);
|
||||
if toggle {
|
||||
@ -1343,9 +1363,7 @@ fn render_struct(
|
||||
w.write_str(" {");
|
||||
let count_fields = fields
|
||||
.iter()
|
||||
.filter(
|
||||
|f| if let clean::StructFieldItem(..) = *f.kind { true } else { false },
|
||||
)
|
||||
.filter(|f| if let clean::StructFieldItem(..) = *f.kind { true } else { false })
|
||||
.count();
|
||||
let has_visible_fields = count_fields > 0;
|
||||
let toggle = should_hide_fields(count_fields);
|
||||
|
@ -1058,8 +1058,8 @@ h3 > .collapse-toggle, h4 > .collapse-toggle {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
/* for enum and struct fields */
|
||||
.enum > .toggle-wrapper + .docblock, .struct > .toggle-wrapper + .docblock, .union > .toggle-wrapper + .docblock {
|
||||
/* for hiding fields/variants/associated items */
|
||||
.enum > .toggle-wrapper + .docblock, .struct > .toggle-wrapper + .docblock, .union > .toggle-wrapper + .docblock, .trait > .toggle-wrapper + .docblock {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
@ -1785,7 +1785,7 @@ div.name.expand::before {
|
||||
.type-decl > pre > .docblock.attributes.top-attr {
|
||||
margin-left: 1.8em !important;
|
||||
}
|
||||
.type-decl > pre > .toggle-attributes {
|
||||
.type-decl > pre .toggle-attributes {
|
||||
margin-left: 2.2em;
|
||||
}
|
||||
.type-decl > pre > .docblock.attributes {
|
||||
|
@ -218,7 +218,7 @@ a {
|
||||
color: #c5c5c5;
|
||||
}
|
||||
|
||||
.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),
|
||||
.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow):not(.collapse-toggle),
|
||||
.docblock-short a:not(.srclink):not(.test-arrow), .item-info a,
|
||||
#help a {
|
||||
color: #39AFD7;
|
||||
|
@ -176,7 +176,7 @@ a {
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),
|
||||
.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow):not(.collapse-toggle),
|
||||
.docblock-short a:not(.srclink):not(.test-arrow), .item-info a,
|
||||
#help a {
|
||||
color: #D2991D;
|
||||
|
@ -174,7 +174,7 @@ a {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),
|
||||
.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow):not(.collapse-toggle),
|
||||
.docblock-short a:not(.srclink):not(.test-arrow), .item-info a,
|
||||
#help a {
|
||||
color: #3873AD;
|
||||
|
Loading…
Reference in New Issue
Block a user