Auto merge of #145851 - lolbinarycat:rustdoc-optimize, r=GuillaumeGomez
rustdoc: a few micro-optimizations targeted at build_impl Unsure if these will be anything substantial, but the first one at least should git rid of quite a few branches, second one unsure if it's worth it. r? `@GuillaumeGomez`
This commit is contained in:
commit
cdb45c87e2
2 changed files with 24 additions and 19 deletions
|
|
@ -207,8 +207,10 @@ pub fn attrs_to_doc_fragments<'a, A: AttributeExt + Clone + 'a>(
|
|||
attrs: impl Iterator<Item = (&'a A, Option<DefId>)>,
|
||||
doc_only: bool,
|
||||
) -> (Vec<DocFragment>, ThinVec<A>) {
|
||||
let mut doc_fragments = Vec::new();
|
||||
let mut other_attrs = ThinVec::<A>::new();
|
||||
let (min_size, max_size) = attrs.size_hint();
|
||||
let size_hint = max_size.unwrap_or(min_size);
|
||||
let mut doc_fragments = Vec::with_capacity(size_hint);
|
||||
let mut other_attrs = ThinVec::<A>::with_capacity(if doc_only { 0 } else { size_hint });
|
||||
for (attr, item_id) in attrs {
|
||||
if let Some((doc_str, comment_kind)) = attr.doc_str_and_comment_kind() {
|
||||
let doc = beautify_doc_string(doc_str, comment_kind);
|
||||
|
|
@ -230,6 +232,9 @@ pub fn attrs_to_doc_fragments<'a, A: AttributeExt + Clone + 'a>(
|
|||
}
|
||||
}
|
||||
|
||||
doc_fragments.shrink_to_fit();
|
||||
other_attrs.shrink_to_fit();
|
||||
|
||||
unindent_doc_fragments(&mut doc_fragments);
|
||||
|
||||
(doc_fragments, other_attrs)
|
||||
|
|
|
|||
|
|
@ -572,30 +572,30 @@ pub(crate) fn build_impl(
|
|||
super::build_deref_target_impls(cx, &trait_items, ret);
|
||||
}
|
||||
|
||||
// Return if the trait itself or any types of the generic parameters are doc(hidden).
|
||||
let mut stack: Vec<&Type> = vec![&for_];
|
||||
if !document_hidden {
|
||||
// Return if the trait itself or any types of the generic parameters are doc(hidden).
|
||||
let mut stack: Vec<&Type> = vec![&for_];
|
||||
|
||||
if let Some(did) = trait_.as_ref().map(|t| t.def_id())
|
||||
&& !document_hidden
|
||||
&& tcx.is_doc_hidden(did)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if let Some(generics) = trait_.as_ref().and_then(|t| t.generics()) {
|
||||
stack.extend(generics);
|
||||
}
|
||||
|
||||
while let Some(ty) = stack.pop() {
|
||||
if let Some(did) = ty.def_id(&cx.cache)
|
||||
&& !document_hidden
|
||||
if let Some(did) = trait_.as_ref().map(|t| t.def_id())
|
||||
&& tcx.is_doc_hidden(did)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if let Some(generics) = ty.generics() {
|
||||
|
||||
if let Some(generics) = trait_.as_ref().and_then(|t| t.generics()) {
|
||||
stack.extend(generics);
|
||||
}
|
||||
|
||||
while let Some(ty) = stack.pop() {
|
||||
if let Some(did) = ty.def_id(&cx.cache)
|
||||
&& tcx.is_doc_hidden(did)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if let Some(generics) = ty.generics() {
|
||||
stack.extend(generics);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(did) = trait_.as_ref().map(|t| t.def_id()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue