Allocate fewer Strings at a time

This commit is contained in:
ashtneoi 2018-08-13 22:01:54 -07:00
parent 81c27c6af7
commit 3c3a7bad49

View File

@ -383,7 +383,7 @@ impl<'a, 'gcx, 'tcx> MirBorrowckCtxt<'a, 'gcx, 'tcx> {
err: &mut DiagnosticBuilder<'a>, err: &mut DiagnosticBuilder<'a>,
binds_to: &[Local], binds_to: &[Local],
) { ) {
let mut suggestions: Vec<(Span, String, String)> = Vec::new(); let mut suggestions: Vec<(Span, &str, String)> = Vec::new();
for local in binds_to { for local in binds_to {
let bind_to = &self.mir.local_decls[*local]; let bind_to = &self.mir.local_decls[*local];
if let Some( if let Some(
@ -411,7 +411,7 @@ impl<'a, 'gcx, 'tcx> MirBorrowckCtxt<'a, 'gcx, 'tcx> {
} }
suggestions.push(( suggestions.push((
pat_span, pat_span,
format!("consider removing the `{}`", to_remove), to_remove,
suggestion.to_owned(), suggestion.to_owned(),
)); ));
} }
@ -419,8 +419,12 @@ impl<'a, 'gcx, 'tcx> MirBorrowckCtxt<'a, 'gcx, 'tcx> {
} }
suggestions.sort_unstable_by_key(|&(span, _, _)| span); suggestions.sort_unstable_by_key(|&(span, _, _)| span);
suggestions.dedup_by_key(|&mut (span, _, _)| span); suggestions.dedup_by_key(|&mut (span, _, _)| span);
for (span, msg, suggestion) in suggestions { for (span, to_remove, suggestion) in suggestions {
err.span_suggestion(span, &msg, suggestion); err.span_suggestion(
span,
&format!("consider removing the `{}`", to_remove),
suggestion
);
} }
} }