@@ -285,17 +285,17 @@ impl MetaItem {
285285 self . kind . value_str ( )
286286 }
287287
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 >
289289 where
290- I : Iterator < Item = TokenTree > ,
290+ I : Iterator < Item = & ' a TokenTree > ,
291291 {
292292 // FIXME: Share code with `parse_path`.
293- let path = match tokens. next ( ) . map ( TokenTree :: uninterpolate) {
294- Some ( TokenTree :: Token (
295- Token { kind : kind @ ( token:: Ident ( ..) | token:: ModSep ) , span } ,
293+ let path = match tokens. next ( ) . map ( |tt| TokenTree :: uninterpolate ( tt ) ) . as_deref ( ) {
294+ Some ( & TokenTree :: Token (
295+ Token { kind : ref kind @ ( token:: Ident ( ..) | token:: ModSep ) , span } ,
296296 _,
297297 ) ) => ' arm: {
298- let mut segments = if let token:: Ident ( name, _) = kind {
298+ let mut segments = if let & token:: Ident ( name, _) = kind {
299299 if let Some ( TokenTree :: Token ( Token { kind : token:: ModSep , .. } , _) ) =
300300 tokens. peek ( )
301301 {
@@ -308,8 +308,8 @@ impl MetaItem {
308308 thin_vec ! [ PathSegment :: path_root( span) ]
309309 } ;
310310 loop {
311- if let Some ( TokenTree :: Token ( Token { kind : token:: Ident ( name, _) , span } , _) ) =
312- tokens. next ( ) . map ( TokenTree :: uninterpolate)
311+ if let Some ( & TokenTree :: Token ( Token { kind : token:: Ident ( name, _) , span } , _) ) =
312+ tokens. next ( ) . map ( |tt| TokenTree :: uninterpolate ( tt ) ) . as_deref ( )
313313 {
314314 segments. push ( PathSegment :: from_ident ( Ident :: new ( name, span) ) ) ;
315315 } else {
@@ -326,7 +326,7 @@ impl MetaItem {
326326 let span = span. with_hi ( segments. last ( ) . unwrap ( ) . ident . span . hi ( ) ) ;
327327 Path { span, segments, tokens : None }
328328 }
329- Some ( TokenTree :: Token ( Token { kind : token:: Interpolated ( nt) , .. } , _) ) => match & * nt {
329+ Some ( TokenTree :: Token ( Token { kind : token:: Interpolated ( nt) , .. } , _) ) => match & * * nt {
330330 token:: Nonterminal :: NtMeta ( item) => return item. meta ( item. path . span ) ,
331331 token:: Nonterminal :: NtPath ( path) => ( * * path) . clone ( ) ,
332332 _ => return None ,
@@ -354,7 +354,7 @@ impl MetaItemKind {
354354 }
355355
356356 fn list_from_tokens ( tokens : TokenStream ) -> Option < ThinVec < NestedMetaItem > > {
357- let mut tokens = tokens. into_trees ( ) . peekable ( ) ;
357+ let mut tokens = tokens. trees ( ) . peekable ( ) ;
358358 let mut result = ThinVec :: new ( ) ;
359359 while tokens. peek ( ) . is_some ( ) {
360360 let item = NestedMetaItem :: from_tokens ( & mut tokens) ?;
@@ -367,12 +367,12 @@ impl MetaItemKind {
367367 Some ( result)
368368 }
369369
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 > ,
372372 ) -> Option < MetaItemKind > {
373373 match tokens. next ( ) {
374374 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 ( ) )
376376 }
377377 Some ( TokenTree :: Token ( token, _) ) => {
378378 MetaItemLit :: from_token ( & token) . map ( MetaItemKind :: NameValue )
@@ -381,8 +381,8 @@ impl MetaItemKind {
381381 }
382382 }
383383
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 > > ,
386386 ) -> Option < MetaItemKind > {
387387 match tokens. peek ( ) {
388388 Some ( TokenTree :: Delimited ( _, Delimiter :: Parenthesis , inner_tokens) ) => {
@@ -501,9 +501,9 @@ impl NestedMetaItem {
501501 self . meta_item ( ) . is_some ( )
502502 }
503503
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 >
505505 where
506- I : Iterator < Item = TokenTree > ,
506+ I : Iterator < Item = & ' a TokenTree > ,
507507 {
508508 match tokens. peek ( ) {
509509 Some ( TokenTree :: Token ( token, _) )
@@ -513,9 +513,8 @@ impl NestedMetaItem {
513513 return Some ( NestedMetaItem :: Lit ( lit) ) ;
514514 }
515515 Some ( TokenTree :: Delimited ( _, Delimiter :: Invisible , inner_tokens) ) => {
516- let inner_tokens = inner_tokens. clone ( ) ;
517516 tokens. next ( ) ;
518- return NestedMetaItem :: from_tokens ( & mut inner_tokens. into_trees ( ) . peekable ( ) ) ;
517+ return NestedMetaItem :: from_tokens ( & mut inner_tokens. trees ( ) . peekable ( ) ) ;
519518 }
520519 _ => { }
521520 }
0 commit comments