Struct full_moon::ast::punctuated::Punctuated
source · pub struct Punctuated<T> { /* private fields */ }
Expand description
A punctuated sequence of node T
separated by
TokenReference
.
Refer to the module documentation for more details.
Implementations§
source§impl<T> Punctuated<T>
impl<T> Punctuated<T>
sourcepub fn new() -> Self
pub fn new() -> Self
Creates an empty punctuated sequence
let mut punctuated: Punctuated<i32> = Punctuated::new();
sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns whether there’s any nodes in the punctuated sequence
let mut punctuated = Punctuated::new();
assert!(punctuated.is_empty());
punctuated.push(Pair::new((), None));
assert!(!punctuated.is_empty());
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the number of pairs in the punctuated sequence
let mut punctuated = Punctuated::new();
assert_eq!(punctuated.len(), 0);
punctuated.push(Pair::new((), None));
assert_eq!(punctuated.len(), 1);
sourcepub fn iter(&self) -> Iter<'_, T> ⓘ
pub fn iter(&self) -> Iter<'_, T> ⓘ
Returns an iterator over references of the sequence values, ignoring punctuation
let mut punctuated = Punctuated::new();
punctuated.push(Pair::new(1, None));
let mut iterator = punctuated.iter();
assert_eq!(iterator.next(), Some(&1));
assert_eq!(iterator.next(), None);
sourcepub fn iter_mut(&mut self) -> IterMut<'_, T> ⓘ
pub fn iter_mut(&mut self) -> IterMut<'_, T> ⓘ
Returns an iterator over mutable references of the sequence values, ignoring punctuation
let mut punctuated = Punctuated::new();
punctuated.push(Pair::new(1, None));
for item in punctuated.iter_mut() {
*item += 1;
}
assert_eq!(punctuated.pop(), Some(Pair::new(2, None)));
sourcepub fn into_pairs(self) -> impl Iterator<Item = Pair<T>>
pub fn into_pairs(self) -> impl Iterator<Item = Pair<T>>
Returns an iterator over pairs
let mut punctuated = Punctuated::new();
punctuated.push(Pair::new(1, None));
let mut iterator = punctuated.into_pairs();
assert_eq!(iterator.next(), Some(Pair::new(1, None)));
assert_eq!(iterator.next(), None);
sourcepub fn first(&self) -> Option<&Pair<T>>
pub fn first(&self) -> Option<&Pair<T>>
Returns the first pair in the sequence
let mut punctuated = Punctuated::new();
assert_eq!(punctuated.first(), None);
punctuated.push(Pair::new(1, None));
assert_eq!(punctuated.first(), Some(&Pair::new(1, None)));
sourcepub fn last(&self) -> Option<&Pair<T>>
pub fn last(&self) -> Option<&Pair<T>>
Returns the last pair in the sequence
let mut punctuated = Punctuated::new();
punctuated.push(Pair::new(1, None));
assert_eq!(punctuated.last(), Some(&Pair::new(1, None)));
sourcepub fn pairs(&self) -> impl Iterator<Item = &Pair<T>>
pub fn pairs(&self) -> impl Iterator<Item = &Pair<T>>
Returns an iterator over pairs as references
let mut punctuated = Punctuated::new();
punctuated.push(Pair::new(1, None));
let mut iterator = punctuated.pairs();
assert_eq!(iterator.next(), Some(&Pair::new(1, None)));
assert_eq!(iterator.next(), None);
sourcepub fn pairs_mut(&mut self) -> impl Iterator<Item = &mut Pair<T>>
pub fn pairs_mut(&mut self) -> impl Iterator<Item = &mut Pair<T>>
Returns an iterator over pairs as mutable references
let mut punctuated = Punctuated::new();
punctuated.push(Pair::new(1, None));
for item in punctuated.pairs_mut() {
*item.value_mut() += 1;
}
assert_eq!(punctuated.pop(), Some(Pair::new(2, None)));
Trait Implementations§
source§impl<T: Clone> Clone for Punctuated<T>
impl<T: Clone> Clone for Punctuated<T>
source§fn clone(&self) -> Punctuated<T>
fn clone(&self) -> Punctuated<T>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<T: Debug> Debug for Punctuated<T>
impl<T: Debug> Debug for Punctuated<T>
source§impl<T: Default> Default for Punctuated<T>
impl<T: Default> Default for Punctuated<T>
source§fn default() -> Punctuated<T>
fn default() -> Punctuated<T>
Returns the “default value” for a type. Read more
source§impl<'de, T> Deserialize<'de> for Punctuated<T>where
T: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for Punctuated<T>where T: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<T> Display for Punctuated<T>where
T: Display,
impl<T> Display for Punctuated<T>where T: Display,
source§impl<T> Extend<Pair<T>> for Punctuated<T>
impl<T> Extend<Pair<T>> for Punctuated<T>
source§fn extend<I: IntoIterator<Item = Pair<T>>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = Pair<T>>>(&mut self, iter: I)
Extends a collection with the contents of an iterator. Read more
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
🔬This is a nightly-only experimental API. (
extend_one
)Extends a collection with exactly one element.
source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
🔬This is a nightly-only experimental API. (
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more
source§impl<T> FromIterator<Pair<T>> for Punctuated<T>
impl<T> FromIterator<Pair<T>> for Punctuated<T>
source§impl<'a, T> IntoIterator for &'a Punctuated<T>
impl<'a, T> IntoIterator for &'a Punctuated<T>
source§impl<'a, T> IntoIterator for &'a mut Punctuated<T>
impl<'a, T> IntoIterator for &'a mut Punctuated<T>
source§impl<T> IntoIterator for Punctuated<T>
impl<T> IntoIterator for Punctuated<T>
source§impl<T: Node> Node for Punctuated<T>
impl<T: Node> Node for Punctuated<T>
source§fn start_position(&self) -> Option<Position>
fn start_position(&self) -> Option<Position>
The start position of a node. None if can’t be determined
source§fn end_position(&self) -> Option<Position>
fn end_position(&self) -> Option<Position>
The end position of a node. None if it can’t be determined
source§fn similar(&self, other: &Self) -> bool
fn similar(&self, other: &Self) -> bool
Whether another node of the same type is the same as this one semantically, ignoring position
source§impl<T: PartialEq> PartialEq for Punctuated<T>
impl<T: PartialEq> PartialEq for Punctuated<T>
source§fn eq(&self, other: &Punctuated<T>) -> bool
fn eq(&self, other: &Punctuated<T>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<T> Serialize for Punctuated<T>where
T: Serialize,
impl<T> Serialize for Punctuated<T>where T: Serialize,
impl<T: Eq> Eq for Punctuated<T>
impl<T> StructuralEq for Punctuated<T>
impl<T> StructuralPartialEq for Punctuated<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Punctuated<T>where T: RefUnwindSafe,
impl<T> Send for Punctuated<T>where T: Send,
impl<T> Sync for Punctuated<T>where T: Sync,
impl<T> Unpin for Punctuated<T>where T: Unpin,
impl<T> UnwindSafe for Punctuated<T>where T: UnwindSafe,
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