| pub struct LazyBuffer<I: Iterator> { |
| pub fn new(it: I) -> LazyBuffer<I> { |
| pub fn len(&self) -> usize { |
| pub fn get_next(&mut self) -> bool { |
| let next_item = self.it.next(); |
| pub fn prefill(&mut self, len: usize) { |
| let buffer_len = self.buffer.len(); |
| if !self.done && len > buffer_len { |
| let delta = len - buffer_len; |
| self.buffer.extend(self.it.by_ref().take(delta)); |
| self.done = self.buffer.len() < len; |
| impl<I, J> Index<J> for LazyBuffer<I> |
| type Output = <Vec<I::Item> as Index<J>>::Output; |
| fn index(&self, _index: J) -> &Self::Output { |
| self.buffer.index(_index) |