Skip to content

Commit

Permalink
Rollup merge of #91042 - Kobzol:vec-extend-cleanup, r=nagisa
Browse files Browse the repository at this point in the history
Use Vec extend instead of repeated pushes on several places

Inspired by #90813, I tried to use a simple regex (`for .*in.*\{\n.*push\(.*\);\n\s+}`) to search for more places that would use `Vec::push` in a loop and replace them with `Vec::extend`.

These probably won't have as much perf. impact as the original PR (if any), but it would probably be better to do a perf run to see if there are not any regressions.
  • Loading branch information
matthiaskrgr committed Dec 9, 2021
2 parents e6b883c + 883d0a7 commit 793648a
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 16 deletions.
4 changes: 1 addition & 3 deletions compiler/rustc_mir_transform/src/coverage/spans.rs
Original file line number Diff line number Diff line change
Expand Up @@ -329,9 +329,7 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> {
fn mir_to_initial_sorted_coverage_spans(&self) -> Vec<CoverageSpan> {
let mut initial_spans = Vec::<CoverageSpan>::with_capacity(self.mir_body.num_nodes() * 2);
for (bcb, bcb_data) in self.basic_coverage_blocks.iter_enumerated() {
for coverage_span in self.bcb_to_initial_coverage_spans(bcb, bcb_data) {
initial_spans.push(coverage_span);
}
initial_spans.extend(self.bcb_to_initial_coverage_spans(bcb, bcb_data));
}

if initial_spans.is_empty() {
Expand Down
4 changes: 1 addition & 3 deletions compiler/rustc_trait_selection/src/traits/coherence.rs
Original file line number Diff line number Diff line change
Expand Up @@ -498,9 +498,7 @@ fn orphan_check_trait_ref<'tcx>(
return Err(OrphanCheckErr::UncoveredTy(input_ty, local_type));
}

for input_ty in non_local_tys {
non_local_spans.push((input_ty, i == 0));
}
non_local_spans.extend(non_local_tys.into_iter().map(|input_ty| (input_ty, i == 0)));
}
// If we exit above loop, never found a local type.
debug!("orphan_check_trait_ref: no local type");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -362,9 +362,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
.infcx
.probe(|_| self.match_projection_obligation_against_definition_bounds(obligation));

for predicate_index in result {
candidates.vec.push(ProjectionCandidate(predicate_index));
}
candidates.vec.extend(result.into_iter().map(ProjectionCandidate));
}

/// Given an obligation like `<SomeTrait for T>`, searches the obligations that the caller
Expand Down
5 changes: 2 additions & 3 deletions compiler/rustc_typeck/src/check/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -686,9 +686,8 @@ fn bounds_from_generic_predicates<'tcx>(
};
let mut where_clauses = vec![];
for (ty, bounds) in types {
for bound in &bounds {
where_clauses.push(format!("{}: {}", ty, tcx.def_path_str(*bound)));
}
where_clauses
.extend(bounds.into_iter().map(|bound| format!("{}: {}", ty, tcx.def_path_str(bound))));
}
for projection in &projections {
let p = projection.skip_binder();
Expand Down
5 changes: 1 addition & 4 deletions compiler/rustc_typeck/src/check/upvar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -904,10 +904,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
) -> MigrationWarningReason {
let mut reasons = MigrationWarningReason::default();

for auto_trait in auto_trait_reasons {
reasons.auto_traits.push(auto_trait);
}

reasons.auto_traits.extend(auto_trait_reasons);
reasons.drop_order = drop_order;

reasons
Expand Down

0 comments on commit 793648a

Please sign in to comment.