aboutsummaryrefslogtreecommitdiff
path: root/src/lazy_buffer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lazy_buffer.rs')
-rw-r--r--src/lazy_buffer.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/lazy_buffer.rs b/src/lazy_buffer.rs
index 01123d4..fa514ec 100644
--- a/src/lazy_buffer.rs
+++ b/src/lazy_buffer.rs
@@ -1,4 +1,5 @@
use std::ops::Index;
+use alloc::vec::Vec;
#[derive(Debug, Clone)]
pub struct LazyBuffer<I: Iterator> {
@@ -23,10 +24,6 @@ where
self.buffer.len()
}
- pub fn is_done(&self) -> bool {
- self.done
- }
-
pub fn get_next(&mut self) -> bool {
if self.done {
return false;
@@ -43,6 +40,17 @@ where
}
}
}
+
+ 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>