]>
git.proxmox.com Git - rustc.git/blob - vendor/itertools/src/lazy_buffer.rs
4 #[derive(Debug, Clone)]
5 pub struct LazyBuffer
<I
: Iterator
> {
15 pub fn new(it
: I
) -> LazyBuffer
<I
> {
23 pub fn len(&self) -> usize {
27 pub fn get_next(&mut self) -> bool
{
31 if let Some(x
) = self.it
.next() {
40 pub fn prefill(&mut self, len
: usize) {
41 let buffer_len
= self.buffer
.len();
43 if !self.done
&& len
> buffer_len
{
44 let delta
= len
- buffer_len
;
46 self.buffer
.extend(self.it
.by_ref().take(delta
));
47 self.done
= self.buffer
.len() < len
;
52 impl<I
, J
> Index
<J
> for LazyBuffer
<I
>
56 Vec
<I
::Item
>: Index
<J
>
58 type Output
= <Vec
<I
::Item
> as Index
<J
>>::Output
;
60 fn index(&self, index
: J
) -> &Self::Output
{
61 self.buffer
.index(index
)