Skip to content

Commit e90f129

Browse files
committed
rustdoc: use ThinVec for generic arg parts
This reduces the size of both these args, and of path segments, so should measurably help with memory use.
1 parent 0cc4f4f commit e90f129

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

src/librustdoc/clean/types.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -2254,8 +2254,8 @@ impl GenericArg {
22542254

22552255
#[derive(Clone, PartialEq, Eq, Debug, Hash)]
22562256
pub(crate) enum GenericArgs {
2257-
AngleBracketed { args: Box<[GenericArg]>, constraints: ThinVec<AssocItemConstraint> },
2258-
Parenthesized { inputs: Box<[Type]>, output: Option<Box<Type>> },
2257+
AngleBracketed { args: ThinVec<GenericArg>, constraints: ThinVec<AssocItemConstraint> },
2258+
Parenthesized { inputs: ThinVec<Type>, output: Option<Box<Type>> },
22592259
}
22602260

22612261
impl GenericArgs {
@@ -2279,7 +2279,7 @@ impl GenericArgs {
22792279
assoc: PathSegment {
22802280
name: sym::Output,
22812281
args: GenericArgs::AngleBracketed {
2282-
args: Vec::new().into_boxed_slice(),
2282+
args: ThinVec::new(),
22832283
constraints: ThinVec::new(),
22842284
},
22852285
},
@@ -2596,12 +2596,12 @@ mod size_asserts {
25962596
static_assert_size!(Crate, 56); // frequently moved by-value
25972597
static_assert_size!(DocFragment, 32);
25982598
static_assert_size!(GenericArg, 32);
2599-
static_assert_size!(GenericArgs, 32);
2599+
static_assert_size!(GenericArgs, 24);
26002600
static_assert_size!(GenericParamDef, 40);
26012601
static_assert_size!(Generics, 16);
26022602
static_assert_size!(Item, 48);
26032603
static_assert_size!(ItemKind, 48);
2604-
static_assert_size!(PathSegment, 40);
2604+
static_assert_size!(PathSegment, 32);
26052605
static_assert_size!(Type, 32);
26062606
// tidy-alphabetical-end
26072607
}

src/librustdoc/html/render/search_index.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -821,7 +821,7 @@ pub(crate) fn get_function_type_for_search(
821821
.map(|name| clean::PathSegment {
822822
name: *name,
823823
args: clean::GenericArgs::AngleBracketed {
824-
args: Vec::new().into_boxed_slice(),
824+
args: ThinVec::new(),
825825
constraints: ThinVec::new(),
826826
},
827827
})

src/librustdoc/json/conversions.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -231,11 +231,11 @@ impl FromClean<clean::GenericArgs> for GenericArgs {
231231
use clean::GenericArgs::*;
232232
match args {
233233
AngleBracketed { args, constraints } => GenericArgs::AngleBracketed {
234-
args: args.into_vec().into_json(renderer),
234+
args: args.into_json(renderer),
235235
constraints: constraints.into_json(renderer),
236236
},
237237
Parenthesized { inputs, output } => GenericArgs::Parenthesized {
238-
inputs: inputs.into_vec().into_json(renderer),
238+
inputs: inputs.into_json(renderer),
239239
output: output.map(|a| (*a).into_json(renderer)),
240240
},
241241
}

0 commit comments

Comments
 (0)