File tree Expand file tree Collapse file tree 3 files changed +34
-0
lines changed Expand file tree Collapse file tree 3 files changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -169,6 +169,13 @@ impl Extend<TokenTree> for TokenStream {
169169 }
170170}
171171
172+ impl Extend < TokenStream > for TokenStream {
173+ fn extend < I : IntoIterator < Item = TokenStream > > ( & mut self , streams : I ) {
174+ self . inner
175+ . extend ( streams. into_iter ( ) . map ( |stream| stream. inner ) )
176+ }
177+ }
178+
172179/// Collects a number of token trees into a single stream.
173180impl FromIterator < TokenTree > for TokenStream {
174181 fn from_iter < I : IntoIterator < Item = TokenTree > > ( streams : I ) -> Self {
Original file line number Diff line number Diff line change @@ -160,6 +160,13 @@ impl Extend<TokenTree> for TokenStream {
160160 }
161161}
162162
163+ impl Extend < TokenStream > for TokenStream {
164+ fn extend < I : IntoIterator < Item = TokenStream > > ( & mut self , streams : I ) {
165+ self . inner
166+ . extend ( streams. into_iter ( ) . flat_map ( |stream| stream) ) ;
167+ }
168+ }
169+
163170pub type TokenTreeIter = vec:: IntoIter < TokenTree > ;
164171
165172impl IntoIterator for TokenStream {
Original file line number Diff line number Diff line change @@ -61,6 +61,13 @@ impl TokenStream {
6161 TokenStream :: Stable ( _) => mismatch ( ) ,
6262 }
6363 }
64+
65+ fn unwrap_stable ( self ) -> stable:: TokenStream {
66+ match self {
67+ TokenStream :: Nightly ( _) => mismatch ( ) ,
68+ TokenStream :: Stable ( s) => s,
69+ }
70+ }
6471}
6572
6673impl FromStr for TokenStream {
@@ -171,6 +178,19 @@ impl Extend<TokenTree> for TokenStream {
171178 }
172179}
173180
181+ impl Extend < TokenStream > for TokenStream {
182+ fn extend < I : IntoIterator < Item = TokenStream > > ( & mut self , streams : I ) {
183+ match self {
184+ TokenStream :: Nightly ( tts) => {
185+ tts. extend ( streams. into_iter ( ) . map ( |stream| stream. unwrap_nightly ( ) ) )
186+ }
187+ TokenStream :: Stable ( tts) => {
188+ tts. extend ( streams. into_iter ( ) . map ( |stream| stream. unwrap_stable ( ) ) )
189+ }
190+ }
191+ }
192+ }
193+
174194impl fmt:: Debug for TokenStream {
175195 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
176196 match self {
You can’t perform that action at this time.
0 commit comments