]> git.lizzy.rs Git - rust.git/commitdiff
avoid cloning and then iterating
authorKaDiWa <kalle.wachsmuth@gmail.com>
Sat, 13 Aug 2022 13:50:01 +0000 (15:50 +0200)
committerKaDiWa <kalle.wachsmuth@gmail.com>
Sat, 13 Aug 2022 14:16:52 +0000 (16:16 +0200)
12 files changed:
compiler/rustc_builtin_macros/src/deriving/generic/mod.rs
compiler/rustc_parse/src/parser/attr_wrapper.rs
compiler/rustc_parse/src/parser/diagnostics.rs
compiler/rustc_resolve/src/late/diagnostics.rs
compiler/rustc_trait_selection/src/traits/auto_trait.rs
compiler/rustc_typeck/src/astconv/generics.rs
compiler/rustc_typeck/src/check/upvar.rs
src/librustdoc/clean/auto_trait.rs
src/librustdoc/html/render/search_index.rs
src/librustdoc/json/mod.rs
src/tools/compiletest/src/runtest.rs
src/tools/unicode-table-generator/src/raw_emitter.rs

index ef64f52d40b761e723f50be49bd9aafc642b704f..708a7eabc0f9b717b4d2aaa7268be9b630e096df 100644 (file)
@@ -385,8 +385,7 @@ fn visit_ty(&mut self, ty: &'a ast::Ty) {
         // Place bound generic params on a stack, to extract them when a type is encountered.
         fn visit_poly_trait_ref(&mut self, trait_ref: &'a ast::PolyTraitRef) {
             let stack_len = self.bound_generic_params_stack.len();
-            self.bound_generic_params_stack
-                .extend(trait_ref.bound_generic_params.clone().into_iter());
+            self.bound_generic_params_stack.extend(trait_ref.bound_generic_params.iter().cloned());
 
             visit::walk_poly_trait_ref(self, trait_ref);
 
index 6c750ff428f5338acaf7b3d380d57d5e7440ed52..ca0ac7829b1a41fdaae7a17cd85b13f310c5de5b 100644 (file)
@@ -116,7 +116,7 @@ fn create_token_stream(&self) -> AttrAnnotatedTokenStream {
 
         if !self.replace_ranges.is_empty() {
             let mut tokens: Vec<_> = tokens.collect();
-            let mut replace_ranges = self.replace_ranges.clone();
+            let mut replace_ranges = self.replace_ranges.to_vec();
             replace_ranges.sort_by_key(|(range, _)| range.start);
 
             #[cfg(debug_assertions)]
@@ -146,7 +146,7 @@ fn create_token_stream(&self) -> AttrAnnotatedTokenStream {
             // start position, we ensure that any replace range which encloses
             // another replace range will capture the *replaced* tokens for the inner
             // range, not the original tokens.
-            for (range, new_tokens) in replace_ranges.iter().rev() {
+            for (range, new_tokens) in replace_ranges.into_iter().rev() {
                 assert!(!range.is_empty(), "Cannot replace an empty range: {:?}", range);
                 // Replace ranges are only allowed to decrease the number of tokens.
                 assert!(
@@ -165,7 +165,7 @@ fn create_token_stream(&self) -> AttrAnnotatedTokenStream {
 
                 tokens.splice(
                     (range.start as usize)..(range.end as usize),
-                    new_tokens.clone().into_iter().chain(filler),
+                    new_tokens.into_iter().chain(filler),
                 );
             }
             make_token_stream(tokens.into_iter(), self.break_last_token)
@@ -321,7 +321,7 @@ pub fn collect_tokens_trailing_token<R: HasAttrs + HasTokens>(
             self.capture_state.replace_ranges[replace_ranges_start..replace_ranges_end]
                 .iter()
                 .cloned()
-                .chain(inner_attr_replace_ranges.clone().into_iter())
+                .chain(inner_attr_replace_ranges.iter().cloned())
                 .map(|(range, tokens)| {
                     ((range.start - start_calls)..(range.end - start_calls), tokens)
                 })
index f4c6b33a529243872292cfc1cfe15575b602db4e..7f74778593609440a09458249ea28f603a5b3dfb 100644 (file)
@@ -387,7 +387,7 @@ pub(super) fn diagnostic(&self) -> &'a Handler {
     /// This is to avoid losing unclosed delims errors `create_snapshot_for_diagnostic` clears.
     pub(super) fn restore_snapshot(&mut self, snapshot: SnapshotParser<'a>) {
         *self = snapshot.parser;
-        self.unclosed_delims.extend(snapshot.unclosed_delims.clone());
+        self.unclosed_delims.extend(snapshot.unclosed_delims);
     }
 
     pub fn unclosed_delims(&self) -> &[UnmatchedBrace] {
index cb133841bca5a2ac7c9ce97cc322fb280dd34615..5cacd7fc681b0a6b28dee60e22cc0e847f12b312 100644 (file)
@@ -2300,7 +2300,7 @@ pub(crate) fn add_missing_lifetime_specifiers_label(
                         err.multipart_suggestion_verbose(
                             message,
                             std::iter::once((span, intro_sugg))
-                                .chain(spans_suggs.clone())
+                                .chain(spans_suggs.iter().cloned())
                                 .collect(),
                             Applicability::MaybeIncorrect,
                         );
index 6b230210888503d1c34412684eff79fbacd4f186..4bab99355012e0792b8e3135040db1be28f11032 100644 (file)
@@ -341,7 +341,7 @@ fn evaluate_predicates(
                         }
                     }
 
-                    let obligations = impl_source.clone().nested_obligations().into_iter();
+                    let obligations = impl_source.borrow_nested_obligations().iter().cloned();
 
                     if !self.evaluate_nested_obligations(
                         ty,
index 40aa27a29e957ce0955a64a020cce48281cd7ce0..ad0da4bed4573caf03c716f585f6bd8968a34a3b 100644 (file)
@@ -298,9 +298,8 @@ pub fn create_substs_for_generic_args<'a>(
                                     // show that order to the user as a possible order for the parameters
                                     let mut param_types_present = defs
                                         .params
-                                        .clone()
-                                        .into_iter()
-                                        .map(|param| (param.kind.to_ord(), param))
+                                        .iter()
+                                        .map(|param| (param.kind.to_ord(), param.clone()))
                                         .collect::<Vec<(ParamKindOrd, GenericParamDef)>>();
                                     param_types_present.sort_by_key(|(ord, _)| *ord);
                                     let (mut param_types_present, ordered_params): (
index dd8f943b985ffecb56859814bb43d25e4e9f10ea..0afc153300bf2449c381744a26b415ab3b8677e0 100644 (file)
@@ -1217,7 +1217,7 @@ fn compute_2229_migrations(
 
                 // Combine all the reasons of why the root variable should be captured as a result of
                 // auto trait implementation issues
-                auto_trait_migration_reasons.extend(capture_trait_reasons.clone());
+                auto_trait_migration_reasons.extend(capture_trait_reasons.iter().copied());
 
                 diagnostics_info.push(MigrationLintNote {
                     captures_info,
index a94520b121926e254adfe628c76a889063ea4783..029dc8616743abba6ad0516647c988db516b89cf 100644 (file)
@@ -525,8 +525,8 @@ fn param_env_to_generics(
                             GenericBound::TraitBound(ref mut p, _) => {
                                 // Insert regions into the for_generics hash map first, to ensure
                                 // that we don't end up with duplicate bounds (e.g., for<'b, 'b>)
-                                for_generics.extend(p.generic_params.clone());
-                                p.generic_params = for_generics.into_iter().collect();
+                                for_generics.extend(p.generic_params.drain(..));
+                                p.generic_params.extend(for_generics);
                                 self.is_fn_trait(&p.trait_)
                             }
                             _ => false,
index d672f0bb5992b8017d941d7424ee1a7fd635ce77..8eb9c07f8a7964d9440383c8519052fa6372c20a 100644 (file)
@@ -544,10 +544,15 @@ fn get_fn_inputs_and_outputs<'tcx>(
             (true, _) => (Some(impl_self), &func.generics),
             (_, true) => (Some(impl_self), impl_generics),
             (false, false) => {
-                let mut params = func.generics.params.clone();
-                params.extend(impl_generics.params.clone());
-                let mut where_predicates = func.generics.where_predicates.clone();
-                where_predicates.extend(impl_generics.where_predicates.clone());
+                let params =
+                    func.generics.params.iter().chain(&impl_generics.params).cloned().collect();
+                let where_predicates = func
+                    .generics
+                    .where_predicates
+                    .iter()
+                    .chain(&impl_generics.where_predicates)
+                    .cloned()
+                    .collect();
                 combined_generics = clean::Generics { params, where_predicates };
                 (Some(impl_self), &combined_generics)
             }
index 6364d00d0624e5a938eaca00b7167253a2bec21c..a07668a2b6d648741b87fc6adaa95ecaa291164d 100644 (file)
@@ -106,7 +106,9 @@ fn get_trait_items(&mut self) -> Vec<(types::Id, types::Item)> {
                 // only need to synthesize items for external traits
                 if !id.is_local() {
                     let trait_item = &trait_item.trait_;
-                    trait_item.items.clone().into_iter().for_each(|i| self.item(i).unwrap());
+                    for item in &trait_item.items {
+                        self.item(item.clone()).unwrap();
+                    }
                     let item_id = from_item_id(id.into(), self.tcx);
                     Some((
                         item_id.clone(),
@@ -274,10 +276,9 @@ fn after_krate(&mut self) -> Result<(), Error> {
             paths: self
                 .cache
                 .paths
-                .clone()
-                .into_iter()
-                .chain(self.cache.external_paths.clone().into_iter())
-                .map(|(k, (path, kind))| {
+                .iter()
+                .chain(&self.cache.external_paths)
+                .map(|(&k, &(ref path, kind))| {
                     (
                         from_item_id(k.into(), self.tcx),
                         types::ItemSummary {
index 47f2a2d34821c737a6a2daab7baecc9241e09e96..6bd41a50a6d42b0032878132f5561897bfbd994a 100644 (file)
@@ -1702,7 +1702,7 @@ fn build_all_auxiliary(&self, rustc: &mut Command) -> PathBuf {
 
     fn compose_and_run_compiler(&self, mut rustc: Command, input: Option<String>) -> ProcRes {
         let aux_dir = self.build_all_auxiliary(&mut rustc);
-        self.props.unset_rustc_env.clone().iter().fold(&mut rustc, |rustc, v| rustc.env_remove(v));
+        self.props.unset_rustc_env.iter().fold(&mut rustc, Command::env_remove);
         rustc.envs(self.props.rustc_env.clone());
         self.compose_and_run(
             rustc,
index ab8eaee9541a2891bd3c163b61b3fd7b147b406c..38a4aa9d74967f2c8ed9934a91e87721f2b0ea4b 100644 (file)
@@ -121,12 +121,8 @@ fn emit_chunk_map(&mut self, zero_at: u8, compressed_words: &[u8], chunk_length:
         for chunk in compressed_words.chunks(chunk_length) {
             chunks.insert(chunk);
         }
-        let chunk_map = chunks
-            .clone()
-            .into_iter()
-            .enumerate()
-            .map(|(idx, chunk)| (chunk, idx))
-            .collect::<HashMap<_, _>>();
+        let chunk_map =
+            chunks.iter().enumerate().map(|(idx, &chunk)| (chunk, idx)).collect::<HashMap<_, _>>();
         let mut chunk_indices = Vec::new();
         for chunk in compressed_words.chunks(chunk_length) {
             chunk_indices.push(chunk_map[chunk]);