@@ -285,12 +285,12 @@ impl MetaItem {
285
285
self . kind . value_str ( )
286
286
}
287
287
288
- fn from_tokens < I > ( tokens : & mut iter:: Peekable < I > ) -> Option < MetaItem >
288
+ fn from_tokens < ' a , I > ( tokens : & mut iter:: Peekable < I > ) -> Option < MetaItem >
289
289
where
290
- I : Iterator < Item = TokenTree > ,
290
+ I : Iterator < Item = & ' a TokenTree > ,
291
291
{
292
292
// FIXME: Share code with `parse_path`.
293
- let path = match tokens. next ( ) . map ( TokenTree :: uninterpolate) {
293
+ let path = match tokens. next ( ) . map ( |tt| TokenTree :: uninterpolate ( tt . clone ( ) ) ) {
294
294
Some ( TokenTree :: Token (
295
295
Token { kind : kind @ ( token:: Ident ( ..) | token:: ModSep ) , span } ,
296
296
_,
@@ -309,7 +309,7 @@ impl MetaItem {
309
309
} ;
310
310
loop {
311
311
if let Some ( TokenTree :: Token ( Token { kind : token:: Ident ( name, _) , span } , _) ) =
312
- tokens. next ( ) . map ( TokenTree :: uninterpolate)
312
+ tokens. next ( ) . map ( |tt| TokenTree :: uninterpolate ( tt . clone ( ) ) )
313
313
{
314
314
segments. push ( PathSegment :: from_ident ( Ident :: new ( name, span) ) ) ;
315
315
} else {
@@ -354,7 +354,7 @@ impl MetaItemKind {
354
354
}
355
355
356
356
fn list_from_tokens ( tokens : TokenStream ) -> Option < ThinVec < NestedMetaItem > > {
357
- let mut tokens = tokens. into_trees ( ) . peekable ( ) ;
357
+ let mut tokens = tokens. trees ( ) . peekable ( ) ;
358
358
let mut result = ThinVec :: new ( ) ;
359
359
while tokens. peek ( ) . is_some ( ) {
360
360
let item = NestedMetaItem :: from_tokens ( & mut tokens) ?;
@@ -367,12 +367,12 @@ impl MetaItemKind {
367
367
Some ( result)
368
368
}
369
369
370
- fn name_value_from_tokens (
371
- tokens : & mut impl Iterator < Item = TokenTree > ,
370
+ fn name_value_from_tokens < ' a > (
371
+ tokens : & mut impl Iterator < Item = & ' a TokenTree > ,
372
372
) -> Option < MetaItemKind > {
373
373
match tokens. next ( ) {
374
374
Some ( TokenTree :: Delimited ( _, Delimiter :: Invisible , inner_tokens) ) => {
375
- MetaItemKind :: name_value_from_tokens ( & mut inner_tokens. into_trees ( ) )
375
+ MetaItemKind :: name_value_from_tokens ( & mut inner_tokens. trees ( ) )
376
376
}
377
377
Some ( TokenTree :: Token ( token, _) ) => {
378
378
MetaItemLit :: from_token ( & token) . map ( MetaItemKind :: NameValue )
@@ -381,8 +381,8 @@ impl MetaItemKind {
381
381
}
382
382
}
383
383
384
- fn from_tokens (
385
- tokens : & mut iter:: Peekable < impl Iterator < Item = TokenTree > > ,
384
+ fn from_tokens < ' a > (
385
+ tokens : & mut iter:: Peekable < impl Iterator < Item = & ' a TokenTree > > ,
386
386
) -> Option < MetaItemKind > {
387
387
match tokens. peek ( ) {
388
388
Some ( TokenTree :: Delimited ( _, Delimiter :: Parenthesis , inner_tokens) ) => {
@@ -501,9 +501,9 @@ impl NestedMetaItem {
501
501
self . meta_item ( ) . is_some ( )
502
502
}
503
503
504
- fn from_tokens < I > ( tokens : & mut iter:: Peekable < I > ) -> Option < NestedMetaItem >
504
+ fn from_tokens < ' a , I > ( tokens : & mut iter:: Peekable < I > ) -> Option < NestedMetaItem >
505
505
where
506
- I : Iterator < Item = TokenTree > ,
506
+ I : Iterator < Item = & ' a TokenTree > ,
507
507
{
508
508
match tokens. peek ( ) {
509
509
Some ( TokenTree :: Token ( token, _) )
@@ -513,9 +513,8 @@ impl NestedMetaItem {
513
513
return Some ( NestedMetaItem :: Lit ( lit) ) ;
514
514
}
515
515
Some ( TokenTree :: Delimited ( _, Delimiter :: Invisible , inner_tokens) ) => {
516
- let inner_tokens = inner_tokens. clone ( ) ;
517
516
tokens. next ( ) ;
518
- return NestedMetaItem :: from_tokens ( & mut inner_tokens. into_trees ( ) . peekable ( ) ) ;
517
+ return NestedMetaItem :: from_tokens ( & mut inner_tokens. trees ( ) . peekable ( ) ) ;
519
518
}
520
519
_ => { }
521
520
}
0 commit comments