mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-17 00:00:14 +02:00
Add resume() method to ByteBuf that restores prior write position.
This commit is contained in:
@@ -88,6 +88,14 @@ impl ByteBuf {
|
|||||||
buf
|
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 {
|
pub fn read_slice(&mut self, dst: &mut [u8]) -> usize {
|
||||||
let len = cmp::min(dst.len(), self.remaining());
|
let len = cmp::min(dst.len(), self.remaining());
|
||||||
let cnt = len as u32;
|
let cnt = len as u32;
|
||||||
|
|||||||
@@ -47,4 +47,13 @@ pub fn test_byte_buf_read_write() {
|
|||||||
let mut dst = [0; 7];
|
let mut dst = [0; 7];
|
||||||
assert_eq!(7, buf.read(&mut dst[..]).unwrap());
|
assert_eq!(7, buf.read(&mut dst[..]).unwrap());
|
||||||
assert_eq!(b"goodbye", &dst);
|
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