diff --git a/src/buffer.rs b/src/buffer.rs index 7341359c41..4f8449f796 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -17,6 +17,16 @@ impl BufReader { BufReader::with_capacity(rdr, INIT_BUFFER_SIZE) } + #[inline] + pub fn from_parts(rdr: R, buf: Vec, pos: usize, cap: usize) -> BufReader { + BufReader { + inner: rdr, + buf: buf, + pos: pos, + cap: cap, + } + } + #[inline] pub fn with_capacity(rdr: R, cap: usize) -> BufReader { BufReader { @@ -65,6 +75,11 @@ impl BufReader { #[inline] pub fn into_inner(self) -> R { self.inner } + #[inline] + pub fn into_parts(self) -> (R, Vec, usize, usize) { + (self.inner, self.buf, self.pos, self.cap) + } + #[inline] pub fn read_into_buf(&mut self) -> io::Result { self.maybe_reserve();