aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Pierre Chifflier <chifflier@wzdftpd.net>2019-06-06 09:08:56 +0200
committerLibravatar Pierre Chifflier <chifflier@wzdftpd.net>2019-06-06 09:08:56 +0200
commit0b80624939da8f53466078de1ae320f120e34a35 (patch)
treead54c9b9e9c1a8e812cb4d037d4d4dd1139fbd7e
parent3f4a7b6c868e7f79069c9b182dd74d0f3dc57b93 (diff)
downloadcircular-0b80624939da8f53466078de1ae320f120e34a35.tar.gz
circular-0b80624939da8f53466078de1ae320f120e34a35.tar.bz2
circular-0b80624939da8f53466078de1ae320f120e34a35.zip
Add consume_noshift (consume data without moving it)
-rw-r--r--src/lib.rs18
1 files changed, 18 insertions, 0 deletions
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);
+ }
}