From 8dca72be9be71fbccae9370b45af8efb946dedc1 Mon Sep 17 00:00:00 2001 From: Jeffrey Seyfried Date: Sat, 18 Feb 2017 12:45:32 +0000 Subject: Optimize `syntax::tokenstream::Cursor`. --- src/libproc_macro_plugin/qquote.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/libproc_macro_plugin') diff --git a/src/libproc_macro_plugin/qquote.rs b/src/libproc_macro_plugin/qquote.rs index b9bf35cff07..e3d85bca3e0 100644 --- a/src/libproc_macro_plugin/qquote.rs +++ b/src/libproc_macro_plugin/qquote.rs @@ -17,6 +17,7 @@ use syntax::symbol::Symbol; use syntax::tokenstream::{self, Delimited, TokenTree, TokenStream}; use syntax_pos::DUMMY_SP; +use std::iter; use std::rc::Rc; pub fn qquote<'cx>(stream: TokenStream) -> TokenStream { @@ -75,14 +76,14 @@ impl Quote for TokenStream { return quote!(::syntax::tokenstream::TokenStream::empty()); } - struct Quote(tokenstream::Cursor); + struct Quote(iter::Peekable); impl Iterator for Quote { type Item = TokenStream; fn next(&mut self) -> Option { let is_unquote = match self.0.peek() { - Some(TokenTree::Token(_, Token::Ident(ident))) if ident.name == "unquote" => { + Some(&TokenTree::Token(_, Token::Ident(ident))) if ident.name == "unquote" => { self.0.next(); true } @@ -96,7 +97,7 @@ impl Quote for TokenStream { } } - let quoted = Quote(self.trees()).collect::(); + let quoted = Quote(self.trees().peekable()).collect::(); quote!([(unquote quoted)].iter().cloned().collect::<::syntax::tokenstream::TokenStream>()) } } -- cgit 1.4.1-3-g733a5