Skip to content

Commit ce36e88

Browse files
committed
Auto merge of rust-lang#100497 - kadiwa4:remove_clone_into_iter, r=cjgillot
Avoid cloning a collection only to iterate over it `@rustbot` label: +C-cleanup
2 parents 223d16e + 4eebcb9 commit ce36e88

File tree

12 files changed

+31
-31
lines changed

12 files changed

+31
-31
lines changed

compiler/rustc_builtin_macros/src/deriving/generic/mod.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,7 @@ fn find_type_parameters(
383383
// Place bound generic params on a stack, to extract them when a type is encountered.
384384
fn visit_poly_trait_ref(&mut self, trait_ref: &'a ast::PolyTraitRef) {
385385
let stack_len = self.bound_generic_params_stack.len();
386-
self.bound_generic_params_stack
387-
.extend(trait_ref.bound_generic_params.clone().into_iter());
386+
self.bound_generic_params_stack.extend(trait_ref.bound_generic_params.iter().cloned());
388387

389388
visit::walk_poly_trait_ref(self, trait_ref);
390389

compiler/rustc_parse/src/parser/attr_wrapper.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ impl CreateTokenStream for LazyTokenStreamImpl {
117117

118118
if !self.replace_ranges.is_empty() {
119119
let mut tokens: Vec<_> = tokens.collect();
120-
let mut replace_ranges = self.replace_ranges.clone();
120+
let mut replace_ranges = self.replace_ranges.to_vec();
121121
replace_ranges.sort_by_key(|(range, _)| range.start);
122122

123123
#[cfg(debug_assertions)]
@@ -147,7 +147,7 @@ impl CreateTokenStream for LazyTokenStreamImpl {
147147
// start position, we ensure that any replace range which encloses
148148
// another replace range will capture the *replaced* tokens for the inner
149149
// range, not the original tokens.
150-
for (range, new_tokens) in replace_ranges.iter().rev() {
150+
for (range, new_tokens) in replace_ranges.into_iter().rev() {
151151
assert!(!range.is_empty(), "Cannot replace an empty range: {:?}", range);
152152
// Replace ranges are only allowed to decrease the number of tokens.
153153
assert!(
@@ -166,7 +166,7 @@ impl CreateTokenStream for LazyTokenStreamImpl {
166166

167167
tokens.splice(
168168
(range.start as usize)..(range.end as usize),
169-
new_tokens.clone().into_iter().chain(filler),
169+
new_tokens.into_iter().chain(filler),
170170
);
171171
}
172172
make_token_stream(tokens.into_iter(), self.break_last_token)
@@ -322,7 +322,7 @@ impl<'a> Parser<'a> {
322322
self.capture_state.replace_ranges[replace_ranges_start..replace_ranges_end]
323323
.iter()
324324
.cloned()
325-
.chain(inner_attr_replace_ranges.clone().into_iter())
325+
.chain(inner_attr_replace_ranges.iter().cloned())
326326
.map(|(range, tokens)| {
327327
((range.start - start_calls)..(range.end - start_calls), tokens)
328328
})

compiler/rustc_parse/src/parser/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,7 @@ impl<'a> Parser<'a> {
759759
/// This is to avoid losing unclosed delims errors `create_snapshot_for_diagnostic` clears.
760760
pub(super) fn restore_snapshot(&mut self, snapshot: SnapshotParser<'a>) {
761761
*self = snapshot.parser;
762-
self.unclosed_delims.extend(snapshot.unclosed_delims.clone());
762+
self.unclosed_delims.extend(snapshot.unclosed_delims);
763763
}
764764

765765
pub fn unclosed_delims(&self) -> &[UnmatchedBrace] {

compiler/rustc_resolve/src/late/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2350,7 +2350,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
23502350
err.multipart_suggestion_verbose(
23512351
message,
23522352
std::iter::once((span, intro_sugg))
2353-
.chain(spans_suggs.clone())
2353+
.chain(spans_suggs.iter().cloned())
23542354
.collect(),
23552355
Applicability::MaybeIncorrect,
23562356
);

compiler/rustc_trait_selection/src/traits/auto_trait.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ impl<'tcx> AutoTraitFinder<'tcx> {
341341
}
342342
}
343343

344-
let obligations = impl_source.clone().nested_obligations().into_iter();
344+
let obligations = impl_source.borrow_nested_obligations().iter().cloned();
345345

346346
if !self.evaluate_nested_obligations(
347347
ty,

compiler/rustc_typeck/src/astconv/generics.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -298,9 +298,8 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
298298
// show that order to the user as a possible order for the parameters
299299
let mut param_types_present = defs
300300
.params
301-
.clone()
302-
.into_iter()
303-
.map(|param| (param.kind.to_ord(), param))
301+
.iter()
302+
.map(|param| (param.kind.to_ord(), param.clone()))
304303
.collect::<Vec<(ParamKindOrd, GenericParamDef)>>();
305304
param_types_present.sort_by_key(|(ord, _)| *ord);
306305
let (mut param_types_present, ordered_params): (

compiler/rustc_typeck/src/check/upvar.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1217,7 +1217,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
12171217

12181218
// Combine all the reasons of why the root variable should be captured as a result of
12191219
// auto trait implementation issues
1220-
auto_trait_migration_reasons.extend(capture_trait_reasons.clone());
1220+
auto_trait_migration_reasons.extend(capture_trait_reasons.iter().copied());
12211221

12221222
diagnostics_info.push(MigrationLintNote {
12231223
captures_info,

src/librustdoc/clean/auto_trait.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -525,8 +525,8 @@ where
525525
GenericBound::TraitBound(ref mut p, _) => {
526526
// Insert regions into the for_generics hash map first, to ensure
527527
// that we don't end up with duplicate bounds (e.g., for<'b, 'b>)
528-
for_generics.extend(p.generic_params.clone());
529-
p.generic_params = for_generics.into_iter().collect();
528+
for_generics.extend(p.generic_params.drain(..));
529+
p.generic_params.extend(for_generics);
530530
self.is_fn_trait(&p.trait_)
531531
}
532532
_ => false,

src/librustdoc/html/render/search_index.rs

+9-4
Original file line numberDiff line numberDiff line change
@@ -544,10 +544,15 @@ fn get_fn_inputs_and_outputs<'tcx>(
544544
(true, _) => (Some(impl_self), &func.generics),
545545
(_, true) => (Some(impl_self), impl_generics),
546546
(false, false) => {
547-
let mut params = func.generics.params.clone();
548-
params.extend(impl_generics.params.clone());
549-
let mut where_predicates = func.generics.where_predicates.clone();
550-
where_predicates.extend(impl_generics.where_predicates.clone());
547+
let params =
548+
func.generics.params.iter().chain(&impl_generics.params).cloned().collect();
549+
let where_predicates = func
550+
.generics
551+
.where_predicates
552+
.iter()
553+
.chain(&impl_generics.where_predicates)
554+
.cloned()
555+
.collect();
551556
combined_generics = clean::Generics { params, where_predicates };
552557
(Some(impl_self), &combined_generics)
553558
}

src/librustdoc/json/mod.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ impl<'tcx> JsonRenderer<'tcx> {
106106
// only need to synthesize items for external traits
107107
if !id.is_local() {
108108
let trait_item = &trait_item.trait_;
109-
trait_item.items.clone().into_iter().for_each(|i| self.item(i).unwrap());
109+
for item in &trait_item.items {
110+
self.item(item.clone()).unwrap();
111+
}
110112
let item_id = from_item_id(id.into(), self.tcx);
111113
Some((
112114
item_id.clone(),
@@ -274,10 +276,9 @@ impl<'tcx> FormatRenderer<'tcx> for JsonRenderer<'tcx> {
274276
paths: self
275277
.cache
276278
.paths
277-
.clone()
278-
.into_iter()
279-
.chain(self.cache.external_paths.clone().into_iter())
280-
.map(|(k, (path, kind))| {
279+
.iter()
280+
.chain(&self.cache.external_paths)
281+
.map(|(&k, &(ref path, kind))| {
281282
(
282283
from_item_id(k.into(), self.tcx),
283284
types::ItemSummary {

src/tools/compiletest/src/runtest.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1703,7 +1703,7 @@ impl<'test> TestCx<'test> {
17031703

17041704
fn compose_and_run_compiler(&self, mut rustc: Command, input: Option<String>) -> ProcRes {
17051705
let aux_dir = self.build_all_auxiliary(&mut rustc);
1706-
self.props.unset_rustc_env.clone().iter().fold(&mut rustc, |rustc, v| rustc.env_remove(v));
1706+
self.props.unset_rustc_env.iter().fold(&mut rustc, Command::env_remove);
17071707
rustc.envs(self.props.rustc_env.clone());
17081708
self.compose_and_run(
17091709
rustc,

src/tools/unicode-table-generator/src/raw_emitter.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,8 @@ impl RawEmitter {
121121
for chunk in compressed_words.chunks(chunk_length) {
122122
chunks.insert(chunk);
123123
}
124-
let chunk_map = chunks
125-
.clone()
126-
.into_iter()
127-
.enumerate()
128-
.map(|(idx, chunk)| (chunk, idx))
129-
.collect::<HashMap<_, _>>();
124+
let chunk_map =
125+
chunks.iter().enumerate().map(|(idx, &chunk)| (chunk, idx)).collect::<HashMap<_, _>>();
130126
let mut chunk_indices = Vec::new();
131127
for chunk in compressed_words.chunks(chunk_length) {
132128
chunk_indices.push(chunk_map[chunk]);

0 commit comments

Comments
 (0)