doc: Fold inline methods from Deref
This commit is contained in:
parent
b286722878
commit
315a16fced
2 changed files with 18 additions and 4 deletions
|
|
@ -1256,6 +1256,7 @@ fn render_assoc_items_inner(
|
|||
let Some(v) = cache.impls.get(&it) else { return };
|
||||
let (non_trait, traits): (Vec<_>, _) = v.iter().partition(|i| i.inner_impl().trait_.is_none());
|
||||
if !non_trait.is_empty() {
|
||||
let mut close_tags = <Vec<&str>>::with_capacity(1);
|
||||
let mut tmp_buf = Buffer::html();
|
||||
let (render_mode, id, class_html) = match what {
|
||||
AssocItemRender::All => {
|
||||
|
|
@ -1266,6 +1267,8 @@ fn render_assoc_items_inner(
|
|||
let id =
|
||||
cx.derive_id(small_url_encode(format!("deref-methods-{:#}", type_.print(cx))));
|
||||
let derived_id = cx.derive_id(&id);
|
||||
tmp_buf.write_str("<details class=\"toggle implementors-toggle\" open><summary>");
|
||||
close_tags.push("</details>");
|
||||
write_impl_section_heading(
|
||||
&mut tmp_buf,
|
||||
&format!(
|
||||
|
|
@ -1275,6 +1278,7 @@ fn render_assoc_items_inner(
|
|||
),
|
||||
&id,
|
||||
);
|
||||
tmp_buf.write_str("</summary>");
|
||||
if let Some(def_id) = type_.def_id(cx.cache()) {
|
||||
cx.deref_id_map.insert(def_id, id);
|
||||
}
|
||||
|
|
@ -1308,6 +1312,9 @@ fn render_assoc_items_inner(
|
|||
impls_buf.into_inner()
|
||||
)
|
||||
.unwrap();
|
||||
for tag in close_tags.into_iter().rev() {
|
||||
w.write_str(tag).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1565,7 +1572,7 @@ fn render_impl(
|
|||
let cache = &shared.cache;
|
||||
let traits = &cache.traits;
|
||||
let trait_ = i.trait_did().map(|did| &traits[&did]);
|
||||
let mut close_tags = String::new();
|
||||
let mut close_tags = <Vec<&str>>::with_capacity(2);
|
||||
|
||||
// For trait implementations, the `interesting` output contains all methods that have doc
|
||||
// comments, and the `boring` output contains all methods that do not. The distinction is
|
||||
|
|
@ -1853,7 +1860,7 @@ fn render_impl(
|
|||
if render_mode == RenderMode::Normal {
|
||||
let toggled = !(impl_items.is_empty() && default_impl_items.is_empty());
|
||||
if toggled {
|
||||
close_tags.insert_str(0, "</details>");
|
||||
close_tags.push("</details>");
|
||||
write!(
|
||||
w,
|
||||
"<details class=\"toggle implementors-toggle\"{}>\
|
||||
|
|
@ -1899,14 +1906,16 @@ fn render_impl(
|
|||
}
|
||||
if !default_impl_items.is_empty() || !impl_items.is_empty() {
|
||||
w.write_str("<div class=\"impl-items\">");
|
||||
close_tags.insert_str(0, "</div>");
|
||||
close_tags.push("</div>");
|
||||
}
|
||||
}
|
||||
if !default_impl_items.is_empty() || !impl_items.is_empty() {
|
||||
w.push_buffer(default_impl_items);
|
||||
w.push_buffer(impl_items);
|
||||
}
|
||||
w.write_str(&close_tags);
|
||||
for tag in close_tags.into_iter().rev() {
|
||||
w.write_str(tag);
|
||||
}
|
||||
}
|
||||
|
||||
// Render the items that appear on the right side of methods, impls, and
|
||||
|
|
|
|||
|
|
@ -1733,6 +1733,11 @@ details.toggle {
|
|||
position: relative;
|
||||
}
|
||||
|
||||
details.implementors-toggle {
|
||||
/* This makes [-] on the same line as <summary>. */
|
||||
contain: inline-size;
|
||||
}
|
||||
|
||||
/* The hideme class is used on summary tags that contain a span with
|
||||
placeholder text shown only when the toggle is closed. For instance,
|
||||
"Expand description" or "Show methods". */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue