Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/tt/src/iter.rs')
-rw-r--r--crates/tt/src/iter.rs32
1 files changed, 16 insertions, 16 deletions
diff --git a/crates/tt/src/iter.rs b/crates/tt/src/iter.rs
index 88c3c7f52e..5ab9f94b63 100644
--- a/crates/tt/src/iter.rs
+++ b/crates/tt/src/iter.rs
@@ -36,28 +36,28 @@ impl<'a> TtIter<'a> {
pub fn expect_char(&mut self, char: char) -> Result<(), ()> {
match self.next() {
- Some(TtElement::Leaf(&Leaf::Punct(Punct { char: c, .. }))) if c == char => Ok(()),
+ Some(TtElement::Leaf(Leaf::Punct(Punct { char: c, .. }))) if c == char => Ok(()),
_ => Err(()),
}
}
pub fn expect_any_char(&mut self, chars: &[char]) -> Result<(), ()> {
match self.next() {
- Some(TtElement::Leaf(Leaf::Punct(Punct { char: c, .. }))) if chars.contains(c) => {
+ Some(TtElement::Leaf(Leaf::Punct(Punct { char: c, .. }))) if chars.contains(&c) => {
Ok(())
}
_ => Err(()),
}
}
- pub fn expect_subtree(&mut self) -> Result<(&'a Subtree, TtIter<'a>), ()> {
+ pub fn expect_subtree(&mut self) -> Result<(Subtree, TtIter<'a>), ()> {
match self.next() {
Some(TtElement::Subtree(subtree, iter)) => Ok((subtree, iter)),
_ => Err(()),
}
}
- pub fn expect_leaf(&mut self) -> Result<&'a Leaf, ()> {
+ pub fn expect_leaf(&mut self) -> Result<Leaf, ()> {
match self.next() {
Some(TtElement::Leaf(it)) => Ok(it),
_ => Err(()),
@@ -78,30 +78,30 @@ impl<'a> TtIter<'a> {
}
}
- pub fn expect_ident(&mut self) -> Result<&'a Ident, ()> {
+ pub fn expect_ident(&mut self) -> Result<Ident, ()> {
match self.expect_leaf()? {
Leaf::Ident(it) if it.sym != sym::underscore => Ok(it),
_ => Err(()),
}
}
- pub fn expect_ident_or_underscore(&mut self) -> Result<&'a Ident, ()> {
+ pub fn expect_ident_or_underscore(&mut self) -> Result<Ident, ()> {
match self.expect_leaf()? {
Leaf::Ident(it) => Ok(it),
_ => Err(()),
}
}
- pub fn expect_literal(&mut self) -> Result<&'a Leaf, ()> {
+ pub fn expect_literal(&mut self) -> Result<Leaf, ()> {
let it = self.expect_leaf()?;
- match it {
+ match &it {
Leaf::Literal(_) => Ok(it),
Leaf::Ident(ident) if ident.sym == sym::true_ || ident.sym == sym::false_ => Ok(it),
_ => Err(()),
}
}
- pub fn expect_single_punct(&mut self) -> Result<&'a Punct, ()> {
+ pub fn expect_single_punct(&mut self) -> Result<Punct, ()> {
match self.expect_leaf()? {
Leaf::Punct(it) => Ok(it),
_ => Err(()),
@@ -113,7 +113,7 @@ impl<'a> TtIter<'a> {
/// This method currently may return a single quotation, which is part of lifetime ident and
/// conceptually not a punct in the context of mbe. Callers should handle this.
pub fn expect_glued_punct(&mut self) -> Result<ArrayVec<Punct, MAX_GLUED_PUNCT_LEN>, ()> {
- let TtElement::Leaf(&Leaf::Punct(first)) = self.next().ok_or(())? else {
+ let TtElement::Leaf(Leaf::Punct(first)) = self.next().ok_or(())? else {
return Err(());
};
@@ -168,11 +168,11 @@ impl<'a> TtIter<'a> {
pub fn peek(&self) -> Option<TtElement<'a>> {
match self.inner.as_slice().first()? {
- TokenTree::Leaf(leaf) => Some(TtElement::Leaf(leaf)),
+ TokenTree::Leaf(leaf) => Some(TtElement::Leaf(leaf.clone())),
TokenTree::Subtree(subtree) => {
let nested_iter =
TtIter { inner: self.inner.as_slice()[1..][..subtree.usize_len()].iter() };
- Some(TtElement::Subtree(subtree, nested_iter))
+ Some(TtElement::Subtree(*subtree, nested_iter))
}
}
}
@@ -214,8 +214,8 @@ impl<'a> TtIter<'a> {
#[derive(Clone)]
pub enum TtElement<'a> {
- Leaf(&'a Leaf),
- Subtree(&'a Subtree, TtIter<'a>),
+ Leaf(Leaf),
+ Subtree(Subtree, TtIter<'a>),
}
impl fmt::Debug for TtElement<'_> {
@@ -243,12 +243,12 @@ impl<'a> Iterator for TtIter<'a> {
type Item = TtElement<'a>;
fn next(&mut self) -> Option<Self::Item> {
match self.inner.next()? {
- TokenTree::Leaf(leaf) => Some(TtElement::Leaf(leaf)),
+ TokenTree::Leaf(leaf) => Some(TtElement::Leaf(leaf.clone())),
TokenTree::Subtree(subtree) => {
let nested_iter =
TtIter { inner: self.inner.as_slice()[..subtree.usize_len()].iter() };
self.inner = self.inner.as_slice()[subtree.usize_len()..].iter();
- Some(TtElement::Subtree(subtree, nested_iter))
+ Some(TtElement::Subtree(*subtree, nested_iter))
}
}
}