]> git.lizzy.rs Git - rust.git/commitdiff
syntax: improve a few allocations
authorljedrz <ljedrz@gmail.com>
Wed, 31 Oct 2018 15:58:51 +0000 (16:58 +0100)
committerljedrz <ljedrz@gmail.com>
Wed, 31 Oct 2018 15:58:51 +0000 (16:58 +0100)
src/libsyntax/ext/expand.rs
src/libsyntax_ext/deriving/generic/mod.rs

index 33b651e1b385403b42f504d7b0ca65c4f255a493..37e7b44694f4881faf2cfd5e762d198f285fc408 100644 (file)
@@ -387,6 +387,8 @@ fn expand_fragment(&mut self, input_fragment: AstFragment) -> AstFragment {
                         add_derived_markers(&mut self.cx, item.span(), &traits, item.clone());
                     let derives = derives.entry(invoc.expansion_data.mark).or_default();
 
+                    derives.reserve(traits.len());
+                    invocations.reserve(traits.len());
                     for path in &traits {
                         let mark = Mark::fresh(self.cx.current_expansion.mark);
                         derives.push(mark);
index 002ecce58e6529207d0a7ca6c5b1eab8d42ff321..dd90ef06c39295da68bab608be45b3a0f5937b65 100644 (file)
@@ -1384,7 +1384,7 @@ fn build_enum_match_tuple<'b>(&self,
             // let __self2_vi = unsafe {
             //     std::intrinsics::discriminant_value(&arg2) } as i32;
             // ```
-            let mut index_let_stmts: Vec<ast::Stmt> = Vec::new();
+            let mut index_let_stmts: Vec<ast::Stmt> = Vec::with_capacity(vi_idents.len() + 1);
 
             // We also build an expression which checks whether all discriminants are equal
             // discriminant_test = __self0_vi == __self1_vi && __self0_vi == __self2_vi && ...