Use render_impl_summary when rendering traits.
This commit is contained in:
parent
ce6472987d
commit
bff4f073c8
2 changed files with 29 additions and 43 deletions
|
@ -1542,15 +1542,10 @@ fn render_impl(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if render_mode == RenderMode::Normal {
|
if render_mode == RenderMode::Normal {
|
||||||
let on_trait_page = matches!(*parent.kind, clean::ItemKind::TraitItem(_));
|
let toggled = !(impl_items.is_empty() && default_impl_items.is_empty());
|
||||||
let has_impl_items = !(impl_items.is_empty() && default_impl_items.is_empty());
|
|
||||||
let toggled = !on_trait_page && has_impl_items;
|
|
||||||
let is_implementing_trait = i.inner_impl().trait_.is_some();
|
|
||||||
if toggled {
|
if toggled {
|
||||||
close_tags.insert_str(0, "</details>");
|
close_tags.insert_str(0, "</details>");
|
||||||
write!(w, "<details class=\"rustdoc-toggle implementors-toggle\" open>");
|
write!(w, "<details class=\"rustdoc-toggle implementors-toggle\" open>");
|
||||||
}
|
|
||||||
if toggled {
|
|
||||||
write!(w, "<summary>")
|
write!(w, "<summary>")
|
||||||
}
|
}
|
||||||
render_impl_summary(
|
render_impl_summary(
|
||||||
|
@ -1573,7 +1568,6 @@ fn render_impl(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !on_trait_page {
|
|
||||||
if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) {
|
if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) {
|
||||||
let mut ids = cx.id_map.borrow_mut();
|
let mut ids = cx.id_map.borrow_mut();
|
||||||
write!(
|
write!(
|
||||||
|
@ -1591,7 +1585,6 @@ fn render_impl(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if !default_impl_items.is_empty() || !impl_items.is_empty() {
|
if !default_impl_items.is_empty() || !impl_items.is_empty() {
|
||||||
w.write_str("<div class=\"impl-items\">");
|
w.write_str("<div class=\"impl-items\">");
|
||||||
w.push_buffer(default_impl_items);
|
w.push_buffer(default_impl_items);
|
||||||
|
@ -1601,7 +1594,7 @@ fn render_impl(
|
||||||
w.write_str(&close_tags);
|
w.write_str(&close_tags);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_impl_summary(
|
pub(crate) fn render_impl_summary(
|
||||||
w: &mut Buffer,
|
w: &mut Buffer,
|
||||||
cx: &Context<'_>,
|
cx: &Context<'_>,
|
||||||
i: &Impl,
|
i: &Impl,
|
||||||
|
|
|
@ -15,11 +15,11 @@ use rustc_span::symbol::{kw, sym, Symbol};
|
||||||
use super::{
|
use super::{
|
||||||
collect_paths_for_type, document, ensure_trailing_slash, item_ty_to_strs, notable_traits_decl,
|
collect_paths_for_type, document, ensure_trailing_slash, item_ty_to_strs, notable_traits_decl,
|
||||||
render_assoc_item, render_assoc_items, render_attributes_in_code, render_attributes_in_pre,
|
render_assoc_item, render_assoc_items, render_attributes_in_code, render_attributes_in_pre,
|
||||||
render_impl, render_stability_since_raw, write_srclink, AssocItemLink, Context,
|
render_impl_summary, render_stability_since_raw, write_srclink, AssocItemLink, Context,
|
||||||
};
|
};
|
||||||
use crate::clean::{self, GetDefId};
|
use crate::clean::{self, GetDefId};
|
||||||
use crate::formats::item_type::ItemType;
|
use crate::formats::item_type::ItemType;
|
||||||
use crate::formats::{AssocItemRender, Impl, RenderMode};
|
use crate::formats::{AssocItemRender, Impl};
|
||||||
use crate::html::escape::Escape;
|
use crate::html::escape::Escape;
|
||||||
use crate::html::format::{print_abi_with_space, print_where_clause, Buffer, PrintWithSpace};
|
use crate::html::format::{print_abi_with_space, print_where_clause, Buffer, PrintWithSpace};
|
||||||
use crate::html::highlight;
|
use crate::html::highlight;
|
||||||
|
@ -691,22 +691,17 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra
|
||||||
write_small_section_header(w, "foreign-impls", "Implementations on Foreign Types", "");
|
write_small_section_header(w, "foreign-impls", "Implementations on Foreign Types", "");
|
||||||
|
|
||||||
for implementor in foreign {
|
for implementor in foreign {
|
||||||
let provided_methods = implementor.inner_impl().provided_trait_methods(cx.tcx());
|
let outer_version = implementor.impl_item.stable_since(cx.tcx());
|
||||||
let assoc_link =
|
let outer_const_version = implementor.impl_item.const_stable_since(cx.tcx());
|
||||||
AssocItemLink::GotoSource(implementor.impl_item.def_id, &provided_methods);
|
render_impl_summary(
|
||||||
render_impl(
|
|
||||||
w,
|
w,
|
||||||
cx,
|
cx,
|
||||||
&implementor,
|
&implementor,
|
||||||
it,
|
outer_version.as_deref(),
|
||||||
assoc_link,
|
outer_const_version.as_deref(),
|
||||||
RenderMode::Normal,
|
|
||||||
implementor.impl_item.stable_since(cx.tcx()).as_deref(),
|
|
||||||
implementor.impl_item.const_stable_since(cx.tcx()).as_deref(),
|
|
||||||
false,
|
false,
|
||||||
None,
|
None,
|
||||||
true,
|
true,
|
||||||
false,
|
|
||||||
&[],
|
&[],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1320,19 +1315,17 @@ fn render_implementor(
|
||||||
} => implementor_dups[&path.last()].1,
|
} => implementor_dups[&path.last()].1,
|
||||||
_ => false,
|
_ => false,
|
||||||
};
|
};
|
||||||
render_impl(
|
let outer_version = trait_.stable_since(cx.tcx());
|
||||||
|
let outer_const_version = trait_.const_stable_since(cx.tcx());
|
||||||
|
render_impl_summary(
|
||||||
w,
|
w,
|
||||||
cx,
|
cx,
|
||||||
implementor,
|
implementor,
|
||||||
trait_,
|
outer_version.as_deref(),
|
||||||
AssocItemLink::Anchor(None),
|
outer_const_version.as_deref(),
|
||||||
RenderMode::Normal,
|
|
||||||
trait_.stable_since(cx.tcx()).as_deref(),
|
|
||||||
trait_.const_stable_since(cx.tcx()).as_deref(),
|
|
||||||
false,
|
false,
|
||||||
Some(use_absolute),
|
Some(use_absolute),
|
||||||
false,
|
false,
|
||||||
false,
|
|
||||||
aliases,
|
aliases,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue