]>
git.proxmox.com Git - rustc.git/blob - vendor/itertools/src/put_back_n_impl.rs
3 /// An iterator adaptor that allows putting multiple
4 /// items in front of the iterator.
6 /// Iterator element type is `I::Item`.
7 #[derive(Debug, Clone)]
8 pub struct PutBackN
<I
: Iterator
> {
13 /// Create an iterator where you can put back multiple values to the front
16 /// Iterator element type is `I::Item`.
17 pub fn put_back_n
<I
>(iterable
: I
) -> PutBackN
<I
::IntoIter
>
22 iter
: iterable
.into_iter(),
26 impl<I
: Iterator
> PutBackN
<I
> {
27 /// Puts x in front of the iterator.
28 /// The values are yielded in order of the most recently put back
32 /// use itertools::put_back_n;
34 /// let mut it = put_back_n(1..5);
39 /// assert!(itertools::equal(it, 0..5));
42 pub fn put_back(&mut self, x
: I
::Item
) {
47 impl<I
: Iterator
> Iterator
for PutBackN
<I
> {
50 fn next(&mut self) -> Option
<I
::Item
> {
51 if self.top
.is_empty() {
59 fn size_hint(&self) -> (usize, Option
<usize>) {
60 size_hint
::add_scalar(self.iter
.size_hint(), self.top
.len())