pub struct TokenSeparatedSequence<'arena, T, Tok> {
pub nodes: Vec<'arena, T>,
pub tokens: Vec<'arena, Tok>,
}Expand description
A sequence of AST nodes separated by infix tokens.
The token type is generic so every syntax crate can plug in its own
token definition. Methods that depend on spatial relationships between
nodes and tokens require HasPosition on the token; that’s the
narrowest bound that still supports has_trailing_token style
queries, and every sibling crate’s token already carries a Position
start so the impl is trivial.
Fields§
§nodes: Vec<'arena, T>§tokens: Vec<'arena, Tok>Implementations§
Source§impl<'arena, T, Tok> TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> TokenSeparatedSequence<'arena, T, Tok>
pub const fn new(nodes: BVec<'arena, T>, tokens: BVec<'arena, Tok>) -> Self
pub fn empty(arena: &'arena Bump) -> Self
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn get(&self, index: usize) -> Option<&T>
pub fn first(&self) -> Option<&T>
pub fn last(&self) -> Option<&T>
pub fn iter(&self) -> Iter<'_, T>
pub fn as_slice(&self) -> &[T]
Source§impl<T, Tok> TokenSeparatedSequence<'_, T, Tok>where
T: HasSpan,
Tok: HasPosition,
impl<T, Tok> TokenSeparatedSequence<'_, T, Tok>where
T: HasSpan,
Tok: HasPosition,
Sourcepub fn has_trailing_token(&self) -> bool
pub fn has_trailing_token(&self) -> bool
Whether the sequence ends with a trailing separator token.
Sourcepub fn get_trailing_token(&self) -> Option<&Tok>
pub fn get_trailing_token(&self) -> Option<&Tok>
Return the trailing separator token, if any.
Trait Implementations§
Source§impl<'arena, T: Clone, Tok: Clone> Clone for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T: Clone, Tok: Clone> Clone for TokenSeparatedSequence<'arena, T, Tok>
Source§fn clone(&self) -> TokenSeparatedSequence<'arena, T, Tok>
fn clone(&self) -> TokenSeparatedSequence<'arena, T, Tok>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<T, Tok> Index<usize> for TokenSeparatedSequence<'_, T, Tok>
impl<T, Tok> Index<usize> for TokenSeparatedSequence<'_, T, Tok>
Source§impl<'seq, T, Tok> IntoIterator for &'seq TokenSeparatedSequence<'_, T, Tok>
impl<'seq, T, Tok> IntoIterator for &'seq TokenSeparatedSequence<'_, T, Tok>
Source§impl<'arena, T, Tok> IntoIterator for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> IntoIterator for TokenSeparatedSequence<'arena, T, Tok>
Source§type IntoIter = IntoIter<'arena, <TokenSeparatedSequence<'arena, T, Tok> as IntoIterator>::Item>
type IntoIter = IntoIter<'arena, <TokenSeparatedSequence<'arena, T, Tok> as IntoIterator>::Item>
Which kind of iterator are we turning this into?
Source§impl<'arena, T: Ord, Tok: Ord> Ord for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T: Ord, Tok: Ord> Ord for TokenSeparatedSequence<'arena, T, Tok>
Source§fn cmp(&self, other: &TokenSeparatedSequence<'arena, T, Tok>) -> Ordering
fn cmp(&self, other: &TokenSeparatedSequence<'arena, T, Tok>) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<'arena, T: PartialEq, Tok: PartialEq> PartialEq for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T: PartialEq, Tok: PartialEq> PartialEq for TokenSeparatedSequence<'arena, T, Tok>
Source§fn eq(&self, other: &TokenSeparatedSequence<'arena, T, Tok>) -> bool
fn eq(&self, other: &TokenSeparatedSequence<'arena, T, Tok>) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl<'arena, T: PartialOrd, Tok: PartialOrd> PartialOrd for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T: PartialOrd, Tok: PartialOrd> PartialOrd for TokenSeparatedSequence<'arena, T, Tok>
Source§impl<'arena, T, Tok> Serialize for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> Serialize for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T: Eq, Tok: Eq> Eq for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> StructuralPartialEq for TokenSeparatedSequence<'arena, T, Tok>
Auto Trait Implementations§
impl<'arena, T, Tok> Freeze for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> !RefUnwindSafe for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> !Send for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> !Sync for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> Unpin for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> UnsafeUnpin for TokenSeparatedSequence<'arena, T, Tok>
impl<'arena, T, Tok> !UnwindSafe for TokenSeparatedSequence<'arena, T, Tok>
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more