diff --git a/src/lib.rs b/src/lib.rs index 8e13fae..1b0e13d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -140,6 +140,16 @@ impl Buffer { cnt } + /// advances the position tracker + /// + /// This method is similar to `consume()` but will not move data + /// to the beginning of the buffer + pub fn consume_noshift(&mut self, count: usize) -> usize { + let cnt = cmp::min(count, self.available_data()); + self.position += cnt; + cnt + } + /// after having written data to the buffer, use this function /// to indicate how many bytes were written /// @@ -394,4 +404,12 @@ mod tests { assert_eq!(b.available_data(), 3); println!("{:?}", b.position()); } + + #[test] + fn consume_without_shift() { + let mut b = Buffer::with_capacity(10); + let _ = b.write(&b"abcdefgh"[..]); + b.consume_noshift(6); + assert_eq!(b.position(), 6); + } }