mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-09 00:00:15 +02:00
Add resume() method to ByteBuf that restores prior write position.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user