pub struct StepCursor<'c, 'a> { /* private fields */ }
Available on crate feature
parsing
only.Expand description
Cursor state associated with speculative parsing.
This type is the input of the closure provided to ParseStream::step
.
§Example
use proc_macro2::TokenTree;
use syn::Result;
use syn::parse::ParseStream;
// This function advances the stream past the next occurrence of `@`. If
// no `@` is present in the stream, the stream position is unchanged and
// an error is returned.
fn skip_past_next_at(input: ParseStream) -> Result<()> {
input.step(|cursor| {
let mut rest = *cursor;
while let Some((tt, next)) = rest.token_tree() {
match &tt {
TokenTree::Punct(punct) if punct.as_char() == '@' => {
return Ok(((), next));
}
_ => rest = next,
}
}
Err(cursor.error("no `@` was found after this point"))
})
}
Implementations§
Trait Implementations§
Source§impl<'c, 'a> Clone for StepCursor<'c, 'a>
impl<'c, 'a> Clone for StepCursor<'c, 'a>
Source§impl<'c, 'a> Deref for StepCursor<'c, 'a>
impl<'c, 'a> Deref for StepCursor<'c, 'a>
impl<'c, 'a> Copy for StepCursor<'c, 'a>
Auto Trait Implementations§
impl<'c, 'a> Freeze for StepCursor<'c, 'a>
impl<'c, 'a> RefUnwindSafe for StepCursor<'c, 'a>
impl<'c, 'a> !Send for StepCursor<'c, 'a>
impl<'c, 'a> !Sync for StepCursor<'c, 'a>
impl<'c, 'a> Unpin for StepCursor<'c, 'a>
impl<'c, 'a> UnwindSafe for StepCursor<'c, 'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes