From f0fd9cdffd72659ec6308fa92e81dbb895e18e3e Mon Sep 17 00:00:00 2001 From: Jeremy Smart Date: Thu, 21 Aug 2025 16:21:28 -0400 Subject: [PATCH 1/2] implement Extend<{Group, Literal, Punct, Ident}> for TokenStream --- library/proc_macro/src/lib.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/library/proc_macro/src/lib.rs b/library/proc_macro/src/lib.rs index 162b4fdcc8ae2..8178af15b7393 100644 --- a/library/proc_macro/src/lib.rs +++ b/library/proc_macro/src/lib.rs @@ -377,6 +377,21 @@ impl Extend for TokenStream { } } +macro_rules! extend_items { + ($($item:ident)*) => { + $( + #[stable(feature = "token_stream_extend_tt_items", since = "CURRENT_RUSTC_VERSION")] + impl Extend<$item> for TokenStream { + fn extend>(&mut self, iter: T) { + self.extend(iter.into_iter().map(|i| TokenTree::$item(i))); + } + } + )* + }; +} + +extend_items!(Group Literal Punct Ident); + /// Public implementation details for the `TokenStream` type, such as iterators. #[stable(feature = "proc_macro_lib2", since = "1.29.0")] pub mod token_stream { From ff7081e6e25be74671d2fe775fe25a1015e4b32a Mon Sep 17 00:00:00 2001 From: Jeremy Smart Date: Tue, 26 Aug 2025 17:10:08 +0000 Subject: [PATCH 2/2] Update library/proc_macro/src/lib.rs Co-authored-by: David Tolnay --- library/proc_macro/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/proc_macro/src/lib.rs b/library/proc_macro/src/lib.rs index 8178af15b7393..97dc482689781 100644 --- a/library/proc_macro/src/lib.rs +++ b/library/proc_macro/src/lib.rs @@ -383,7 +383,7 @@ macro_rules! extend_items { #[stable(feature = "token_stream_extend_tt_items", since = "CURRENT_RUSTC_VERSION")] impl Extend<$item> for TokenStream { fn extend>(&mut self, iter: T) { - self.extend(iter.into_iter().map(|i| TokenTree::$item(i))); + self.extend(iter.into_iter().map(TokenTree::$item)); } } )*