[−][src]Struct voluntary_servitude::Iter
Lock-free iterator based on VS
To ensure it can exist after VS
Iterator
is implemented for &mut Iter<T>
, so you may have to iterate over &mut Iter<T>
let vs = vs![3, 4, 5]; for number in &mut vs.iter() { println!("Number: {}", number); }
That can be avoided with iterator combinators
let vs = vs![3, 4, 5]; let _ = vs.iter().map(|n| println!("Number: {}", n)).count();
Methods
impl<T> Iter<T>
[src]
impl<T> Iter<T>
pub fn last_node<'a>(&'a self) -> Option<&'a T> | [src] |
Returns reference to last element in list
Relaxed
ordering is used to extract the last_node
, so you shouldn't depend on this being sequentially consistent, this is more of a helper than something you should depend on
let vs = vs![2, 3, 4]; let iter = vs.iter(); assert_eq!(iter.last_node(), Some(&4));
pub fn len(&self) -> usize | [src] |
Returns current iterator size (may grow, but not decrease, be careful with race-conditions)
If Iter
was originally empty or was already consumed it will not grow (FusedIterator
)
Relaxed
ordering is used to extract the length, so you shouldn't depend on this being sequentially consistent, only atomic
let vs = vs![3]; let iter = vs.iter(); assert_eq!(iter.len(), 1); vs.append(2); vs.clear(); // Iterator is not cleared and will grow with original `VS` assert_eq!(iter.len(), 2); let mut iter2 = &mut vs.iter(); assert_eq!(iter2.next(), None); assert_eq!(iter2.len(), 0); let iter = vs.iter(); vs.append(2); // Iterator is fused assert_eq!(iter.len(), 0);
pub fn is_empty(&self) -> bool | [src] |
Checks if iterator's length is empty (will return None
on next
)
Relaxed
ordering is used to extract the length, so you shouldn't depend on this being sequentially consistent, only atomic
let vs = vs![3]; let mut iter = vs.iter(); assert!(!iter.is_empty()); vs.clear(); // Iterator isn't cleared with `VS` is assert!(!iter.is_empty()); // Consumes iterator to make it empty let _ = iter.count(); assert!(iter.is_empty()); // Iterator is fused let iter = vs.iter(); assert!(iter.is_empty()); vs.append(2); assert!(iter.is_empty());
pub fn index(&self) -> usize | [src] |
Obtains current iterator index
let vs = vs![3, 4]; let mut iter = &mut vs.iter(); assert_eq!(iter.next(), Some(&3)); assert_eq!(iter.index(), 1); assert_eq!(iter.next(), Some(&4)); assert_eq!(iter.index(), 2); // Index doesn't grow after iterator is consumed assert!(iter.next().is_none()); assert_eq!(iter.index(), 2);
Trait Implementations
impl<T> Clone for Iter<T>
[src]
impl<T> Clone for Iter<T>
fn clone(&self) -> Self | [src] |
fn clone_from(&mut self, source: &Self) | 1.0.0 [src] |
Performs copy-assignment from source
. Read more
impl<T> From<Arc<Inner<T>>> for Iter<T>
[src]
impl<T> From<Arc<Inner<T>>> for Iter<T>
impl<'a, T> Iterator for &'a mut Iter<T>
[src]
impl<'a, T> Iterator for &'a mut Iter<T>
type Item = &'a T
The type of the elements being iterated over.
fn next(&mut self) -> Option<Self::Item> | [src] |
fn size_hint(&self) -> (usize, Option<usize>) | [src] |
fn count(self) -> usize | 1.0.0 [src] |
Consumes the iterator, counting the number of iterations and returning it. Read more
fn last(self) -> Option<Self::Item> | 1.0.0 [src] |
Consumes the iterator, returning the last element. Read more
fn nth(&mut self, n: usize) -> Option<Self::Item> | 1.0.0 [src] |
Returns the n
th element of the iterator. Read more
fn step_by(self, step: usize) -> StepBy<Self> | 1.28.0 [src] |
Creates an iterator starting at the same point, but stepping by the given amount at each iteration. Read more
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter> where | 1.0.0 [src] |
Takes two iterators and creates a new iterator over both in sequence. Read more
fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter> where | 1.0.0 [src] |
'Zips up' two iterators into a single iterator of pairs. Read more
fn map<B, F>(self, f: F) -> Map<Self, F> where | 1.0.0 [src] |
Takes a closure and creates an iterator which calls that closure on each element. Read more
fn for_each<F>(self, f: F) where | 1.21.0 [src] |
Calls a closure on each element of an iterator. Read more
fn filter<P>(self, predicate: P) -> Filter<Self, P> where | 1.0.0 [src] |
Creates an iterator which uses a closure to determine if an element should be yielded. Read more
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> where | 1.0.0 [src] |
Creates an iterator that both filters and maps. Read more
fn enumerate(self) -> Enumerate<Self> | 1.0.0 [src] |
Creates an iterator which gives the current iteration count as well as the next value. Read more
fn peekable(self) -> Peekable<Self> | 1.0.0 [src] |
Creates an iterator which can use peek
to look at the next element of the iterator without consuming it. Read more
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where | 1.0.0 [src] |
Creates an iterator that [skip
]s elements based on a predicate. Read more
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where | 1.0.0 [src] |
Creates an iterator that yields elements based on a predicate. Read more
fn skip(self, n: usize) -> Skip<Self> | 1.0.0 [src] |
Creates an iterator that skips the first n
elements. Read more
fn take(self, n: usize) -> Take<Self> | 1.0.0 [src] |
Creates an iterator that yields its first n
elements. Read more
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> where | 1.0.0 [src] |
An iterator adaptor similar to [fold
] that holds internal state and produces a new iterator. Read more
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where | 1.0.0 [src] |
Creates an iterator that works like map, but flattens nested structure. Read more
fn flatten(self) -> Flatten<Self> where | 1.29.0 [src] |
Creates an iterator that flattens nested structure. Read more
fn fuse(self) -> Fuse<Self> | 1.0.0 [src] |
Creates an iterator which ends after the first [None
]. Read more
fn inspect<F>(self, f: F) -> Inspect<Self, F> where | 1.0.0 [src] |
Do something with each element of an iterator, passing the value on. Read more
fn by_ref(&mut self) -> &mut Self | 1.0.0 [src] |
Borrows an iterator, rather than consuming it. Read more
| 1.0.0 [src] |
Transforms an iterator into a collection. Read more
fn partition<B, F>(self, f: F) -> (B, B) where | 1.0.0 [src] |
Consumes an iterator, creating two collections from it. Read more
fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R where | 1.27.0 [src] |
An iterator method that applies a function as long as it returns successfully, producing a single, final value. Read more
fn try_for_each<F, R>(&mut self, f: F) -> R where | 1.27.0 [src] |
An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. Read more
fn fold<B, F>(self, init: B, f: F) -> B where | 1.0.0 [src] |
An iterator method that applies a function, producing a single, final value. Read more
fn all<F>(&mut self, f: F) -> bool where | 1.0.0 [src] |
Tests if every element of the iterator matches a predicate. Read more
fn any<F>(&mut self, f: F) -> bool where | 1.0.0 [src] |
Tests if any element of the iterator matches a predicate. Read more
fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where | 1.0.0 [src] |
Searches for an element of an iterator that satisfies a predicate. Read more
fn find_map<B, F>(&mut self, f: F) -> Option<B> where | 1.30.0 [src] |
Applies function to the elements of iterator and returns the first non-none result. Read more
fn position<P>(&mut self, predicate: P) -> Option<usize> where | 1.0.0 [src] |
Searches for an element in an iterator, returning its index. Read more
fn rposition<P>(&mut self, predicate: P) -> Option<usize> where | 1.0.0 [src] |
Searches for an element in an iterator from the right, returning its index. Read more
fn max(self) -> Option<Self::Item> where | 1.0.0 [src] |
Returns the maximum element of an iterator. Read more
fn min(self) -> Option<Self::Item> where | 1.0.0 [src] |
Returns the minimum element of an iterator. Read more
fn max_by_key<B, F>(self, f: F) -> Option<Self::Item> where | 1.6.0 [src] |
Returns the element that gives the maximum value from the specified function. Read more
fn max_by<F>(self, compare: F) -> Option<Self::Item> where | 1.15.0 [src] |
Returns the element that gives the maximum value with respect to the specified comparison function. Read more
fn min_by_key<B, F>(self, f: F) -> Option<Self::Item> where | 1.6.0 [src] |
Returns the element that gives the minimum value from the specified function. Read more
fn min_by<F>(self, compare: F) -> Option<Self::Item> where | 1.15.0 [src] |
Returns the element that gives the minimum value with respect to the specified comparison function. Read more
fn rev(self) -> Rev<Self> where | 1.0.0 [src] |
Reverses an iterator's direction. Read more
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where | 1.0.0 [src] |
Converts an iterator of pairs into a pair of containers. Read more
fn copied<'a, T>(self) -> Copied<Self> where | [src] |
iter_copied
)Creates an iterator which copies all of its elements. Read more
fn cloned<'a, T>(self) -> Cloned<Self> where | 1.0.0 [src] |
Creates an iterator which [clone
]s all of its elements. Read more
fn cycle(self) -> Cycle<Self> where | 1.0.0 [src] |
Repeats an iterator endlessly. Read more
fn sum<S>(self) -> S where | 1.11.0 [src] |
Sums the elements of an iterator. Read more
fn product<P>(self) -> P where | 1.11.0 [src] |
Iterates over the entire iterator, multiplying all the elements Read more
fn cmp<I>(self, other: I) -> Ordering where | 1.5.0 [src] |
Lexicographically compares the elements of this Iterator
with those of another. Read more
fn partial_cmp<I>(self, other: I) -> Option<Ordering> where | 1.5.0 [src] |
Lexicographically compares the elements of this Iterator
with those of another. Read more
fn eq<I>(self, other: I) -> bool where | 1.5.0 [src] |
Determines if the elements of this Iterator
are equal to those of another. Read more
fn ne<I>(self, other: I) -> bool where | 1.5.0 [src] |
Determines if the elements of this Iterator
are unequal to those of another. Read more
fn lt<I>(self, other: I) -> bool where | 1.5.0 [src] |
Determines if the elements of this Iterator
are lexicographically less than those of another. Read more
fn le<I>(self, other: I) -> bool where | 1.5.0 [src] |
Determines if the elements of this Iterator
are lexicographically less or equal to those of another. Read more
fn gt<I>(self, other: I) -> bool where | 1.5.0 [src] |
Determines if the elements of this Iterator
are lexicographically greater than those of another. Read more
fn ge<I>(self, other: I) -> bool where | 1.5.0 [src] |
Determines if the elements of this Iterator
are lexicographically greater than or equal to those of another. Read more
impl<T: Debug> Debug for Iter<T>
[src]
impl<T: Debug> Debug for Iter<T>
impl<'a, T> FusedIterator for &'a mut Iter<T>
[src]
impl<'a, T> FusedIterator for &'a mut Iter<T>
Auto Trait Implementations
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
impl<T> From for T
[src]
impl<T> From for T
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> | [src] |
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId | [src] |
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error> | [src] |
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T | [src] |