diff options
| author | binarycat <binarycat@envs.net> | 2025-08-25 10:26:22 -0500 |
|---|---|---|
| committer | binarycat <binarycat@envs.net> | 2025-08-25 10:26:22 -0500 |
| commit | f16d1fcb55d0b9c5d2a6c58e20c4352aa4a7c5fd (patch) | |
| tree | d9de9b9a0c6d1e0cda3c4a606878bc5375e2e5bd /compiler/rustc_resolve | |
| parent | 2e969c720b444420876a2b16cf10402553093a3c (diff) | |
| download | rust-f16d1fcb55d0b9c5d2a6c58e20c4352aa4a7c5fd.tar.gz rust-f16d1fcb55d0b9c5d2a6c58e20c4352aa4a7c5fd.zip | |
use size_hint in attrs_to_doc_fragments
Diffstat (limited to 'compiler/rustc_resolve')
| -rw-r--r-- | compiler/rustc_resolve/src/rustdoc.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/rustc_resolve/src/rustdoc.rs b/compiler/rustc_resolve/src/rustdoc.rs index 6450f63472c..f9f2f84bc50 100644 --- a/compiler/rustc_resolve/src/rustdoc.rs +++ b/compiler/rustc_resolve/src/rustdoc.rs @@ -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) |
