Skip to content

Commit bff4f07

Browse files
committed
Use render_impl_summary when rendering traits.
1 parent ce64729 commit bff4f07

File tree

2 files changed

+29
-43
lines changed

2 files changed

+29
-43
lines changed

Diff for: src/librustdoc/html/render/mod.rs

+17-24
Original file line numberDiff line numberDiff line change
@@ -1542,15 +1542,10 @@ fn render_impl(
15421542
}
15431543
}
15441544
if render_mode == RenderMode::Normal {
1545-
let on_trait_page = matches!(*parent.kind, clean::ItemKind::TraitItem(_));
1546-
let has_impl_items = !(impl_items.is_empty() && default_impl_items.is_empty());
1547-
let toggled = !on_trait_page && has_impl_items;
1548-
let is_implementing_trait = i.inner_impl().trait_.is_some();
1545+
let toggled = !(impl_items.is_empty() && default_impl_items.is_empty());
15491546
if toggled {
15501547
close_tags.insert_str(0, "</details>");
15511548
write!(w, "<details class=\"rustdoc-toggle implementors-toggle\" open>");
1552-
}
1553-
if toggled {
15541549
write!(w, "<summary>")
15551550
}
15561551
render_impl_summary(
@@ -1573,23 +1568,21 @@ fn render_impl(
15731568
}
15741569
}
15751570

1576-
if !on_trait_page {
1577-
if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) {
1578-
let mut ids = cx.id_map.borrow_mut();
1579-
write!(
1580-
w,
1581-
"<div class=\"docblock\">{}</div>",
1582-
Markdown(
1583-
&*dox,
1584-
&i.impl_item.links(cx),
1585-
&mut ids,
1586-
cx.shared.codes,
1587-
cx.shared.edition(),
1588-
&cx.shared.playground
1589-
)
1590-
.into_string()
1591-
);
1592-
}
1571+
if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) {
1572+
let mut ids = cx.id_map.borrow_mut();
1573+
write!(
1574+
w,
1575+
"<div class=\"docblock\">{}</div>",
1576+
Markdown(
1577+
&*dox,
1578+
&i.impl_item.links(cx),
1579+
&mut ids,
1580+
cx.shared.codes,
1581+
cx.shared.edition(),
1582+
&cx.shared.playground
1583+
)
1584+
.into_string()
1585+
);
15931586
}
15941587
}
15951588
if !default_impl_items.is_empty() || !impl_items.is_empty() {
@@ -1601,7 +1594,7 @@ fn render_impl(
16011594
w.write_str(&close_tags);
16021595
}
16031596

1604-
fn render_impl_summary(
1597+
pub(crate) fn render_impl_summary(
16051598
w: &mut Buffer,
16061599
cx: &Context<'_>,
16071600
i: &Impl,

Diff for: src/librustdoc/html/render/print_item.rs

+12-19
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ use rustc_span::symbol::{kw, sym, Symbol};
1515
use super::{
1616
collect_paths_for_type, document, ensure_trailing_slash, item_ty_to_strs, notable_traits_decl,
1717
render_assoc_item, render_assoc_items, render_attributes_in_code, render_attributes_in_pre,
18-
render_impl, render_stability_since_raw, write_srclink, AssocItemLink, Context,
18+
render_impl_summary, render_stability_since_raw, write_srclink, AssocItemLink, Context,
1919
};
2020
use crate::clean::{self, GetDefId};
2121
use crate::formats::item_type::ItemType;
22-
use crate::formats::{AssocItemRender, Impl, RenderMode};
22+
use crate::formats::{AssocItemRender, Impl};
2323
use crate::html::escape::Escape;
2424
use crate::html::format::{print_abi_with_space, print_where_clause, Buffer, PrintWithSpace};
2525
use crate::html::highlight;
@@ -691,22 +691,17 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra
691691
write_small_section_header(w, "foreign-impls", "Implementations on Foreign Types", "");
692692

693693
for implementor in foreign {
694-
let provided_methods = implementor.inner_impl().provided_trait_methods(cx.tcx());
695-
let assoc_link =
696-
AssocItemLink::GotoSource(implementor.impl_item.def_id, &provided_methods);
697-
render_impl(
694+
let outer_version = implementor.impl_item.stable_since(cx.tcx());
695+
let outer_const_version = implementor.impl_item.const_stable_since(cx.tcx());
696+
render_impl_summary(
698697
w,
699698
cx,
700699
&implementor,
701-
it,
702-
assoc_link,
703-
RenderMode::Normal,
704-
implementor.impl_item.stable_since(cx.tcx()).as_deref(),
705-
implementor.impl_item.const_stable_since(cx.tcx()).as_deref(),
700+
outer_version.as_deref(),
701+
outer_const_version.as_deref(),
706702
false,
707703
None,
708704
true,
709-
false,
710705
&[],
711706
);
712707
}
@@ -1320,19 +1315,17 @@ fn render_implementor(
13201315
} => implementor_dups[&path.last()].1,
13211316
_ => false,
13221317
};
1323-
render_impl(
1318+
let outer_version = trait_.stable_since(cx.tcx());
1319+
let outer_const_version = trait_.const_stable_since(cx.tcx());
1320+
render_impl_summary(
13241321
w,
13251322
cx,
13261323
implementor,
1327-
trait_,
1328-
AssocItemLink::Anchor(None),
1329-
RenderMode::Normal,
1330-
trait_.stable_since(cx.tcx()).as_deref(),
1331-
trait_.const_stable_since(cx.tcx()).as_deref(),
1324+
outer_version.as_deref(),
1325+
outer_const_version.as_deref(),
13321326
false,
13331327
Some(use_absolute),
13341328
false,
1335-
false,
13361329
aliases,
13371330
);
13381331
}

0 commit comments

Comments
 (0)