1
1
//! Functions dealing with attributes and meta items.
2
2
3
- use std:: iter;
4
3
use std:: sync:: atomic:: { AtomicU32 , Ordering } ;
5
4
6
5
use rustc_index:: bit_set:: GrowableBitSet ;
@@ -16,7 +15,9 @@ use crate::ast::{
16
15
} ;
17
16
use crate :: ptr:: P ;
18
17
use crate :: token:: { self , CommentKind , Delimiter , Token } ;
19
- use crate :: tokenstream:: { DelimSpan , LazyAttrTokenStream , Spacing , TokenStream , TokenTree } ;
18
+ use crate :: tokenstream:: {
19
+ DelimSpan , LazyAttrTokenStream , Spacing , TokenStream , TokenStreamIter , TokenTree ,
20
+ } ;
20
21
use crate :: util:: comments;
21
22
use crate :: util:: literal:: escape_string_symbol;
22
23
@@ -368,10 +369,7 @@ impl MetaItem {
368
369
}
369
370
}
370
371
371
- fn from_tokens < ' a , I > ( iter : & mut iter:: Peekable < I > ) -> Option < MetaItem >
372
- where
373
- I : Iterator < Item = & ' a TokenTree > ,
374
- {
372
+ fn from_tokens ( iter : & mut TokenStreamIter < ' _ > ) -> Option < MetaItem > {
375
373
// FIXME: Share code with `parse_path`.
376
374
let tt = iter. next ( ) . map ( |tt| TokenTree :: uninterpolate ( tt) ) ;
377
375
let path = match tt. as_deref ( ) {
@@ -440,7 +438,7 @@ impl MetaItem {
440
438
441
439
impl MetaItemKind {
442
440
fn list_from_tokens ( tokens : TokenStream ) -> Option < ThinVec < MetaItemInner > > {
443
- let mut iter = tokens. iter ( ) . peekable ( ) ;
441
+ let mut iter = tokens. iter ( ) ;
444
442
let mut result = ThinVec :: new ( ) ;
445
443
while iter. peek ( ) . is_some ( ) {
446
444
let item = MetaItemInner :: from_tokens ( & mut iter) ?;
@@ -453,9 +451,7 @@ impl MetaItemKind {
453
451
Some ( result)
454
452
}
455
453
456
- fn name_value_from_tokens < ' a > (
457
- iter : & mut impl Iterator < Item = & ' a TokenTree > ,
458
- ) -> Option < MetaItemKind > {
454
+ fn name_value_from_tokens ( iter : & mut TokenStreamIter < ' _ > ) -> Option < MetaItemKind > {
459
455
match iter. next ( ) {
460
456
Some ( TokenTree :: Delimited ( .., Delimiter :: Invisible ( _) , inner_tokens) ) => {
461
457
MetaItemKind :: name_value_from_tokens ( & mut inner_tokens. iter ( ) )
@@ -467,9 +463,7 @@ impl MetaItemKind {
467
463
}
468
464
}
469
465
470
- fn from_tokens < ' a > (
471
- iter : & mut iter:: Peekable < impl Iterator < Item = & ' a TokenTree > > ,
472
- ) -> Option < MetaItemKind > {
466
+ fn from_tokens ( iter : & mut TokenStreamIter < ' _ > ) -> Option < MetaItemKind > {
473
467
match iter. peek ( ) {
474
468
Some ( TokenTree :: Delimited ( .., Delimiter :: Parenthesis , inner_tokens) ) => {
475
469
let inner_tokens = inner_tokens. clone ( ) ;
@@ -598,18 +592,15 @@ impl MetaItemInner {
598
592
self . meta_item ( ) . is_some ( )
599
593
}
600
594
601
- fn from_tokens < ' a , I > ( iter : & mut iter:: Peekable < I > ) -> Option < MetaItemInner >
602
- where
603
- I : Iterator < Item = & ' a TokenTree > ,
604
- {
595
+ fn from_tokens ( iter : & mut TokenStreamIter < ' _ > ) -> Option < MetaItemInner > {
605
596
match iter. peek ( ) {
606
597
Some ( TokenTree :: Token ( token, _) ) if let Some ( lit) = MetaItemLit :: from_token ( token) => {
607
598
iter. next ( ) ;
608
599
return Some ( MetaItemInner :: Lit ( lit) ) ;
609
600
}
610
601
Some ( TokenTree :: Delimited ( .., Delimiter :: Invisible ( _) , inner_tokens) ) => {
611
602
iter. next ( ) ;
612
- return MetaItemInner :: from_tokens ( & mut inner_tokens. iter ( ) . peekable ( ) ) ;
603
+ return MetaItemInner :: from_tokens ( & mut inner_tokens. iter ( ) ) ;
613
604
}
614
605
_ => { }
615
606
}
0 commit comments