about summary refs log tree commit diff
path: root/compiler/rustc_builtin_macros/src
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2025-07-28 17:24:28 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2025-07-28 17:35:09 +0300
commitc56f49dc34f43568122f057d72f3472b3fcd4d8e (patch)
tree125c222938820b987e90ae0355df514d50a44a6b /compiler/rustc_builtin_macros/src
parent65b6cdb6a6d33987b9d642a4882283c71fbe3957 (diff)
downloadrust-c56f49dc34f43568122f057d72f3472b3fcd4d8e.tar.gz
rust-c56f49dc34f43568122f057d72f3472b3fcd4d8e.zip
expand: Micro-optimize prelude injection
Use `splice` to avoid shifting the other items twice.
Put `extern crate std;` first so it's already resolved when we resolve `::std::prelude::rust_20XX`.

Diffstat (limited to 'compiler/rustc_builtin_macros/src')
-rw-r--r--compiler/rustc_builtin_macros/src/standard_library_imports.rs4
1 files changed, 1 insertions, 3 deletions
diff --git a/compiler/rustc_builtin_macros/src/standard_library_imports.rs b/compiler/rustc_builtin_macros/src/standard_library_imports.rs
index 682e7c9b17a..2068b5ca54d 100644
--- a/compiler/rustc_builtin_macros/src/standard_library_imports.rs
+++ b/compiler/rustc_builtin_macros/src/standard_library_imports.rs
@@ -47,8 +47,6 @@ pub fn inject(
         ast::ItemKind::ExternCrate(None, Ident::new(name, ident_span)),
     );
 
-    krate.items.insert(0, item);
-
     let root = (edition == Edition2015).then_some(kw::PathRoot);
 
     let import_path = root
@@ -75,6 +73,6 @@ pub fn inject(
         }),
     );
 
-    krate.items.insert(0, use_item);
+    krate.items.splice(0..0, [item, use_item]);
     krate.items.len() - orig_num_items
 }