Add resume() method to ByteBuf that restores prior write position.

This commit is contained in:
Jamie Turner
2015-07-02 17:19:43 -07:00
parent d2b4cc3870
commit 7b63fa034f
2 changed files with 17 additions and 0 deletions
+8
View File
@@ -88,6 +88,14 @@ impl ByteBuf {
buf
}
/// Flips the buffer back to mutable, resetting the write position
/// to the byte after the previous write.
pub fn resume(mut self) -> MutByteBuf {
self.pos = self.lim;
self.lim = self.cap;
MutByteBuf { buf: self }
}
pub fn read_slice(&mut self, dst: &mut [u8]) -> usize {
let len = cmp::min(dst.len(), self.remaining());
let cnt = len as u32;
+9
View File
@@ -47,4 +47,13 @@ pub fn test_byte_buf_read_write() {
let mut dst = [0; 7];
assert_eq!(7, buf.read(&mut dst[..]).unwrap());
assert_eq!(b"goodbye", &dst);
let mut buf = buf.resume();
assert_eq!(13, buf.remaining());
buf.write(&b" have fun"[..]).unwrap();
assert_eq!(4, buf.remaining());
let buf = buf.flip();
assert_eq!(buf.bytes(), b"hello world goodbye have fun");
}