@@ -199,39 +199,43 @@ pub mod token_stream {
199
199
200
200
impl ToString for TokenStream {
201
201
fn to_string ( & self ) -> String {
202
- tokentrees_to_text ( & self . token_trees [ ..] )
203
- }
204
- }
202
+ return tokentrees_to_text ( & self . token_trees [ ..] ) ;
203
+
204
+ fn tokentrees_to_text ( tkns : & [ tt:: TokenTree ] ) -> String {
205
+ tkns. iter ( )
206
+ . fold ( ( String :: new ( ) , true ) , |( last, last_to_joint) , tkn| {
207
+ let s = [ last, tokentree_to_text ( tkn) ] . join ( if last_to_joint {
208
+ ""
209
+ } else {
210
+ " "
211
+ } ) ;
212
+ let mut is_joint = false ;
213
+ if let tt:: TokenTree :: Leaf ( tt:: Leaf :: Punct ( punct) ) = tkn {
214
+ if punct. spacing == tt:: Spacing :: Joint {
215
+ is_joint = true ;
216
+ }
217
+ }
218
+ ( s, is_joint)
219
+ } )
220
+ . 0
221
+ }
205
222
206
- fn tokentrees_to_text ( tkns : & [ tt:: TokenTree ] ) -> String {
207
- tkns. iter ( )
208
- . fold ( ( String :: new ( ) , true ) , |( last, last_to_joint) , tkn| {
209
- let s = [ last, tokentree_to_text ( tkn) ] . join ( if last_to_joint { "" } else { " " } ) ;
210
- let mut is_joint = false ;
211
- if let tt:: TokenTree :: Leaf ( tt:: Leaf :: Punct ( punct) ) = tkn {
212
- if punct. spacing == tt:: Spacing :: Joint {
213
- is_joint = true ;
223
+ fn tokentree_to_text ( tkn : & tt:: TokenTree ) -> String {
224
+ match tkn {
225
+ tt:: TokenTree :: Leaf ( tt:: Leaf :: Ident ( ident) ) => ident. text . clone ( ) . into ( ) ,
226
+ tt:: TokenTree :: Leaf ( tt:: Leaf :: Literal ( literal) ) => literal. text . clone ( ) . into ( ) ,
227
+ tt:: TokenTree :: Leaf ( tt:: Leaf :: Punct ( punct) ) => format ! ( "{}" , punct. char ) ,
228
+ tt:: TokenTree :: Subtree ( subtree) => {
229
+ let content = tokentrees_to_text ( & subtree. token_trees ) ;
230
+ let ( open, close) = match subtree. delimiter . map ( |it| it. kind ) {
231
+ None => ( "" , "" ) ,
232
+ Some ( tt:: DelimiterKind :: Brace ) => ( "{" , "}" ) ,
233
+ Some ( tt:: DelimiterKind :: Parenthesis ) => ( "(" , ")" ) ,
234
+ Some ( tt:: DelimiterKind :: Bracket ) => ( "[" , "]" ) ,
235
+ } ;
236
+ format ! ( "{}{}{}" , open, content, close)
214
237
}
215
238
}
216
- ( s, is_joint)
217
- } )
218
- . 0
219
- }
220
-
221
- fn tokentree_to_text ( tkn : & tt:: TokenTree ) -> String {
222
- match tkn {
223
- tt:: TokenTree :: Leaf ( tt:: Leaf :: Ident ( ident) ) => ident. text . clone ( ) . into ( ) ,
224
- tt:: TokenTree :: Leaf ( tt:: Leaf :: Literal ( literal) ) => literal. text . clone ( ) . into ( ) ,
225
- tt:: TokenTree :: Leaf ( tt:: Leaf :: Punct ( punct) ) => format ! ( "{}" , punct. char ) ,
226
- tt:: TokenTree :: Subtree ( subtree) => {
227
- let content = tokentrees_to_text ( & subtree. token_trees ) ;
228
- let ( open, close) = match subtree. delimiter . map ( |it| it. kind ) {
229
- None => ( "" , "" ) ,
230
- Some ( tt:: DelimiterKind :: Brace ) => ( "{" , "}" ) ,
231
- Some ( tt:: DelimiterKind :: Parenthesis ) => ( "(" , ")" ) ,
232
- Some ( tt:: DelimiterKind :: Bracket ) => ( "[" , "]" ) ,
233
- } ;
234
- format ! ( "{}{}{}" , open, content, close)
235
239
}
236
240
}
237
241
}
0 commit comments