Skip to content

Commit 4d77382

Browse files
committed
Avoid a few allocations.
1 parent 2d74e9b commit 4d77382

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

src/librustc/hir/lowering.rs

+13-11
Original file line numberDiff line numberDiff line change
@@ -1890,7 +1890,6 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
18901890
if !generic_args.parenthesized && !has_lifetimes {
18911891
generic_args.args = self
18921892
.elided_path_lifetimes(path_span, expected_lifetimes)
1893-
.into_iter()
18941893
.map(|lt| GenericArg::Lifetime(lt))
18951894
.chain(generic_args.args.into_iter())
18961895
.collect();
@@ -2460,16 +2459,15 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
24602459
hir::Lifetime { hir_id: self.lower_node_id(id), span, name }
24612460
}
24622461

2463-
fn lower_generic_params_mut(
2464-
&mut self,
2465-
params: &[GenericParam],
2466-
add_bounds: &NodeMap<Vec<GenericBound>>,
2467-
mut itctx: ImplTraitContext<'_, 'hir>,
2468-
) -> Vec<hir::GenericParam<'hir>> {
2462+
fn lower_generic_params_mut<'s>(
2463+
&'s mut self,
2464+
params: &'s [GenericParam],
2465+
add_bounds: &'s NodeMap<Vec<GenericBound>>,
2466+
mut itctx: ImplTraitContext<'s, 'hir>,
2467+
) -> impl Iterator<Item = hir::GenericParam<'hir>> + Captures<'a> + Captures<'s> {
24692468
params
24702469
.iter()
2471-
.map(|param| self.lower_generic_param(param, add_bounds, itctx.reborrow()))
2472-
.collect()
2470+
.map(move |param| self.lower_generic_param(param, add_bounds, itctx.reborrow()))
24732471
}
24742472

24752473
fn lower_generic_params(
@@ -3200,8 +3198,12 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
32003198
/// `std::cell::Ref<T>`; note that implicit lifetimes in these
32013199
/// sorts of cases are deprecated. This may therefore report a warning or an
32023200
/// error, depending on the mode.
3203-
fn elided_path_lifetimes(&mut self, span: Span, count: usize) -> Vec<hir::Lifetime> {
3204-
(0..count).map(|_| self.elided_path_lifetime(span)).collect()
3201+
fn elided_path_lifetimes<'s>(
3202+
&'s mut self,
3203+
span: Span,
3204+
count: usize,
3205+
) -> impl Iterator<Item = hir::Lifetime> + Captures<'a> + Captures<'s> + Captures<'hir> {
3206+
(0..count).map(move |_| self.elided_path_lifetime(span))
32053207
}
32063208

32073209
fn elided_path_lifetime(&mut self, span: Span) -> hir::Lifetime {

src/librustc/hir/lowering/item.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
13451345
}
13461346

13471347
GenericsCtor {
1348-
params: self.lower_generic_params_mut(&generics.params, &add_bounds, itctx),
1348+
params: self.lower_generic_params_mut(&generics.params, &add_bounds, itctx).collect(),
13491349
where_clause: self.lower_where_clause(&generics.where_clause),
13501350
span: generics.span,
13511351
}

0 commit comments

Comments
 (0)