[−][src]Struct backtracking_iterator::BacktrackingRecorder
A wrapper around an existing iterator to give it a historical representation with the ability to then produce copying and referencing backtracking iterators on the history
Methods
impl<Iter> BacktrackingRecorder<Iter> where
Iter: Iterator,
[src]
Iter: Iterator,
pub fn new(iterator: Iter) -> Self
[src]
Create a BacktrackingRecorder
from an existing iterator.
ⓘImportant traits for ReferencingBacktrackingIterator<'record, Iter>pub fn referencing<'record>(
&'record mut self
) -> ReferencingBacktrackingIterator<'record, Iter>
[src]
ⓘImportant traits for ReferencingBacktrackingIterator<'record, Iter>
&'record mut self
) -> ReferencingBacktrackingIterator<'record, Iter>
ⓘImportant traits for CopyingBacktrackingIterator<'record, I>pub fn copying<'record>(
&'record mut self
) -> CopyingBacktrackingIterator<'record, Iter> where
Iter::Item: Clone,
[src]
ⓘImportant traits for CopyingBacktrackingIterator<'record, I>
&'record mut self
) -> CopyingBacktrackingIterator<'record, Iter> where
Iter::Item: Clone,
pub fn drain_history(&mut self) -> Vec<Iter::Item>
[src]
Take all items out of the history.
extern crate backtracking_iterator; use backtracking_iterator::{BacktrackingIterator, BacktrackingRecorder}; let vec_iter = vec![1_u8, 2, 3].into_iter(); let mut rec = BacktrackingRecorder::new(vec_iter); { let mut bt_ref = rec.referencing(); bt_ref.next(); // 1_u8 } let mut history = rec.drain_history().into_iter(); // Repeats only what was in the history assert!(history.next().unwrap() == 1_u8); assert!(history.next().is_none());
Trait Implementations
impl<Iter> Record for BacktrackingRecorder<Iter> where
Iter: Iterator,
[src]
Iter: Iterator,
type RefPoint = usize
The type used to refer to positions in the history
fn get_ref_point(&self) -> usize
[src]
fn forget_before(&mut self, position: usize)
[src]
fn forget(&mut self)
[src]
impl<Iter, Item> IntoIterator for BacktrackingRecorder<Iter> where
Iter: Iterator<Item = Item> + IntoIterator<Item = Item>,
[src]
Iter: Iterator<Item = Item> + IntoIterator<Item = Item>,
type Item = Item
The type of the elements being iterated over.
type IntoIter = Chain<IntoIter<Item>, Iter::IntoIter>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
[src]
Destroy the record and return an iterator which starts from the beginning of the history and chains into the originally-given iterator
extern crate backtracking_iterator; use backtracking_iterator::{BacktrackingIterator, BacktrackingRecorder}; let vec_iter = vec![1_u8, 2, 3].into_iter(); let mut rec = BacktrackingRecorder::new(vec_iter); { let mut bt_ref = rec.referencing(); bt_ref.next(); // 1_u8 } let mut rec_iter = rec.into_iter(); // Repeats the value in the history assert!(rec_iter.next().unwrap() == 1_u8); // And follows up with the ones not yet recorded assert!(rec_iter.next().unwrap() == 2_u8); assert!(rec_iter.next().unwrap() == 3_u8); assert!(rec_iter.next().is_none());
Auto Trait Implementations
impl<Iter> Send for BacktrackingRecorder<Iter> where
Iter: Send,
<Iter as Iterator>::Item: Send,
Iter: Send,
<Iter as Iterator>::Item: Send,
impl<Iter> Sync for BacktrackingRecorder<Iter> where
Iter: Sync,
<Iter as Iterator>::Item: Sync,
Iter: Sync,
<Iter as Iterator>::Item: Sync,
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From for T
[src]
impl<I> IntoIterator for I where
I: Iterator,
[src]
I: Iterator,
type Item = <I as Iterator>::Item
The type of the elements being iterated over.
type IntoIter = I
Which kind of iterator are we turning this into?
fn into_iter(self) -> I
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
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]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,